Não é possível atualizar o mySql em um servidor Debian 6 usando o apt-get

1

Eu corro um servidor Debian 6 e o uso para hospedar uma dúzia de websites baseados em LAMP. Configurei-o para me enviar e-mail sempre que uma atualização de software estiver disponível e hoje de manhã recebi a notificação de 6 novas atualizações disponíveis, todas relacionadas ao mySql:

mysql-server, mysql-client, mysql-common

e poucas outras dependências. Eu tentei executar um

atualização do apt-get apt-get upgrade

e tudo correu bem até que o processo de atualização conheceu o mysql-client. O erro que recebo é o seguinte:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Correcting dependencies... Done
The following packages will be upgraded:
   mysql-client-5.5
1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
1 not fully installed or removed.
Need to get 0 B/1,772 kB of archives.
After this operation, 7,049 kB of additional disk space will be used.
Do you want to continue [Y/n]? Y

Reading changelogs... Done

(Reading database ... 84121 files and directories currently installed.)
Preparing to replace mysql-client-5.5 5.5.38-1~dotdeb.0 (using .../mysql-client-5.5_5.5.46-0+deb6u1_amd64.deb) ...

Unpacking replacement mysql-client-5.5 ...
dpkg: error processing /var/cache/apt/archives/mysql-client-5.5_5.5.46-0+deb6u1_amd64.deb (--unpack):

 trying to overwrite '/usr/share/man/man1/mysql.1.gz', which is also in package mysql-client-core-5.5 5.5.38-1~dotdeb.0
configured to not write apport reports
                                  dpkg-deb: subprocess paste killed by signal (Broken pipe)

Processing triggers for man-db ...

Errors were encountered while processing:

 /var/cache/apt/archives/mysql-client-5.5_5.5.46-0+deb6u1_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

Não tenho experiência suficiente para entender completamente o que aconteceu. Eu tentei executar o apt-get -f instalar como sugerido pela mensagem, mas nada aconteceu. Eu também tentei remover o mysql-client (a idéia era "eu removi este, então reinstale-o do zero"), mas também esta operação falhou com o mesmo erro. Eu tentei limpar o mysql, mas o sistema também não conseguiu concluir essa operação.

No momento, reiniciei o serviço e tudo parece estar funcionando agora, mas o problema com essa falha de atualização persiste.

Aqui está um grep de todos os pacotes relacionados ao mysql que eu instalei no meu servidor:

~# dpkg -l | grep -i mysql
ii  libdbd-mysql-perl                     4.016-1                      Perl5 database interface to the MySQL database
ii  libmysqlclient16                      5.1.73-1+deb6u1              MySQL     database client library
ii  mysql-client                          5.5.46-0+deb6u1              MySQL database client (metapackage depending on the latest version)
ii  mysql-client-5.5                      5.5.38-1~dotdeb.0            MySQL database client binaries
ii  mysql-client-core-5.5                 5.5.38-1~dotdeb.0            MySQL database core client binaries
ii  mysql-common                          5.5.38-1~dotdeb.0            MySQL database common files, e.g. /etc/mysql/my.cnf
ii  mysql-common-5.5                      5.5.46-0+deb6u1              MySQL database common files, e.g. /etc/mysql/my.cnf
ii  mysql-server                          5.5.46-0+deb6u1              MySQL database server (metapackage depending on the latest version)
rc  mysql-server-5.1                      5.1.73-1+deb6u1              MySQL database server binaries and system database setup
iU  mysql-server-5.5                      5.5.46-0+deb6u1              MySQL database server binaries and system database setup
ii  mysql-server-core-5.5                 5.5.46-0+deb6u1              MySQL database server binaries
ii  php5-mysql                            5.4.45-1~dotdeb+6.1          MySQL module for php5
rc  php5-mysqlnd                          5.4.45-1~dotdeb+6.1          MySQL module for php5 (Native Driver)
ii  phpmyadmin                            4:3.3.7-10                   MySQL web administration tool

Adicionando o resultado do apt-get remove

~# apt-get remove mysql-server-5.5
Reading package lists... Done
Building dependency tree       
Reading state information... Done
You might want to run 'apt-get -f install' to correct these:
The following packages have unmet dependencies:
 mysql-server : Depends: mysql-server-5.1 but it is not going to be installed or
                         mysql-server-5.5 but it is not going to be installed
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).

Alguém pode me ajudar a entender como consertar isso? Agradeço antecipadamente, Simone

    
por simonelippolis 16.12.2015 / 11:41

2 respostas

6

Como isso foi explicado por @M Somerville, existe um conflito entre os pacotes previamente instalados pelo repositório dotdeb que você está usando, e o repositório debian oficial que agora contém uma versão mais recente do mysql 5.5.

O que você precisa fazer é remover completamente o mysql 5.5 e depois instalar a última versão disponível em seus repositórios.

Isso resolveu o problema para mim sem perda de dados / configuração:

apt-get remove mysql-client-5.5 mysql-client-core-5.5 mysql-client mysql-server-5.5 mysql-server

Então

apt-get install mysql-client mysql-server

De qualquer forma, não posso enfatizar suficientemente a importância de um backup antes de tentar isso.

Boa sorte

    
por 10.01.2016 / 16:22
1
O

Debian fez o backport do MySQL 5.5.46 para o squeeze no dia 9 de dezembro. Pelo que você diz, parece que você tem usado o repositório dotdeb e o Debian, e o dotdeb contém o MySQL 5.5.38. Então, agora squeeze-lts contém um pacote posterior para um pacote que você instalou, ele tenta instalá-lo. Mas os dois repositórios não parecem concordar com nomes de pacotes / conflitos / dependências, e assim a atualização do mysql-client-5.5 (presente em ambos os repositórios) está em conflito devido a um pacote dotdeb mysql-client-core-5.5 que squeeze-lts não sabe nada sobre (então o comentário de wurtel não ajudará, já que não há nada para atualizar).

Em geral, eu nunca executaria uma instalação forçada, mesmo que algo sugira que você deveria :) Se você estiver satisfeito com o 5.5.46 do squeeze-lts, sugiro que tente desinstalar todos os pacotes da versão 5.5.38 por exemplo mysql-client-core-5.5, não mysql-client, depois mysql-client-5.5, então mysql-common - espero que isso seja possível sem conflitos, embora eu não tenha certeza, desculpe. Se funcionar, sua ideia de remover e ler parece ser boa para garantir que tudo esteja instalado corretamente.

Isso tudo pode acontecer novamente se o dotdeb atualizar seu repositório para uma versão mais recente do que squeeze-lts, em geral, eu sugiro que você esteja obtendo algo de um repositório de terceiros como o dotdeb para fixar os pacotes de lá para que eles não sejam substituídos por alterações no repositório principal.

    
por 16.12.2015 / 12:07