Wie kann ich MySQL in Debian mit apt-get upgraden?

13

Ich verwende die virtuelle Linux-Turnkey-Maschine. Die Version von Debian ist anscheinend auf dem "Wheezy" -Upgrade-Pfad (wenn Sie es so nennen). Wie Sie sehen, fühle ich mich mit Linux nicht ganz wohl.

Ich benötige einige neue Funktionen, die MySQL 5.6 bietet, während meine aktuelle Installation MySQL 5.5.35 ist. Ich möchte die neueste Version (5.6.17 ab diesem Posting) oder mindestens eine 5.6.x erhalten.

Ich habe versucht apt-get update, apt-get upgrade, apt-get dist-upgrade. Diese aktualisierten eine Reihe von Dingen erfolgreich, aber keine waren MySQL. Ich habe es versucht apt-get upgrade mysql-server, was besagt, dass ich bereits die neueste Version habe.

Eine Debian Wheezy-Paket-Repository-Liste im Web zeigt MySQL 5.5 und nichts anderes, wenn ich 5.6 benötige. Ich habe dann etwas über "Backports" gelesen, was so klingt, als könnte es mir Dinge bringen, die mein spezielles Debian noch nicht haben sollte - aber ich kann es anscheinend nicht zum Laufen bringen. Es erfordert das Hinzufügen von Zeilen zu /etc/apt/sources.list.d/sources.list. Wenn ich das versuche und dann laufe apt-get update, erhalte ich 404-Fehler.

Ich habe auch mehrere andere Routen ausprobiert, eine davon war das Kompilieren des Vanille-MySQL-Downloads, an dem ich kläglich gescheitert bin und es lieber nicht noch einmal versuchen würde.

Ich bin absolut verblüfft darüber, wie das gemacht wird. Die meisten der URLs, die in Foren / Blogs für apt-getund sogar für aufgeführt sind wget, scheinen bald nach dem Posten zu vergehen, daher kann ich nicht verstehen, wie jemand überhaupt die richtigen Informationen findet. Ich habe versucht, dies für zwei Tage gerade jetzt zu tun und kann nirgendwo hinkommen.

Vorausgesetzt, Sie haben dies bisher gelesen, würde ich gerne wissen, ob jemand eine Möglichkeit hat, MySQL in Debian auf eine relativ schmerzlose automatisierte Weise zu aktualisieren (eine, bei der ich makemeine aktuellen Datenbanken und Konfigurationen nicht manuell verwenden oder exportieren / importieren müsste) ).

Equazcion
quelle
Machen Sie einen Backport von testing / unstable / experimental. Siehe Wie kann ich neuere Softwareversionen als die von Debian bereitgestellten installieren? . Verwenden Sie besser PostgreSQL, das bereits über Backports verfügt. Sie schreiben: "Dazu müssen Zeilen zu /etc/apt/sources.list.d/sources.list hinzugefügt werden. Wenn ich das versuche und dann apt-get update ausführe, erhalte ich 404-Fehler." Sie müssen weitere Details dazu hinzufügen, wenn Sie Hilfe benötigen.
Faheem Mitha
@faheemMitha Wo hast du aus Neugier die Postgresql-Backports gefunden? Ich brauche die neue Version und die neuen slonyFunktionen und konnte keine neuere Version als 9.1 finden, der es an Slony mangelt.
Shadur
@ Shadur: Suche einfach nach "postgresql debian backports". Ich denke, was Sie wollen, ist postgresql.org/download/linux/debian . Oft kann man die Backports von backports.debian.org bekommen, aber es scheint, dass sie momentan nicht von dort verfügbar sind.
Faheem Mitha
@faheemMitha Ich würde den vollständigen Fehler einfügen, habe ihn aber nicht mehr und bin nicht sicher, wo sich die von mir verwendeten Backport-URLs befinden. Wenn Sie dennoch eine funktionierende Zeile kennen, die ich in meine sources.list für Backports einbinden kann, würde ich sie gerne ausprobieren. PS. Der Wechsel zu einer anderen Datenbankplattform ist für mich derzeit leider keine Option.
Equazcion
@equazcion Meine Empfehlung ist eine DIY-Lösung. Holen Sie sich die Debian-Quellen von Testing (oder Unstable oder Experimental) und bauen Sie sie in Ihre eigenen Debian-Pakete um. Das ist wirklich nicht so schwer, und es ist unwahrscheinlich, dass MySQL schwer zu lösende Abhängigkeiten hat. Ich erkläre die grundlegenden Schritte in dieser Antwort, die ich verlinkt habe. Hast du es dir angesehen?
Faheem Mitha

