Como reparar a instalação de pacotes corrompidos (mysql)

15

Depois de atualizar para o Ubuntu 16.04, notei que o mysql estava tendo erros incompreensíveis. Convencido, era uma configuração quebrada, tentei executar uma limpeza do mysql. Isso não pareceu excluir tudo, então tentei fazer isso sozinho:

sudo rm -r /etc/mysql
sudo rm -r /usr/share/mysql-workbench
sudo rm -r /usr/share/mysql
sudo rm -r /usr/share/mysql-common

Isso foi um erro. NUNCA tente fazer isso. Agora o mysql não será instalado corretamente. Eu tentei reinstalar as dependências:

sudo apt-get install --reinstall $(apt-cache depends mysql-server | grep -Po 'Depends:\s+\K[^ ]+$' | tr '\n' ' ' )

E os próprios pacotes:

sudo apt install mysql-workbench mysql-server --reinstall

Mas eu recebo todos os tipos de erros enigmáticos, como:

sudo apt-get install --reinstall mysql-server
Reading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 0 not         upgraded.
2 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
E: Internal Error, No file name for mysql-server:amd64

E desinstalando

sudo apt-get remove mysql-common
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 libmysqlclient20 : Depends: mysql-common (>= 5.5) but it is not going to be installed
 mariadb-client-core-10.0 : Depends: mariadb-common (>= 10.0.24-7) but it is not going to be installed
E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.

Ou se eu reconfigurar

sudo dpkg --configure -a
Setting up mysql-server-5.7 (5.7.12-0ubuntu1) ...
/var/lib/dpkg/info/mysql-server-5.7.postinst: line 112: /usr/share/mysql-common/configure-symlinks: No such file or directory
dpkg: error processing package mysql-server-5.7 (--configure):
 subprocess installed post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of mysql-server:
 mysql-server depends on mysql-server-5.7; however:
  Package mysql-server-5.7 is not configured yet.

dpkg: error processing package mysql-server (--configure):
 dependency problems - leaving unconfigured
Errors were encountered while processing:
 mysql-server-5.7
 mysql-server

Ou se eu forçar a instalação:

sudo apt-get -f install
Reading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
2 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Setting up mysql-server-5.7 (5.7.12-0ubuntu1) ...
/var/lib/dpkg/info/mysql-server-5.7.postinst: line 112: /usr/share/mysql-common/configure-symlinks: No such file or directory
dpkg: error processing package mysql-server-5.7 (--configure):
 subprocess installed post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of mysql-server:
 mysql-server depends on mysql-server-5.7; however:
  Package mysql-server-5.7 is not configured yet.

dpkg: error processing package mysql-server (--configure):
 dependency problems - leaving unconfigured
No apport report written because the error message indicates its a followup error from a previous failure.
                                                                                                          Errors were encountered while processing:
 mysql-server-5.7
 mysql-server
E: Sub-process /usr/bin/dpkg returned an error code (1)

Ou se eu fizer uma limpeza:

sudo apt-get -f purge mysql-server 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED:
  mysql-server*
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
2 not fully installed or removed.
After this operation, 159 kB disk space will be freed.
Do you want to continue? [Y/n] y
(Reading database ... 348226 files and directories currently installed.)
Removing mysql-server (5.7.12-0ubuntu1) ...
Setting up mysql-server-5.7 (5.7.12-0ubuntu1) ...
/var/lib/dpkg/info/mysql-server-5.7.postinst: line 112: /usr/share/mysql-common/configure-symlinks: No such file or directory
dpkg: error processing package mysql-server-5.7 (--configure):
 subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
 mysql-server-5.7
E: Sub-process /usr/bin/dpkg returned an error code (1)

O apt não pode se recuperar de uma instalação parcial? Preciso reinstalar o sistema operacional?

Jonathan
fonte
você já tentou fazer uma abordagem mais simples sudo apt-get install --reinstall mysql?
Videonauth
Atualizei para incluir os erros desses #
Jonathan Jonathan
Talvez você queira entrar no bate - papo e ver se conseguimos resolver isso.
Videonauth

Respostas:

22

Faça o seguinte para limpar os pacotes quebrados:

sudo apt-get clean
sudo apt-get update
sudo dpkg -r mysql-client-5.7
sudo dpkg -r mysql-server-5.7
sudo dpkg -r libmysqlclient20:i386
sudo dpkg -r libmysqlclient20:amd64
sudo dpkg -r libmysqlclient18:amd64
sudo dpkg -r mysql-common
sudo dpkg -r mysql 

Depois disso, reinstale-o com:

