Как я могу обновить MySQL в Debian, используя apt-get?

13

Я использую виртуальную машину Linux под ключ. Версия Debian там, по-видимому, находится на пути обновления «Wheezy» (если вы так его называете). Как вы можете видеть, я не совсем доволен Linux.

Мне нужны некоторые новые функции, которые предлагает MySQL 5.6, в то время как моя текущая установка - MySQL 5.5.35. Я хотел бы получить последнюю версию (5.6.17 на момент публикации) или хотя бы 5.6.x.

Я пытался apt-get update, apt-get upgrade, apt-get dist-upgrade. Они успешно обновили кучу вещей, но ни одна из них не была MySQL. Я пытался apt-get upgrade mysql-server, который говорит, что у меня уже есть последняя версия.

Список репозитория пакетов Debian Wheezy в Интернете показывает MySQL 5.5 и ничего больше, когда мне нужно 5.6. Затем я читаю кое-что о «бэкпортах», что звучит так, как будто бы я мог получить то, чего не должен был иметь мой конкретный Debian, - но я не могу заставить его работать. Требуется добавить строки в /etc/apt/sources.list.d/sources.list. Когда я пытаюсь сделать это, затем запустить apt-get update, я получаю 404 ошибки.

Я также попробовал несколько других маршрутов, один из которых компилировал загрузку MySQL ванили, которую я с треском провалил и не хотел бы повторять попытку.

Я положительно озадачен тем, как это делается. Кажется, что большинство URL-адресов, перечисленных на форумах / блогах apt-getи даже для wget, умирают вскоре после их публикации, поэтому я не могу понять, как кто-то вообще пытается найти нужную информацию. Я пытался сделать это два дня подряд и не могу никуда добраться.

Итак, предположив, что вы читали это далеко, я хотел бы знать, есть ли у кого-нибудь способ обновления MySQL в Debian относительно безболезненным автоматическим способом (тот, где мне не пришлось бы использовать makeили экспортировать / импортировать мои текущие базы данных и конфигурации вручную ).

equazcion
источник
Сделать бэкпорт из тестирования / нестабильно / экспериментально. См. Как я могу установить более новые версии программного обеспечения, чем то, что предоставляет Debian? , Лучше использовать PostgreSQL, который уже имеет backports. Вы пишете: «Это требует добавления строк в /etc/apt/sources.list.d/sources.list. Когда я пытаюсь сделать это, а затем запустить apt-get update, я получаю 404 ошибки». Вам нужно добавить больше подробностей об этом, если вы хотите помочь.
Фахим Митха
@faheemMitha Из любопытства, где вы нашли эти postgresql backports? Мне нужна новая версия и slonyвозможности, и я не смог найти более новую, чем 9.1, в которой отсутствует слон.
Шадур
@Shadur: просто выполните поиск по запросу "postgresql debian backports". Я думаю, что вы хотите, это postgresql.org/download/linux/debian . Часто вы можете получить обратные порты с backports.debian.org, но кажется, что в настоящее время они не доступны оттуда.
Фахим Митха
@faheemMitha Я вставил бы полную ошибку, но у меня ее больше нет, и я не уверен, где URL-адреса бэкпорта, которые я использовал больше. Если вы, тем не менее, знаете о рабочей линии, которую я могу подключить к своему источнику.список для бэкпортов, я бы с удовольствием попробовал. PS. К сожалению, на данный момент переключение на другую платформу баз данных для меня не вариант.
Equazcion
@equazcion Моя рекомендация - решение «сделай сам». Получите исходные коды Debian из тестирования (или нестабильного, или экспериментального) и пересоберите их в свои собственные пакеты Debian. Это действительно не так сложно, и MySQL вряд ли будет трудно разрешить зависимости. Я объясняю основные шаги в том ответе, с которым я связан. Вы смотрели на это?
Фахим Митха

Ответы:

4

Перестройка экспериментальных исходников MySQL 5.6 из экспериментальных программ на wheezy легко граничит с тривиальным. Однако вам потребуется много места на диске; после завершения сборки каталог для сборки использовал 5,2 ГБ. Кроме того, для сборки требуется некоторое время, и выполняется невероятное количество тестов. Я не удосужился рассчитать это, но позволил пару часов. Можно отключить тесты, но я предлагаю дать им возможность работать - это безопасно, пока они проходят. Они сделали на моей машине. Хорошей новостью является то, что я смог собрать и установить его без суеты. Я провел следующий базовый тест.

