¿Actualizar php 5.3.6 a 5.5 en ubuntu 12.04 LTS requiere eliminar mysql?

¿Actualizar php 5.3.6 a 5.5 en ubuntu 12.04 LTS requiere eliminar mysql?

Estoy intentando actualizar PHP a la última versión (5.5). Mi versión actual de PHP es 5.3.6 incluida con Ubuntu 12.04 LTS. El problema es que no quiero actualizar nada más, solo php, pero aunque le digo específicamente a apt-get que el paquete estoy intentando actualizarlo, insisto en eliminar mysql 5.1 e instalar mysql 5.5. Aquí está el comando que estoy usando:

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

yo también lo intenté

sudo apt-get upgrade php5-common

y la respuesta que obtengo es esta:

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

¿Por qué está pasando esto? ¿php depende de mysql, lo cual sería completamente una locura? ¿Qué pasa si digo que sí? ¿Apt-get eliminaría mis datos actuales de MySQL mientras los elimina? Como se trata de una instancia en ejecución, no puedo arriesgarme a perder ningún dato (podría hacer una copia de seguridad, pero esto significa poner el sitio en mantenimiento durante horas, lo cual no prefiero).

Respuesta1

El problema es que el paquete php5-mysql depende de libmysqlclient18, que depende de mysql-common:

# 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 era predeterminado en 10.04, mientras que la versión predeterminada de MySQL en 12.04 es 5.5, es por eso que todos estos paquetes dependen de él indirectamente.

Si realmente no desea actualizar MySQL, debe buscar paquetes php que estén vinculados a MySQL 5.1 (paquetes creados para 10.04) o debe activar la VM 10.04 y crear la suya propia (reconstruyendo las oficiales).

Por otro lado, la actualización de MySQL no debería eliminar sus datos. Sólo la "purga" logrará eso.

Pero, para estar seguro, lo que puedes hacer es:

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

y luego actualizar. Esto instalará un nuevo servidor mysql y creará un nuevo /var/lib/mysql con una base de datos vacía. No tocará sus datos porque /var/lib/mysql_orig no se menciona en ninguna definición de paquete mysql-*. Después de la actualización, haga:

# 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

Si tiene suficiente espacio en disco y tiempo, reemplace mv con cp -ar, para tener una copia de sus datos MySQL en caso de que algo salga mal con la actualización. Hacer una copia de seguridad siempre es una buena opción.

Después de esto, también necesitarás ejecutar el script mysql_upgrade para actualizar las tablas mysql.* al formato 5.5.

Además, verifique todas las diferencias en la configuración: algunas de las configuraciones de my.cnf han cambiado de nombre y algunas de las configuraciones predeterminadas han cambiado.

Respuesta2

Además de PHP, también utilizarás el siguiente módulo:php5-mysql. Lo cual requiere php common 5.5, lo que obliga a actualizar el servidor. Intente instalar php5-mysqlnd en lugar de php5-mysql.

información relacionada