apt-get trava ao atualizar o mysql-server-5.1

9

Quando tento fazer o seguinte:

sudo apt-get update
sudo apt-get upgrade

na minha instalação do Ubuntu Server 10.04, ele trava na seguinte linha:

Preparing to replace mysql-server-5.1 5.1.41-3ubuntu12.1 (using .../mysql-server-5.1_5.1.41-3ubuntu12.3_i386.deb)

Eu não consigo nem sair do CTRL-C! Eu acabo tendo que matar minha sessão e logar de um terminal diferente e o processo de atualização ainda está em execução. Eu reiniciei várias vezes e quando volto e tento novamente, ele me diz:

E: dpkg was interrupted, you must manually run 'sudo --configure -a' to correct the problem.

Depois que faço isso, volto ao ponto um e congela quando tento atualizar o mySQL.

    
por Rob 21.06.2010 / 04:14

6 respostas

2

Tente passar um nível abaixo do apt, depois de fazer o backup de seus bancos de dados:

sudo dpkg -r mysql-server
sudo apt-get check    # verify that apt's metadata is okay
sudo apt-get install mysql-server

adicionado :

Como dpkg -r está engasgando, tente dpkg --purge e, na sua falta, obtenha o conteúdo do pacote com dpkg -L mysql-server-5.1 zap e, em seguida, muck em /var/lib/dpkg .

Eu nunca vi coisas ficarem tão cabeludas, desculpe.

se a princípio você não tiver sucesso

Estou pensando em voz alta aqui, me perdoe. O meta-pacote mysql-server contém ou requer estes pacotes:

libdbd-mysql-perl
libdbi-perl
libhtml-template-perl
libnet-daemon-perl
libplrpc-perl
mysql-client-5.1
mysql-client-core-5.1
mysql-server
mysql-server-5.1
mysql-server-core-5.1

Os meta-dados para o gerenciamento de pacotes são deliciosamente desacoplados, existem repositórios centrais, mas os pacotes são independentes. /var/cache/apt/archives é onde *.deb arquivos que foram instalados ao vivo.

Primeiro, force o dpkg a esquecer esses pacotes (correndo o risco de não remover alguns arquivos que vamos substituir).

for i in mysql-server-core-5.1 mysql-server-5.1 ... ; do
    sudo dpkg -r --force-remove-reinstreq $i
done

Em seguida, obtenha os arquivos .deb necessários para uma instalação completa:

sudo apt-get install --download-only mysql-server

e, em seguida, tente instalá-los um por um:

cd /var/cache/apt/archives
sudo dpkg -i mysql-server-core-5.1_5.1.41-3ubuntu12.3_i386.deb

se você tiver problemas, tente:

sudo dpkg -D77777 -i mysql-server-core-5.1... > 2>&1 /tmp/dpkg.log.$$

E tente encontrar as linhas relevantes fora do zilhão no arquivo de log e publique-as aqui. Boa sorte e boa sorte.

    
por 21.06.2010 / 04:28
6

Aparentemente, a atualização está aguardando o servidor ser iniciado e, por algum motivo, não está. Para corrigir o problema, existem várias possibilidades.

O mais fácil:

  1. Abra um novo terminal e execute:

    sudo services mysql start
    

Mais complicado, mas às vezes necessário: (isso é útil quando você não tem acesso a outro terminal):

  1. Pressione "^ z" ( Ctrl + Z ) que irá "PARAR" seu trabalho. Então corra:

    sudo services mysql start
    
  2. Quando o servidor for iniciado, digite o seguinte e pressione Enter:

    fg 
    

    Isso colocará seu trabalho "STOPPED" de volta em primeiro plano e continuará de onde parou.

por 14.05.2011 / 05:09
2

Eu estava tendo esse problema porque era uma cópia de uma VM, então alterei o endereço IP do servidor, mas não alterei o endereço de conexão no arquivo my.cnf. Depois que eu mudei o endereço de vinculação para corresponder, a atualização não foi interrompida e concluída com êxito.

    
por 31.05.2012 / 16:56
1

Eu enfrentei o mesmo problema e passei mais de um dia depurando-o.

Quando removi o diretório do banco de dados, /var/lib/mysql/ , a instalação ocorreu sem problemas.

    
por 08.08.2011 / 23:13
1

Eu estava tendo esse problema exato, mas nenhuma das soluções existentes parecia apropriada. Forçar uma desinstalação é supostamente desnecessário em qualquer * nix e definitivamente não é KISS. No meu caso, descobri que a causa era simples. O MySQL estava se recusando a iniciar porque ainda estava rodando! Quando o apt tentou parar o MySQL, ele estava ativo e nunca parou.

Como sempre, certifique-se de ter backups!

Pare o serviço:

sudo service mysql stop

Verifique se o serviço não está mais em execução:

sudo ps ax | grep mysql

Se ainda estiver em execução, aguarde:

sudo kill <pid>

Mas, eventualmente, se ainda estiver em execução, você terá que eliminá-lo de forma agressiva:

sudo kill -9 <pid>

Depois de confirmar que não está mais em exibição, você pode continuar com a atualização.

Após a atualização ser concluída, especialmente se você tiver que matar -9, certifique-se de rodar o mysqlcheck para garantir que qualquer coisa que possa ter causado o serviço não parar não é uma tabela corrompida ou quebrada. Também garanta que você tenha backups regulares (e certifique-se de que esses backups realmente funcionem!).

    
por 03.02.2013 / 13:01
0

No meu caso, houve um problema com um /etc/mysql/my.cnf existente. Verificando o log de erros em /var/log/mysql/error.log revelou:

150112  5:45:47 [ERROR] Can't start server: Bind on TCP/IP port: Cannot assign requested address
150112  5:45:47 [ERROR] Do you already have another mysqld server running on port: 3306 ?
150112  5:45:47 [ERROR] Aborting

150112  5:45:47  InnoDB: Starting shutdown...
150112  5:45:52  InnoDB: Shutdown completed; log sequence number 0 1883376705
150112  5:45:52 [Note] /usr/sbin/mysqld: Shutdown complete

Obviamente, pode haver um problema diferente com o my.cnf, mas no meu caso é que estávamos tentando vincular a um endereço IP antigo. Alterando para:

bind 127.0.0.1

consertou isso e não deu problema.

    
por 12.01.2015 / 06:52