faheem@orwell:~$ mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 50
Server version: 5.6.16-1~exp1 (Debian)

Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

Итак, я могу подключиться к серверу как минимум. Вот как выглядят установленные пакеты:

$ dpkg -l | grep mysql

ii  libdbd-mysql-perl                     4.021-1+b1              amd64                   Perl5 database interface to the MySQL database
ii  libmysqlclient18:amd64                5.5.35+dfsg-0+wheezy1   amd64                   MySQL database client library
ii  libqt4-sql-mysql:amd64                4:4.8.2+dfsg-11         amd64                   Qt 4 MySQL database driver
ii  mysql-client-5.6                      5.6.16-1~exp1           amd64                   MySQL database client binaries
ii  mysql-client-core-5.6                 5.6.16-1~exp1           amd64                   MySQL database core client binaries
ii  mysql-common                          5.5.35+dfsg-0+wheezy1   all                     MySQL database common files, e.g. /etc/mysql/my.cnf
ii  mysql-common-5.6                      5.6.16-1~exp1           all                     MySQL 5.6 specific common files, e.g. /etc/mysql/conf.d/my-5.6.cnf
ii  mysql-server-5.6                      5.6.16-1~exp1           amd64                   MySQL database server binaries and system database setup
ii  mysql-server-core-5.6                 5.6.16-1~exp1           amd64                   MySQL database server binaries
ii  python-mysqldb                        1.2.3-2                 amd64                   Python interface to MySQL

Вот разбивка шагов.

  1. Если у вас установлен какой-либо из пакетов MySQL 5.5 wheezy, удалите их, они будут вызывать проблемы только позже. Если есть какие-либо пакеты, которые зависят от них, они тоже должны пойти.
  2. Во-первых, получить источники. Вам необходимо добавить следующее (или аналогичное, настроить для предпочитаемого сервера) /etc/apt/sources.list:

    deb-src http://debian.lcs.mit.edu/debian/ experimental main non-free contrib
    
  3. Также добавьте следующее к /etc/apt/preferences.

    Package: *
    Pin: release a=experimental
    Pin-Priority: 1
    
  4. Тогда беги

    apt-get update
    
  5. Тогда беги

    apt-get source mysql-5.6
    

    в каком-то подходящем каталоге. Я обычно создаю каталог /usr/local/src,
    в данном случае, скажем /usr/local/src/mysql.

  6. Затем перейдите на /usr/local/src/mysql.

  7. Бегать

    sudo apt-get build-dep mysql-5.6
    

    На моей машине установлено несколько пакетов.

  8. Установите несколько базовых пакетов для сборки.

    apt-get install build-essential devscripts fakeroot
    

    Затем перейдите в каталог с исходным кодом /usr/local/src/mysql/mysql-5.6- 5.6.16и запустите

    debuild -uc -us
    

    Это займет время, чтобы построить. В некоторых случаях рекомендуется увеличить
    номер версии, но в этом нет необходимости. поскольку маловероятно, что любой другой пакет MySQL 5.6 попадет в wheezy.

    Если вы не хотите запускать тесты, вы можете вместо этого использовать

    DEB_BUILD_OPTIONS="nocheck" debuild -uc -us
    
  9. Теперь вы должны установить libdbd-mysql-perl, которая является зависимой от времени выполнения пакетов mysql.

     apt-get install libdbd-mysql-perl
    
  10. Затем перейдите на один уровень выше /usr/local/src/mysql. Там должно быть несколько пакетов deb. Вы хотите установить по крайней мере

     mysql-client-core-5.6_5.6.16-1~exp1_amd64.deb         
     mysql-common-5.6_5.6.16-1~exp1_all.deb           
     mysql-server-5.6_5.6.16-1~exp1_amd64.deb
     mysql-client-5.6_5.6.16-1~exp1_amd64.deb  
     mysql-server-core-5.6_5.6.16-1~exp1_amd64.deb
    

    Это можно сделать, например, запустив:

     dpkg -i mysql-client-core-5.6_5.6.16-1~exp1_amd64.deb         
     mysql-common-5.6_5.6.16-1~exp1_all.deb           
     mysql-server-5.6_5.6.16-1~exp1_amd64.deb
     mysql-client-5.6_5.6.16-1~exp1_amd64.deb  
     mysql-server-core-5.6_5.6.16-1~exp1_amd64.deb
    
