Comment puis-je mettre à niveau MySQL dans Debian en utilisant apt-get?

13

J'utilise la machine virtuelle Linux clé en main. La version de Debian là-bas est apparemment sur le chemin de mise à niveau "Wheezy" (si c'est ainsi que vous l'appelez). Je ne suis pas complètement à l'aise avec Linux, comme vous pouvez le voir.

J'ai besoin de nouvelles fonctionnalités offertes par MySQL 5.6, alors que mon installation actuelle est MySQL 5.5.35. J'aimerais obtenir la dernière version (5.6.17 à partir de cette publication) ou au moins toute 5.6.x.

Je l' ai essayé apt-get update, apt-get upgrade, apt-get dist-upgrade. Ceux-ci ont mis à jour un tas de choses avec succès, mais aucun n'était MySQL. J'ai essayé apt-get upgrade mysql-server, ce qui indique que j'ai déjà la dernière version.

Une liste de référentiels de paquets Debian Wheezy sur le web montre MySQL 5.5 et rien d'autre, quand j'ai besoin de 5.6. J'ai ensuite lu quelque chose sur les "rétroportages", qui semblent pouvoir me procurer des choses que ma Debian particulière n'est pas censée avoir encore - mais je n'arrive pas à le faire fonctionner. Il faut ajouter des lignes à /etc/apt/sources.list.d/sources.list. Lorsque j'essaie de faire cela, puis de apt-get updatelancer, j'obtiens des erreurs 404.

J'ai également essayé plusieurs autres routes, l'une étant la compilation du téléchargement vanilla MySQL, que j'ai échoué lamentablement et que je préfère ne pas réessayer.

Je suis vraiment déconcerté par la façon dont cela est fait. La plupart des URL répertoriées sur les forums / blogs pour apt-get, et même pour wget, semblent mourir peu de temps après leur publication, donc je ne comprends pas comment quelqu'un peut même trouver les bonnes informations. J'essaie de faire ça depuis deux jours maintenant et je ne peux aller nulle part.

