Não é possível reinstalar o mysql-server após sua limpeza

29

Recentemente, fiz uma nova instalação do Ubuntu 16.04. Eu também instalei mysql-servere 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-clientprimeiro, mas vi que artefatos gostam /etc/mysqle /var/lib/mysqlnã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-servernem 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)
Harry
fonte
Parece que mysql-server-5.7está em um estado ruim, tente reinstalá-lo: sudo apt-get install --reinstall mysql-server-5.7.
precisa saber é
Não faz diferença, recebo a mesma linha de erro: ... invoke-rc.d: initscript mysql, action "start" failed. ...estou recebendo outros tipos de comandos de instalação.
Harry
Tente removê-lo, então ... sudo apt-get remove --purge mysql-server-5.7. Observe que realmente mysql-server-5.7estamos falando disso, não mysql-server.
precisa saber é o seguinte
@ Harry Muitas vezes, reinicio o sistema para me livrar desse tipo de erro.
Daisy27
Meu problema foi resolvido seguindo este post
Raizal IN Pregnanta

Respostas:

80

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.

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)

O que realmente está dizendo é que o pacote mysql-server-5.7é uma dependência mysql-server, já está instalado, mas não está configurado. Então, você precisa purgeremover as migalhas deixadas para trás mysql-server-5.7.

sudo apt purge mysql-server mysql-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.

dpkg-query -l [package-name-here]

Normalmente, se você vir o código unou rcà esquerda do nome do pacote, poderá saber se realmente é um pacote quebrado.

Quando tive esse problema, foi com libapache2-mod-phpe libapache2-mod-php7.0. Esta foi a minha saída.

Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                        Version            Architecture       Description
+++-===========================-==================-==================-============================================================
un  libapache2-mod-php          <none>             <none>             (no description available)

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 aptpara removealguma coisa, ele pode deixar pacotes, arquivos de configuração e outros itens que podem ser problemático durante instalações automatizadas.

Quando você diz aptque purgealgo que não é melhor para remover quaisquer migalhas de pão que removepode 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 mysqlserviço

Usando o erro do sistema fornecido por nós apt, podemos realmente usá-lo systemctlpara investigar o erro, verificando o status do mysqlserviço

sudo systemctl status [pattern]

No nosso caso, queremos ver se o mysql está em execução, para digitar

systemctl status mysql.service

Você deverá ver esta saída se o serviço estiver sendo executado

systemctl status mysql
● mysql.service - MySQL Community Server
   Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2017-01-10 23:10:06 EST; 1h 3min ago
 Main PID: 1206 (mysqld)
   CGroup: /system.slice/mysql.service
           └─1206 /usr/sbin/mysqld

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 mysqlserviço usandosystemctl

nota: [padrão] deve ser o nome listado por serviceou initctl. o motivo pelo qual eu uso patterné porque systemctlusa a correspondência de expressões regulares, portanto, tenha cuidado se você deve usar o killargumento

sudo systemctl stop [pattern]

onde patternrepresenta o daemon mysql / nome do serviço. se parar não funcionar tente

sudo systemctl kill [pattern]

Por exemplo

sudo systemctl stop mysql

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 mysqlversã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?

tar -zcvf ~/msql_backup.tar.gz /etc/mysql /var/lib/mysql 
sudo apt purge mysql-server mysql-client mysql-common mysql-server-core-5.7 mysql-client-core-5.7
sudo rm -rfv /etc/mysql /var/lib/mysql
sudo apt autoremove
sudo apt autoclean

4) Corrigindo pacotes quebrados e manipulando dependências ausentes

Se as etapas anteriores não funcionaram, talvez seja necessário executar apta --fix-brokenopção de reparar qualquer dano causado.

Certifique-se de apt updateprimeiro e depoisapt install

sudo apt update    
sudo apt install mysql-server mysql-client --fix-broken --fix-missing

5) Quando tudo mais falhar, construa e instale mysqlvocê mesmo

Se 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).

David Foerster
fonte
"O 16.04 está cheio de bugs no momento." Funciona para mim, incluindo o MySQL. Parece-me que a maioria dos problemas que vemos aqui surgem de pessoas fazendo algo errado, como tentar rmarquivos pertencentes a pacotes.
precisa saber é o seguinte
1
Excelente colega de trabalho! obrigado. desperdicei meu dia inteiro usando algumas instruções estúpidas. Agora isso funcionou!
Renjith VR
Eu segui suas instruções e o sudo systemctl stop mysql pareceu funcionar. No entanto, após a reinicialização, ele foi quebrado novamente. iniciar ou parar não funciona. status do sudo systemctl O mysql mostra: Ativo: desativando (stop-sigterm) desde Seg 2016-06-27 11:05:22 BST; 8min ago REALMENTE preciso esperar 10 minutos para o mysql parar? Você não está surpreso que as pessoas limpem um serviço que não parou completamente? É possível que o Ubuntu 16.04 o conserte? Quais são as opções, voltando à versão anterior do LTS ou outra distribuição?
ruby_object
Graças a remoção e reinstalação desta maneira funcionou perfeitamente!
Louwki 23/09/16
5
Nota: sudo rm -rf /var/lib/mysqlremoverá todos os seus bancos de dados no local padrão. FAÇA um backup primeiro!
augusto
7

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;

apt search mysql-server

Isso deve exibir uma lista de pacotes, nomeadamente

"mysql-server-5.7" "mysql-server-core-5.7" ou versões posteriores

então;

dpkg-reconfigure --force mysql-server-5.7 mysql-server-core-5.7

feito.

e8hffff
fonte
4

Esta é a solução correta para você

Primeiro, você terá que remover todos os pacotes do mysql-server:

AVISO: as etapas a seguir excluirão seus dados! Faça um backup primeiro!

sudo rm -rf /var/lib/mysql

Então instale:

sudo apt-get install lamp-server^

Ou você pode fazer:

sudo apt-get install mysql-server
Rohan
fonte
0

Eu vi isso

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.

como uma pista de que ainda existia um script de inicialização incorreto.

Procure /etc/init.d/mysqle quaisquer links simbólicos para ele. A remoção destes apareceu para corrigir meus problemas de reinstalação após limpeza.

ghatzhat
fonte
0

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.

baptx
fonte
-2

Tente apt-get -f installcorrigir 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-o dpkg -l | grep sqlpara descobrir que o gerenciador de pacotes ainda pensa que você é SQL ou não.

Ali Ghasempour
fonte
Não funcionou. Também incluí o erro que recebo ao tentar instalar o pacote.
Harry
@ Harry Você deve executar apt-get -f installsozinho, sem especificar um nome de pacote.
precisa saber é
Como fkraim disse usá-lo com o nome do pacote ...
Ali Ghasempour
Anexou a saída de apt-get install -f, nenhuma alteração.
Harry
Tente aplicação sináptica e verificá-lo diz que não há pacote quebrado ou não (na coluna da esquerda) [se você tem área de trabalho]
Ali Ghasempour