Antworten:

4

Das Neuerstellen der experimentellen 5.6-MySQL-Quellen aus "experimental on wheezy" ist ein Kinderspiel. Sie benötigen jedoch viel Speicherplatz. Nach Abschluss des Builds wurden im Buildverzeichnis 5,2 GB verwendet. Außerdem dauert der Aufbau einige Zeit und es werden unglaublich viele Tests durchgeführt. Ich habe mich nicht darum gekümmert, aber ein paar Stunden zu warten. Es ist möglich, die Tests zu deaktivieren, aber ich empfehle, sie laufen zu lassen - es ist harmlos, solange sie bestehen. Sie taten auf meiner Maschine. Die gute Nachricht ist, dass ich es ohne großen Aufwand bauen und installieren konnte. Ich habe den folgenden Basistest durchgeführt.

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> 

So kann ich mich zumindest mit dem Server verbinden. So sehen die installierten Pakete aus:

$ 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

Hier ist eine Aufschlüsselung der Schritte.

  1. Wenn Sie eines der wheezy MySQL 5.5-Pakete installiert haben, entfernen Sie diese, sie verursachen erst später Probleme. Wenn es Pakete gibt, die davon abhängen, müssen sie auch gehen.
  2. Holen Sie sich zuerst die Quellen. Sie müssen Folgendes hinzufügen (oder für Ihren bevorzugten Server anpassen) /etc/apt/sources.list:

    deb-src http://debian.lcs.mit.edu/debian/ experimental main non-free contrib
    
  3. Fügen Sie auch Folgendes hinzu /etc/apt/preferences.

    Package: *
    Pin: release a=experimental
    Pin-Priority: 1
    
  4. Dann renne

    apt-get update
    
  5. Dann renne

    apt-get source mysql-5.6
    

    in einem geeigneten Verzeichnis. Normalerweise erstelle ich ein Verzeichnis /usr/local/src,
    in diesem Fall zum Beispiel /usr/local/src/mysql.

  6. Dann CD in /usr/local/src/mysql.

  7. Lauf

    sudo apt-get build-dep mysql-5.6
    

    Auf meinem Rechner installierte dies ein paar Pakete.

  8. Installieren Sie einige Basispakete zum Erstellen.

    apt-get install build-essential devscripts fakeroot
    

    Dann cd in das resultierende Quellverzeichnis /usr/local/src/mysql/mysql-5.6- 5.6.16und starte

    debuild -uc -us
    

    Das wird eine Weile dauern. In einigen Fällen ist es sinnvoll,
    die Versionsnummer zu erhöhen, dies ist hier jedoch nicht unbedingt erforderlich. Da es unwahrscheinlich ist, dass ein anderes MySQL 5.6-Paket den Weg in Wheezy findet.

    Wenn Sie die Tests nicht ausführen möchten, können Sie stattdessen verwenden

    DEB_BUILD_OPTIONS="nocheck" debuild -uc -us
    
  9. Jetzt sollten Sie libdbd-mysql-perl installieren, eine Laufzeitabhängigkeit der mysql-Pakete.

     apt-get install libdbd-mysql-perl
    
  10. Dann CD eine Ebene höher auf /usr/local/src/mysql. Dort sollte es einige Deb-Pakete geben. Sie werden mindestens installieren wollen

     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
    

    Dies kann zum Beispiel durch Ausführen von:

     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