Donc, en supposant que vous ayez lu jusqu'ici, j'aimerais savoir si quelqu'un a un moyen de mettre à niveau MySQL dans Debian d'une manière automatisée relativement indolore (une où je n'aurais pas à utiliser makeou exporter / importer mes bases de données et configurations actuelles manuellement ).

équazcion
la source
Faites un backport de testing / unstable / experimental. Voir Comment puis-je installer des versions de logiciel plus récentes que celles fournies par Debian? . Mieux, utilisez PostgreSQL, qui a déjà des rétroportages. Vous écrivez "Il faut ajouter des lignes à /etc/apt/sources.list.d/sources.list. Lorsque j'essaie de faire cela, puis en exécutant la mise à jour apt-get, j'obtiens des erreurs 404." Vous devez ajouter plus de détails à ce sujet si vous voulez de l'aide.
Faheem Mitha
@faheemMitha Par curiosité, où avez-vous trouvé ces backports postgresql? J'ai en quelque sorte besoin de la nouvelle version et des nouvelles slonyfonctionnalités et je n'ai pas pu trouver de version plus récente que la 9.1, qui manque de slony.
Shadur
@Shadur: Faites simplement une recherche pour "backports postgresql debian". Je pense que ce que vous voulez, c'est postgresql.org/download/linux/debian . Souvent, vous pouvez obtenir les backports sur backports.debian.org, mais il semble qu'actuellement ils ne soient pas disponibles à partir de là.
Faheem Mitha
@faheemMitha Je collerais l'erreur complète mais je ne l'ai plus et je ne sais plus où sont les URL de backport que j'ai utilisées. Si vous connaissez néanmoins une ligne de travail que je peux connecter à ma sources.list pour les rétroportages, j'adorerais l'essayer. PS. Passer à une autre plate-forme de base de données n'est pas vraiment une option pour moi à ce stade, malheureusement.
equazcion
@equazcion Ma recommandation est une solution de bricolage. Récupérez les sources Debian à partir de tests (ou instables ou expérimentales), et reconstruisez-les dans vos propres paquets Debian. Ce n'est vraiment pas si difficile, et MySQL est peu susceptible d'avoir des difficultés à résoudre les dépendances. J'explique les étapes de base de cette réponse à laquelle j'ai lié. L'avez-vous regardé?
Faheem Mitha

Réponses:

4

Reconstruire les sources MySQL 5.6 expérimentales à partir d'expérimental sur Wheezy est facile à la limite de trivial. Cependant, vous aurez besoin de beaucoup d'espace disque; une fois la génération terminée, le répertoire de génération utilisait 5,2 Go. De plus, la construction prend du temps et exécute un nombre incroyable de tests. Je n'ai pas pris la peine de le chronométrer, mais prévoyez quelques heures. Il est possible de désactiver les tests, mais je suggère de les laisser s'exécuter - c'est inoffensif tant qu'ils passent. Ils l'ont fait sur ma machine. La bonne nouvelle est que j'ai pu le construire et l'installer sans problème. J'ai exécuté le test de base suivant.

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> 

Donc, je peux au moins me connecter au serveur. Voici à quoi ressemblent les packages installés:

$ 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

Voici une ventilation des étapes.

  1. Si vous avez installé l'un des packages wheezy MySQL 5.5, supprimez-les, ils ne causeront des problèmes que plus tard. S'il y a des paquets qui en dépendent, ils devront aussi y aller.
  2. Obtenez d'abord les sources. Vous devez ajouter les éléments suivants (ou similaire, ajustez pour votre serveur préféré) à /etc/apt/sources.list:

    deb-src http://debian.lcs.mit.edu/debian/ experimental main non-free contrib
    
  3. Ajoutez également ce qui suit à /etc/apt/preferences.

    Package: *
    Pin: release a=experimental
    Pin-Priority: 1
    
  4. Exécutez ensuite

    apt-get update
    
  5. Exécutez ensuite

    apt-get source mysql-5.6
    

    dans un répertoire approprié. Je crée généralement un répertoire dans /usr/local/src,
    dans ce cas, disons /usr/local/src/mysql.

  6. Puis cd dans /usr/local/src/mysql.

  7. Courir

    sudo apt-get build-dep mysql-5.6
    

    Sur ma machine, cela a installé quelques packages.

  8. Installez des packages de base pour la construction.

    apt-get install build-essential devscripts fakeroot
    

    Puis cd dans le répertoire source résultant /usr/local/src/mysql/mysql-5.6- 5.6.16et exécutez

    debuild -uc -us
    

    Cela prendra un certain temps à construire. Dans certains cas, c'est une bonne idée d'augmenter
    le numéro de version, mais ce n'est pas vraiment nécessaire ici. car il est peu probable qu'un autre paquet MySQL 5.6 fasse son chemin dans Wheezy.

    Si vous ne souhaitez pas exécuter les tests, vous pouvez utiliser à la place

    DEB_BUILD_OPTIONS="nocheck" debuild -uc -us
    
  9. Vous devez maintenant installer libdbd-mysql-perl, qui est une dépendance d'exécution des packages mysql.

     apt-get install libdbd-mysql-perl
    
  10. Ensuite, augmentez d'un niveau /usr/local/src/mysql. Il devrait y avoir des paquets deb là-bas. Vous voudrez installer au moins

     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
    

    Cela peut être fait par exemple en exécutant:

     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
    
Faheem Mitha
la source
Tout d'abord, merci pour cela, et pour tous les efforts que vous déployez. Cela a cependant échoué à l'étape 8. Il me semble que je n'ai pas ces chemins / debian /: 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 je le fais dans Turnkey Linux qui, je pense, utilise LAMP, si cela aide.
equazcion
@equazcion vous n'avez peut-être pas installé fakeroot. apt-get install fakeroot.
Faheem Mitha
L'installation de fakeroot a fonctionné. La dernière étape s'est trompée en disant que cela briserait MySQL 5.5. J'ai négligé de supprimer 5.5 comme vous l'avez suggéré, car je ne sais pas comment, et je ne savais pas comment cela affecterait mes bases de données actuelles. Je suis prêt à réessayer après avoir supprimé 5.5, si vous voulez me dire comment procéder de manière à garder mes données disponibles dans la nouvelle version. Je sais que vous n'êtes pas familier avec MySQL et vous y avez déjà consacré pas mal de temps. C'était une bonne longueur d'avance et je peux peut-être découvrir comment faire le reste en parcourant Google.
equazcion
@equazcion selon dev.mysql.com/doc/refman/5.6/en/… il vous suffit de vider mysqldumpet de recharger le fichier de vidage. Sauvegardez également vos bases de données.
Faheem Mitha
A réussi à récupérer cela sans refaire toutes les étapes, et n'a pas eu besoin de réimporter les bases de données - elles étaient déjà là. Pour toute personne intéressée, je devais le faire apt-get remove mysql-serveret , je devais apt-get remove mysql-clientaussi le faire apt-get install libterm-readkey-perlavant la dernière étape. De plus, l' mysql-server-coreinstallation à la dernière étape devait être effectuée avant auparavant mysql-server. Je lance maintenant officiellement MySQL 5.6.16 et j'ai testé avec succès les index de recherche InnoDB en texte intégral (la raison pour laquelle j'en avais besoin)! Merci, Faheem Mitha. Vous avez sauvé ma raison.
equazcion
6

Actuellement, la meilleure option est d'utiliser le dépôt officiel MySQL APT qui permet l' apt-get upgradeinstallation.

takhin
la source
C'est probablement la meilleure solution car elle ne nécessite pas l'installation d'un compilateur. Plus infaillible :)
Christopher Schultz
Cette solution fonctionne pour moi. Après l'installation, sélectionnez la version et la mise à niveau du serveur mysql apt-get upgrade, puis je dois faire apt-get upgrade mysql-server, et une mise à niveau facile de mysql de 5.5 à 5.7. Après la mise à niveau, vous devez configurer à nouveau et exécuter:mysql_upgrade -u root
fermin
1

Tous testés Amusez-vous.

  1. .apt-get install 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. fichiers de support cp / 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. service mysql start
  18. ./bin/mysql_secure_installation
Bête de sécurité
la source
Cela semblait aller bien jusqu'à ici (désolé pour le désordre, je ne sais pas comment insérer des sauts de ligne ici): 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
essayez avec /etc/init.d/mysql start ou essayez d'appuyer sur tab-tab à /etc/init.d/mys et démarrez-le
Security Beast
@equazcion Félicitations, vous avez maintenant découvert pourquoi debian prend parfois un certain temps pour proposer un package officiel pour une nouvelle version.
Shadur