atualizar o php 5.3.6 para 5.5 no ubuntu 12.04 LTS requer a remoção do mysql?

atualizar o php 5.3.6 para 5.5 no ubuntu 12.04 LTS requer a remoção do mysql?

Estou tentando atualizar o php para a versão mais recente (5.5). Minha versão atual do php é 5.3.6 fornecida com o Ubuntu 12.04 LTS. O problema é que não quero atualizar mais nada, apenas o php, mas embora eu diga especificamente ao apt-get o pacote que estou tentando atualizar, insisto em remover o mysql 5.1 e instalar o mysql 5.5, aqui está o comando que estou usando:

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

Eu também tentei

sudo apt-get upgrade php5-common

e a resposta que recebo é 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 que isso está acontecendo? é php dependente do mysql, o que seria completamente insano. E se eu disser sim, o apt-get excluiria meus dados mysql atuais ao removê-los? como esta é uma instância em execução, não posso arriscar perder nenhum dado (posso fazer um backup, mas isso significa colocar o site em manutenção por horas, o que não prefiro)

Responder1

O problema é que o pacote php5-mysql depende do libmysqlclient18, que depende do 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

O MySQL 5.1 era o padrão em 10.04, enquanto a versão padrão do MySQL em 12.04 é 5.5, é por isso que todos esses pacotes dependem dele indiretamente.

Se você realmente não deseja atualizar o MySQL, você deve encontrar pacotes php vinculados ao MySQL 5.1 - pacotes criados para 10.04 - ou você deve ativar a VM 10.04 e construir os seus próprios (reconstruindo os oficiais).

Por outro lado, a atualização do MySQL não deve excluir seus dados. Somente 'expurgar' fará isso.

Mas, só para garantir, o que você pode fazer é:

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

e então faça a atualização. Isto irá instalar o novo servidor mysql e criar um novo /var/lib/mysql com banco de dados vazio. Ele não afetará seus dados porque /var/lib/mysql_orig não é mencionado em nenhuma definição de pacote mysql-*. Após a atualização, faça:

# 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

Se você tiver espaço e tempo em disco suficientes, substitua mv por cp -ar, para que você tenha uma cópia dos seus dados MySQL caso algo dê errado com a atualização. Fazer backup é sempre uma boa escolha.

Depois disso, você também precisará executar o script mysql_upgrade para atualizar as tabelas mysql.* para o formato 5.5.

Além disso, verifique todas as diferenças na configuração - algumas das configurações do my.cnf foram renomeadas e alguns dos padrões foram alterados.

Responder2

Além de apenas PHP você também usará o seguinte módulo:php5-mysql. O que requer php common 5.5, o que força a atualização do servidor. Tente instalar o php5-mysqlnd em vez do php5-mysql.

informação relacionada