sudo apt-get install mysql mysql-client* mysql-server*
Videonauth
fonte
Muito obrigado!! remover as dependências uma a uma é a única opção para sair do apt-get stuck
stackMonk 27/11
+1 para isso. Obrigado por mencionar a pilha completa de pacotes a serem removidos para o MySQL remover. Também funcionou para mim.
Parveen Verma
No ubuntu 18.04, tentar remover o mysqlclient (executando o terceiro comando) produziu o seguinte: problemas de dependência impedem a remoção do mysql-client-5.7: o mysql-server-5.7 depende do mysql-client-5.7 (> = 5.7.26-0ubuntu0.18.04. 1) dpkg: pacote de processamento de erros mysql-client-5.7 (--remove): problemas de dependência - não removendo Foram encontrados erros durante o processamento: mysql-client-5.7, mas executando o sudo apt purge mysql-server mysql-server mysql-server-5.7 mysql-server- O core-5.7 a partir daqui askubuntu.com/questions/760724/16-04-upgrade-broke-mysql-server parece ter excluído a instância #
Carmine
agora eu recebi um monte de erros enquanto tentava instalar o sudo para instalar o openjdk-8-jre openjdk-8-jdk.
Carmine
Consegui encontrar o processo que estava bloqueando anteriormente qualquer tentativa de limpar a atualização do mysql; na verdade, parei uma instância em execução no meu sistema e limpei a partir da outra solução vinculada. Depois disso, verifiquei se meu sistema estava atualizado. Na verdade, descobri que de alguma forma sinto falta de muitas atualizações. Depois disso agora, até agora a instalação de Java SDK que se exigem instância mysql parece bem procedeu
Carmine
13

Obrigado a @Videonauth

sudo dpkg -r mysql-client-5.7
sudo dpkg -r mysql-server-5.7
sudo dpkg -r libmysqlclient20:i386
sudo dpkg -r libmysqlclient20:amd64
sudo dpkg -r libmysqlclient18:amd64
sudo dpkg -r mysql-common

Em seguida, executando:

sudo apt-get purge mysql\* mariadb\* libmysql\* libmariadb\*

Se algo falhar, basta executar sudo dpkg -r <failedpackage>e, se isso falhar, remova o pacote que depende dele. Se você repetir, eventualmente o apt-get funcionará novamente.

Veja também Qual é a diferença entre dpkg e aptitude / apt-get?

Jonathan
fonte
A remoção desses pacotes libmysqlclient, mesmo que outros pacotes dependam deles, e a remoção de tudo deu certo. Embora agora eu receba erros de mysql_upgrade.
Skerit 26/05
Eu nunca recebi erros de mysql_upgrade. Mas você pode ter que remover ainda mais pacotes. Suponho que depende de qual pacote foi corrompido. Existe uma maneira de procurar por todos os pacotes instalados relacionados ao mysql, mas esqueço como. Eu acho que é um comando lista dpkg canalizada através grep
Jonathan
9

Tente isso,

execute este comando para limpar o mysql, substitua a versão 5.7 pela sua versão instalada

sudo apt purge mysql-client-5.7 mysql-client-core-5.7 mysql-common mysql-server-5.7 mysql-server-core-5.7 mysql-server

execute isso para limpar e atualizar pacotes

sudo apt update && sudo apt dist-upgrade && sudo apt autoremove && sudo apt -f install

finalmente instale o mysql

sudo apt install mysql-server

isso funcionou para mim.

rahul
fonte
1
Isso funcionou para mim, onde a resposta selecionada não funcionou (falhou sudo dpkg -r mysql-client-5.7) #
1055 jeff-h
obrigado! Eu estava procurando uma solução por horas e esta é a única resposta que funciona!
217 mirza
1
Isso funcionou para mim. Este tutorial também ajudou.
Waweru 04/10/19
4

Após limpar mysqlcomo foi mostrado acima, você deve instalar o mysql desta maneira:

sudo apt-get install mysql-common 
sudo apt-get install mysql-server

Ao instalar dessa maneira, você não terá um erro de instalação.

tomek
fonte
isso funciona para mim
user1735921
2

Não sei o motivo exato, mas todos esses métodos não funcionaram para mim. No meu caso, o procedimento que corrigiu o problema foi:

sudo apt-get purge mysql-*
sudo apt-get autoremove
sudo apt-get autoclean
sudo apt-get dist-upgrade

sudo rm -rf /etc/mysql
sudo rm -rf /var/lib/mysql*

e reinicie !

finalmente, eu pude correr sudo apt-get install mysql-server!

s1l3n0
fonte
Graças ele trabalhou para mim
Nijo
1

Isso funcionou para mim

sudo apt-get purge mysql*
sudo apt-get autoremove
sudo apt-get autoclean
sudo apt-get dist-upgrade

depois instalei o mysql novamente com

sudo apt-get install mysql-server e agora está funcionando bem.

Jayakrishnan Menon
fonte
0

O comando sudo dpkg -r não funciona para mim ..

Eu costumava sudo apt-get purge mysql-*desinstalar toda a paginação liberada e depois reinstalá-los

Ruijie Yuan
fonte