Erfordert das Upgrade von PHP 5.3.6 auf 5.5 in Ubuntu 12.04 LTS das Entfernen von MySQL?

Erfordert das Upgrade von PHP 5.3.6 auf 5.5 in Ubuntu 12.04 LTS das Entfernen von MySQL?

Ich versuche, PHP auf die neueste Version (5.5) zu aktualisieren. Meine aktuelle PHP-Version ist 5.3.6, gebündelt mit Ubuntu 12.04 LTS. Das Problem ist, dass ich nichts anderes aktualisieren möchte, nur PHP. Obwohl ich apt-get ausdrücklich sage, welches Paket ich aktualisieren möchte, bestehe ich darauf, MySQL 5.1 zu entfernen und MySQL 5.5 zu installieren. Hier ist der Befehl, den ich verwende:

sudo apt-get --only-upgrade install php5-common

Ich habe auch versucht

sudo apt-get upgrade php5-common

und die Antwort, die ich bekomme, ist diese:

The following extra packages will be installed:
  libalgorithm-diff-xs-perl libapache2-mod-php5 libdbd-mysql-perl libdbi-perl liblocale-gettext-perl libmysqlclient18 libsub-name-perl libterm-readkey-perl libtext-charwidth-perl libtext-iconv-perl mysql-client-5.5
  mysql-client-core-5.5 mysql-common mysql-server mysql-server-5.5 mysql-server-core-5.5 perl perl-base perl-modules php5-cli php5-curl php5-gd php5-mysql php5-pgsql
Suggested packages:
  tinyca mailx perl-doc libterm-readline-gnu-perl libterm-readline-perl-perl php5-suhosin
The following packages will be REMOVED:
  mysql-client-5.1 mysql-client-core-5.1 mysql-server-5.1 mysql-server-core-5.1
The following NEW packages will be installed:
  libmysqlclient18 libterm-readkey-perl mysql-client-5.5 mysql-client-core-5.5 mysql-server-5.5 mysql-server-core-5.5
The following packages will be upgraded:
  libalgorithm-diff-xs-perl libapache2-mod-php5 libdbd-mysql-perl libdbi-perl liblocale-gettext-perl libsub-name-perl libtext-charwidth-perl libtext-iconv-perl mysql-common mysql-server perl perl-base perl-modules php5-cli php5-common
  php5-curl php5-gd php5-mysql php5-pgsql

warum passiert das? ist PHP von MySQL abhängig, was völlig verrückt wäre. Was, wenn ich ja sage, würde apt-get dann meine aktuellen MySQL-Daten löschen, während es sie entfernt? da dies eine laufende Instanz ist, kann ich nicht riskieren, Daten zu verlieren (ich würde vielleicht ein Backup machen, aber das bedeutet, dass die Site stundenlang gewartet werden muss, was mir nicht gefällt)

Antwort1

Das Problem besteht darin, dass das php5-mysql-Paket von libmysqlclient18 abhängt, was wiederum von mysql-common abhängt:

# apt-cache depends php5-mysql
php5-mysql
  Depends: libc6
  Depends: libmysqlclient18
....

# apt-cache depends libmysqlclient18
libmysqlclient18
  Depends: mysql-common
  Depends: libc6
  Depends: zlib1g
  PreDepends: multiarch-support
    multiarch-support:i386
  Replaces: libmysqlclient18:i386
  Breaks: libmysqlclient18:i386

MySQL 5.1 war Standard in 10.04, während die Standard-MySQL-Version in 12.04 5.5 ist, weshalb alle diese Pakete indirekt davon abhängig sind.

Wenn Sie MySQL wirklich nicht aktualisieren möchten, sollten Sie PHP-Pakete finden, die mit MySQL 5.1 verknüpft sind – Pakete, die für 10.04 erstellt wurden – oder Sie sollten eine 10.04-VM starten und Ihre eigene erstellen (indem Sie die offiziellen neu erstellen).

Andererseits sollte ein MySQL-Upgrade Ihre Daten nicht löschen. Dies kann nur durch „purge“ erreicht werden.

Um auf Nummer sicher zu gehen, können Sie Folgendes tun:

# /etc/init.d/mysql stop
# mv /var/lib/mysql /var/lib/mysql_orig

und führen Sie dann das Upgrade durch. Dadurch wird ein neuer MySQL-Server installiert und ein neues /var/lib/mysql mit einer leeren Datenbank erstellt. Ihre Daten werden dadurch nicht berührt, da /var/lib/mysql_orig in keiner MySQL-*-Paketdefinition erwähnt wird. Führen Sie nach dem Upgrade Folgendes aus:

# mv /var/lib/mysql /var/lib/mysql_new_55
# mv /var/lib/mysql_orig /var/lib/mysql
# chown mysql: /var/lib/mysql
# chmod 0700 /var/lib/mysql
# /etc/init.d/mysql start

Wenn Sie genügend Speicherplatz und Zeit haben, ersetzen Sie mv durch cp -ar, damit Sie eine Kopie Ihrer MySQL-Daten haben, falls beim Upgrade etwas schief geht. Eine Datensicherung ist immer eine gute Wahl.

Danach müssen Sie auch das Skript mysql_upgrade ausführen, um mysql.*-Tabellen auf das Format 5.5 zu aktualisieren.

Überprüfen Sie außerdem alle Unterschiede in der Konfiguration – einige der my.cnf-Einstellungen wurden umbenannt und einige der Standardeinstellungen haben sich geändert.

Antwort2

Neben reinem PHP verwenden Sie auch das folgende Modul:php5-mysql. Dafür ist PHP Common 5.5 erforderlich, wodurch der Server zu einer Aktualisierung gezwungen wird. Versuchen Sie, php5-mysqlnd statt php5-mysql zu installieren.

verwandte Informationen