Recentemente, fiz uma nova instalação do Ubuntu 16.04. Eu também instalei mysql-server
e mysql-client
(sua versão padrão 5.7.12) via apt-get install
.
Como o 5.7.12 estava mostrando alguns problemas, decidi desinstalá-lo. Tentei apt-get remove mysql-server mysql-client
primeiro, mas vi que artefatos gostam /etc/mysql
e /var/lib/mysql
não foram removidos.
Eu tentei apt-get --purge removed mysql-server mysql-client
, mas ainda não há diferença.
Então, eu os removi manualmente (via rm -rf
). Também removi manualmente todos os *mysql*
arquivos /usr/
que vieram de quaisquer mysql-*
pacotes de dependência como mysql-common
.
No entanto, agora, quando desejo reinstalar mysql-server and -client
, percebo que não posso.
De fato, agora estou em um estado em que não posso nem apt-get remove mysql-server
nem apt-get install mysql-server
!
Como consertar a situação em que estou? Se meus metadados do repositório de pacotes locais foram corrompidos, como faço para repará-los?
Eu odiaria reinstalar todo o SO abençoado com todos os meus outros aplicativos e ambiente, mais uma vez só por causa disso mysql-server
.
A seguir, por exemplo, é o erro que recebo ao tentar remover mysql-server
:
$ apt-get remove mysql-server
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages were automatically installed and are no longer required:
libaio1 mysql-client-5.7 mysql-client-core-5.7 mysql-common mysql-server-5.7 mysql-server-core-5.7
Use 'apt autoremove' to remove them.
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]
(Reading database ... 237601 files and directories currently installed.)
Removing mysql-server (5.7.12-0ubuntu1) ...
Setting up mysql-server-5.7 (5.7.12-0ubuntu1) ...
Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.
invoke-rc.d: initscript mysql, action "start" failed.
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)
E ao tentar instalar, recebo este erro:
$ apt-get -f install mysql-server
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
mysql-server
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
1 not fully installed or removed.
Need to get 0 B/10.1 kB of archives.
After this operation, 159 kB of additional disk space will be used.
Selecting previously unselected package mysql-server.
(Reading database ... 237599 files and directories currently installed.)
Preparing to unpack .../mysql-server_5.7.12-0ubuntu1_all.deb ...
Unpacking mysql-server (5.7.12-0ubuntu1) ...
Setting up mysql-server-5.7 (5.7.12-0ubuntu1) ...
Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.
invoke-rc.d: initscript mysql, action "start" failed.
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)
Aqui está a saída de apt-get install -f
:
$ apt-get install -f
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) ...
Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.
invoke-rc.d: initscript mysql, action "start" failed.
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)
mysql-server-5.7
está em um estado ruim, tente reinstalá-lo:sudo apt-get install --reinstall mysql-server-5.7
.... invoke-rc.d: initscript mysql, action "start" failed. ...
estou recebendo outros tipos de comandos de instalação.sudo apt-get remove --purge mysql-server-5.7
. Observe que realmentemysql-server-5.7
estamos falando disso, nãomysql-server
.Respostas:
Editada em 10 de janeiro de 2017 : Esta é uma revisão importante deste post para corrigir problemas sérios neste post.
O erro no coração
O problema é que o pacote ainda está no sistema em um estado meio instalado e meio configurado e precisa ser removido explicitamente.
O que realmente está dizendo é que o pacote
mysql-server-5.7
é uma dependênciamysql-server
, já está instalado, mas não está configurado. Então, você precisapurge
remover as migalhas deixadas para trásmysql-server-5.7
.Fundamentação
Quando você instala um software usando
apt
, ele também lida automaticamente com dependências.Quando você remove certos pacotes, ele pode não lidar com essas mesmas dependências. No caso deste post, essa dependência é
mysql-server-5.7
.Você pode verificar o estado do pacote emitindo o seguinte comando.
Normalmente, se você vir o código
un
ourc
à esquerda do nome do pacote, poderá saber se realmente é um pacote quebrado.Quando tive esse problema, foi com
libapache2-mod-php
elibapache2-mod-php7.0
. Esta foi a minha saída.No meu caso, alegou que o status do meu pacote é desconhecido e que não está instalado (o código
un
) no meu sistema.Quando você diz
apt
pararemove
alguma coisa, ele pode deixar pacotes, arquivos de configuração e outros itens que podem ser problemático durante instalações automatizadas.Quando você diz
apt
quepurge
algo que não é melhor para remover quaisquer migalhas de pão queremove
pode ter deixado para trás.Inicialmente, afirmei que assumia que o processo ainda estava em execução, mas provavelmente estava inativo ou morto.
A melhor maneira de verificar se o serviço está interferindo na remoção do pacote é verificar esse serviço primeiro.
1) Investigando o
mysql
serviçoUsando o erro do sistema fornecido por nós
apt
, podemos realmente usá-losystemctl
para investigar o erro, verificando o status domysql
serviçoNo nosso caso, queremos ver se o mysql está em execução, para digitar
Você deverá ver esta saída se o serviço estiver sendo executado
Nota: Se o serviço estiver inoperante, você verá uma mensagem curta indicando que não há nenhum serviço com esse nome em execução e pule para a etapa 3.
2) Parando o
mysql
serviço usandosystemctl
nota: [padrão] deve ser o nome listado por
service
ouinitctl
. o motivo pelo qual eu usopattern
é porquesystemctl
usa a correspondência de expressões regulares, portanto, tenha cuidado se você deve usar okill
argumentoonde
pattern
representa o daemon mysql / nome do serviço. se parar não funcionar tentePor exemplo
3) Desinstalando / Limpando
mysql
se você precisar limpar totalmente, verifique se o serviço ou processo foi interrompido primeiro e depois remova os arquivos e diretórios corretos!
Nota: verifique se você está direcionando a
mysql
versão correta . Por exemplo, se você usa 5.5, ajuste o número da versão adequadamente.AVISO: as etapas a seguir excluirão seus dados! (o primeiro comando deve ser executado para fazer um backup)
fonte: Como eu desinstalo o MySQL?
4) Corrigindo pacotes quebrados e manipulando dependências ausentes
Se as etapas anteriores não funcionaram, talvez seja necessário executar
apt
a--fix-broken
opção de reparar qualquer dano causado.Certifique-se de
apt update
primeiro e depoisapt install
5) Quando tudo mais falhar, construa e instale
mysql
você mesmoSe nenhuma das opções acima funcionar, você terá que baixar manualmente a fonte, compilar e usar o make ou bash para instalar a partir daí (não é tão doloroso quanto parece, pois está totalmente automatizado).
fonte
rm
arquivos pertencentes a pacotes.sudo rm -rf /var/lib/mysql
removerá todos os seus bancos de dados no local padrão. FAÇA um backup primeiro!O problema com o primeiro post é que você não pode reconfigurar um meta-pacote bem, não para os itens sql. Você precisa especificar o item de liberação atual.
Diga use;
Isso deve exibir uma lista de pacotes, nomeadamente
"mysql-server-5.7" "mysql-server-core-5.7" ou versões posteriores
então;
feito.
fonte
Esta é a solução correta para você
Primeiro, você terá que remover todos os pacotes do mysql-server:
Então instale:
Ou você pode fazer:
fonte
Eu vi isso
como uma pista de que ainda existia um script de inicialização incorreto.
Procure
/etc/init.d/mysql
e quaisquer links simbólicos para ele. A remoção destes apareceu para corrigir meus problemas de reinstalação após limpeza.fonte
Este erro também ocorreu ao mudar do MySQL para o MariaDB ( https://bugs.launchpad.net/ubuntu/+source/mysql-5.7/+bug/1490071 ).
Os arquivos de dados binários do MySQL não eram compatíveis com o MariaDB, então retornei ao MySQL porque não tive tempo de mexer no mysqldump.
Primeiro tive que mover os dados do MariaDB para longe
/var/lib/mysql
, instalar o MySQL e depois mover meus dados originais/var/lib/mysql-5.7
(esse backup foi criado automaticamente antes do erro) para/var/lib/mysql
.fonte
Tente
apt-get -f install
corrigir o seu pacote SQL quebrado e se você ainda estiver com problemas com o gerenciador de pacotes, baixe o código-fonte do SQL Server e compile-o !! Mas tente o comando acima e também use-odpkg -l | grep sql
para descobrir que o gerenciador de pacotes ainda pensa que você é SQL ou não.fonte
apt-get -f install
sozinho, sem especificar um nome de pacote.apt-get install -f
, nenhuma alteração.