quelle
Zunächst einmal vielen Dank dafür und für all die Anstrengungen, die Sie unternehmen. Dies ist jedoch in Schritt 8 fehlgeschlagen. Ich scheine diese / debian / -Pfade nicht zu haben: 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 Ich mache dies in Turnkey-Linux, von dem ich denke, dass es LAMP verwendet, wenn das hilft.
Equazcion
@equazcion Möglicherweise ist fakeroot nicht installiert. apt-get install fakeroot.
Faheem Mitha
Die Installation von fakeroot hat funktioniert. Der letzte Schritt hatte den Fehler, dass MySQL 5.5 kaputt gehen würde. Ich habe es versäumt, 5.5 zu entfernen, wie Sie vorgeschlagen haben, weil ich nicht weiß, wie und ich nicht sicher war, wie sich dies auf meine aktuellen Datenbanken auswirken würde. Ich bin bereit, dies nach dem Entfernen von 5.5 erneut zu versuchen, wenn Sie mir sagen möchten, wie ich das tun soll, damit meine Daten in der neuen Version verfügbar bleiben. Ich weiß, dass Sie mit MySQL nicht so vertraut sind und Sie haben bereits eine Menge Zeit damit verbracht. Dies war ein großartiger Vorsprung und ich kann vielleicht herausfinden, wie man den Rest erledigt, indem man herum googelt.
Equazcion
@equazcion nach dev.mysql.com/doc/refman/5.6/en/… Sie müssen nur mit dump mysqldumpund dann die dump-Datei neu laden. Natürlich können Sie auch Ihre Datenbanken sichern.
Faheem Mitha
Es gelang, dies zu retten, ohne alle Schritte wiederholen zu müssen, und die Datenbanken mussten nicht erneut importiert werden - sie waren bereits da. Für alle Interessierten musste ich das tun apt-get remove mysql-serverund apt-get remove mysql-clientmusste es auch apt-get install libterm-readkey-perlvor dem letzten Schritt tun . Außerdem musste die mysql-server-coreInstallation im letzten Schritt zuvor durchgeführt werden mysql-server. Ich führe jetzt offiziell MySQL 5.6.16 aus und habe die InnoDB-Suchindizes im Volltext erfolgreich getestet (der Grund, warum ich das brauchte)! Danke, Faheem Mitha. Du hast meinen Verstand gerettet.
Equazcion
6

Derzeit ist die beste Option die Verwendung eines offiziellen MySQL APT-Repos, das die apt-get upgradeInstallation ermöglicht .

takeshin
quelle
Dies ist wahrscheinlich die beste Lösung, da kein Compiler installiert werden muss. Mehr
Christopher Schultz
Diese Lösung funktioniert bei mir. Nach der Installation wählen Sie MySQL - Server - Version und aktualisieren apt-get upgrade, dann muss ich auf apt-get upgrade mysql-server, und leicht von MySQL aktualisieren 5,5-5,7. Nach dem Upgrade müssen Sie mysql_upgrade -u root
Folgendes
1

Alle getestet Viel Spaß.

  1. .apt-get libaio1 installieren
  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-Daten
  13. cp support-files / mysql.server /etc/init.d/mysql
  14. mkdir -p /etc/mysql/conf.d/
  15. cp my.cnf / etc / mysql /
  16. Geben Sie $ '! include /etc/mysql/my.cnf\n!includedir /etc/mysql/conf.d/'> my.cnf ein
  17. Service MySQL starten
  18. ./bin/mysql_secure_installation
Sicherheitstier
quelle
Dies schien bis hier gut zu laufen (sorry für das Chaos, ich weiß nicht, wie Zeilenumbrüche hier einfügen): 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
Versuche es mit /etc/init.d/mysql start oder drücke tab-tab unter /etc/init.d/mys und starte es
Security Beast
@equazcion Herzlichen Glückwunsch, jetzt haben Sie herausgefunden, warum es manchmal eine Weile dauert, bis Debian ein offizielles Paket für eine neue Version erstellt.
Shadur