Фахим Митха
источник
Прежде всего, спасибо за это и за все усилия, которые вы вкладываете. Однако на 8 шаге это не удалось. У меня, кажется, нет этих / debian / paths: dpkg-buildpackage: host architecture amd64 fakeroot debian/rules clean Can't exec "fakeroot": No such file or directory at /usr/bin/dpkg-buildpackage line 510. dpkg-buildpackage: error: fakeroot debian/rules clean failed with unknown exit code -1 debuild: fatal error at line 1357: dpkg-buildpackage -rfakeroot -D -us -uc failed я делаю это в Linux под ключ, который, я думаю, использует LAMP, если это помогает.
Универсиада
@equazcion у вас может не быть установлен fakeroot. apt-get install fakeroot,
Фахим Митха
Установка fakeroot работала. Последний шаг допустил ошибку, сказав, что это сломает MySQL 5.5. Я забыл удалить 5.5, как вы предложили, потому что я не знаю как, и я не был уверен, как это повлияет на мои текущие базы данных. Я готов попробовать это снова после удаления 5.5, если вы хотите рассказать мне, как сделать это так, чтобы мои данные были доступны в новой версии. Я знаю, что вы не очень знакомы с MySQL, и уже потратили немало времени на это. Это было отличное начало, и я могу узнать, как сделать все остальное, погуглив вокруг.
Equazcion
@equazcion в соответствии с dev.mysql.com/doc/refman/5.6/en/… вам просто нужно сделать дамп, mysqldumpа затем перезагрузить файл дампа. Поддержите ваши базы данных, конечно же.
Фахим Митха
Удалось спасти это, не повторяя все шаги, и не нужно было повторно импортировать базы данных - они уже были там. Для тех, кто заинтересован, я должен был сделать, apt-get remove mysql-serverа apt-get remove mysql-clientтакже должен был сделать apt-get install libterm-readkey-perlдо последнего шага. Кроме того, mysql-server-coreустановка на последнем шаге должна была быть сделана раньше mysql-server. Сейчас я официально запускаю MySQL 5.6.16 и успешно проверил полнотекстовые поисковые индексы InnoDB (причина, по которой мне это нужно)! Спасибо, Фахим Митха. Вы сохранили мое здравомыслие.
Универсиада
6

В настоящее время лучшим вариантом является использование официального репозитория MySQL APT, который позволяет apt-get upgradeустановку.

takeshin
источник
Вероятно, это лучшее решение, потому что не требует установки компилятора. Больше защиты от дурака :)
Кристофер Шульц
Это решение работает для меня. После установки выберите версию сервера mysql и обновите его apt-get upgrade, затем выберите « i» и выполните apt-get upgrade mysql-serverпростое обновление mysql с 5.5 до 5.7. После обновления вам нужно снова настроить и выполнить:mysql_upgrade -u root
fermin
1

Все проверено Веселитесь.

  1. .apt-get установить libaio1
  2. groupadd mysql
  3. useradd -r -g mysql mysql
  4. wget -O mysql-5.6.16-debian6.0-x86_64.deb
  5. http://downloads.mysql.com/archives/mysql-5.6/mysql-5.6.16-debian6.0-x86_64.deb
  6. dpkg -i mysql-5.6.16-debian6.0-x86_64.deb
  7. cd / usr / local
  8. ln -s /opt/mysql/server-5.6 mysql
  9. CD MySQL
  10. scripts / mysql_install_db --user = mysql
  11. chown -R root.
  12. chown -R mysql data
  13. cp support-files / mysql.server /etc/init.d/mysql
  14. mkdir -p /etc/mysql/conf.d/
  15. cp my.cnf / etc / mysql /
  16. echo $ '! include /etc/mysql/my.cnf\n!includedir /etc/mysql/conf.d/'> my.cnf
  17. служба mysql start
  18. ./bin/mysql_secure_installation
Зверь безопасности
источник
Это казалось, шло хорошо , пока здесь (извините за беспорядок, я не знаю , как вставить разрывы строк здесь): root@lamp local/mysql# update-rc.d mysql-5.7 defaults: update-rc.d: using dependency based boot sequencing update-rc.d: error: unable to read /etc/init.d/mysql-5.7 root@lamp local/mysql# service mysql start: Starting MySQL [FAIL......[....] The server quit without updating PID file (/opt/mysql/server-5.6/data/lamp.pid). ... failed!
equazcion
попробуйте запустить /etc/init.d/mysql или попробуйте нажать tab-tab в /etc/init.d/mys и запустить его
Security Beast,
@equazcion Поздравляем, теперь вы узнали, почему debian иногда требуется время, чтобы найти официальный пакет для новой версии.
Шадур