Removendo pacotes quebrados

9

Recentemente, em um período de frustração com a instalação do phpmyadmin, decidi começar do zero.

Infelizmente, durante a fase de desinstalação, fui solicitada a senha de root do mysql, que eu não tinha à mão no momento. Basta dizer que ele me informou que haveria componentes residuais, uma vez que não era possível limpar adequadamente seus conectores de banco de dados.

Quando cheguei em casa, tentei remover o pacote pelo aptitude purgequal não era mais potente do aptitude removeque o phpmyadmin, tentei removê-lo e falhei, pois os diretórios associados ao pacote já haviam sido removidos da minha tentativa anterior.

Tentei reinstalar o phpmyadmin, mas o aptitude simplesmente declarou que não havia nenhuma atualização disponível e não fez nada; se houvesse uma atualização, eu provavelmente teria os mesmos problemas independentemente.

Nesse sentido, procedi à limpeza do mysql, descartando o banco de dados usado e limpando-o das tabelas de usuário. No entanto, eu não tenho idéia do que mais resta do pacote, ou mesmo como limpar os ganchos no aptitude.

O resultado de dpkg --purge

ickronia:/home/ken# dpkg --purge phpmyadmin
(Reading database ... 27158 files and directories currently installed.)
Removing phpmyadmin ...
/var/lib/dpkg/info/phpmyadmin.prerm: line 5: /usr/share/dbconfig-common/dpkg/prerm.mysql: No such file or directory
dpkg: error processing phpmyadmin (--purge):
 subprocess pre-removal script returned error exit status 1
/var/lib/dpkg/info/phpmyadmin.postinst: line 35: /usr/share/dbconfig-common/dpkg/postinst.mysql: No such file or directory
dpkg: error while cleaning up:
 subprocess post-installation script returned error exit status 1
Errors were encountered while processing:
phpmyadmin

Seguindo o conselho de Gile, tentei reinstalar a dependência dbconfig-common

ickronia:/home/ken# aptitude reinstall dbconfig-common
Reading package lists... Done
Building dependency tree
Reading state information... Done
Reading extended state information
Initializing package states... Done
Reading task descriptions... Done
dbconfig-common is not currently installed, so it will not be reinstalled.
dbconfig-common is not currently installed, so it will not be reinstalled.
The following packages are BROKEN:
  phpmyadmin
0 packages upgraded, 0 newly installed, 0 to remove and 3 not upgraded.
Need to get 0B of archives. After unpacking 0B will be used.
The following packages have unmet dependencies:
  phpmyadmin: Depends: php5-mcrypt but it is not installable
              Depends: dbconfig-common but it is not installable
              Depends: libjs-mootools (>= 1.2.4.0~debian1-1) which is a virtual  package.
The following actions will resolve these dependencies:

Remove the following packages:
phpmyadmin

Score is 121

Accept this solution? [Y/n/q/?] n

*** No more solutions available ***

The following actions will resolve these dependencies:

Remove the following packages:
phpmyadmin

Score is 121

Accept this solution? [Y/n/q/?] n

*** No more solutions available ***

The following actions will resolve these dependencies:

Remove the following packages:
phpmyadmin

Score is 121

Accept this solution? [Y/n/q/?] y
The following packages will be REMOVED:
  phpmyadmin{a}
0 packages upgraded, 0 newly installed, 1 to remove and 3 not upgraded.
Need to get 0B of archives. After unpacking 17.7MB will be freed.
Do you want to continue? [Y/n/?] y
Writing extended state information... Done
(Reading database ... 27158 files and directories currently installed.)
Removing phpmyadmin ...
/var/lib/dpkg/info/phpmyadmin.prerm: line 5: /usr/share/dbconfig-common/dpkg/prerm.mysql: No such file or directory
dpkg: error processing phpmyadmin (--remove):
 subprocess pre-removal script returned error exit status 1
/var/lib/dpkg/info/phpmyadmin.postinst: line 35: /usr/share/dbconfig-common/dpkg/postinst.mysql: No such file or directory
dpkg: error while cleaning up:
 subprocess post-installation script returned error exit status 1
Errors were encountered while processing:
 phpmyadmin
E: Sub-process /usr/bin/dpkg returned an error code (1)
A package failed to install.  Trying to recover:
Reading package lists... Done
Building dependency tree
Reading state information... Done
Reading extended state information
Initializing package states... Done
Writing extended state information... Done
Reading task descriptions... Done

ickronia:/home/ken#

Parece que o phpmyadmin limpou o dbconfig-common

ickronia:/usr/share/dbconfig-common# ls -alF
total 12
drwxr-xr-x  3 root root 4096 2011-02-09 08:09 ./
drwxr-xr-x 98 root root 4096 2011-01-20 21:42 ../
drwxr-xr-x  3 root root 4096 2011-01-05 11:08 data/
ickronia:/usr/share/dbconfig-common#

Tentativa de dpkg a partir de arquivos, conforme sugerido por Giles

ickronia:/usr/share/dbconfig-common# dpkg -i /var/cache/apt/archives/{dbconfig-common,php5-mcrypt,libjs-mootools}*.deb
Selecting previously deselected package dbconfig-common.
(Reading database ... 27161 files and directories currently installed.)
Unpacking dbconfig-common (from .../dbconfig-common_1.8.46_all.deb) ...
Selecting previously deselected package php5-mcrypt.
Unpacking php5-mcrypt (from .../php5-mcrypt_5.3.3-6_i386.deb) ...
Selecting previously deselected package libjs-mootools.
Unpacking libjs-mootools (from .../libjs-mootools_1.2.5~debian1-2_all.deb) ...
Setting up dbconfig-common (1.8.46) ...
dpkg: dependency problems prevent configuration of php5-mcrypt:
 php5-mcrypt depends on libltdl7 (>= 2.2.6b); however:
  Package libltdl7 is not installed.
 php5-mcrypt depends on libmcrypt4; however:
  Package libmcrypt4 is not installed.
dpkg: error processing php5-mcrypt (--install):
 dependency problems - leaving unconfigured
Setting up libjs-mootools (1.2.5~debian1-2) ...
Processing triggers for man-db ...
Processing triggers for libapache2-mod-php5 ...
Reloading web server config: apache2.
Errors were encountered while processing:
 php5-mcrypt
ickronia:/usr/share/dbconfig-common#

Eu tenho um servidor web rodando em php, mas estou disposto a arriscar o tempo de inatividade para resolver isso.

Ken
fonte
Copie e cole os comandos exatos que você tentou e toda a saída que você obtém. Provavelmente, podemos ajudá-lo, mas não sem ver as mensagens de erro exatas.
Gilles 'SO- stop be evil'

Respostas:

7

phpmyadmindepende dbconfig-common, o que contém /usr/share/dbconfig-common/dpkg/prerm.mysql. Parece que você conseguiu desinstalar dbconfig-commonsem desinstalar phpmyadmin, o que não deveria ter acontecido (você tentou --forcealguma coisa?).

Meu conselho é tentar primeiro aptitude reinstall dbconfig-common. Se funcionar, você deve ter um sistema em um estado consistente a partir do qual você pode tentar aptitude purge phpmyadminnovamente.

Outra coisa que você pode fazer é comentar a linha ofensiva /var/lib/dpkg/info/phpmyadmin.prerm. Provavelmente, você poderá desinstalar phpmyadmin. Eu suspeito que você fez o que essa linha deveria fazer quando editou essas tabelas mysql manualmente, mas eu não conheço phpmyadminnem o administrador de banco de dados em geral, então estou apenas adivinhando.

A diferença entre removee purgeé que removeapenas remove o programa e seus arquivos de dados (o material que você pode baixar novamente), enquanto o purgeprimeiro faz o removeque também remove os arquivos de configuração (o material que você pode ter editado localmente). Se removefalhar, o mesmo acontecerá purge.

Gilles 'SO- parar de ser mau'
fonte
Recentemente, tentei sua sugestão de reinstalar o dbconfig-common, mas sem sucesso. Atualizei minhas perguntas com os resultados desse esforço.
21711 Ken
@ Ken: Tente dpkg -i /var/cache/apt/archives/{dbconfig-common,php5-mcrypt,libjs-mootools}*.deb. Se você não possui os debs em seu cache, faça o download em packages.debian.org . Se houver mensagens de erro, poste-as e eu (ou outra pessoa) poderemos ajudá-lo.
Gilles 'SO- stop be evil'
Tentativa sem sucesso. Parece que um enxame de gafanhotos foi desencadeado no meu servidor Debian limpo. A pergunta foi atualizada para refletir esta última tentativa.
20911 Ken
@ Ken: Você precisa instalar as dependências php5-mcrypttambém. Aptidão faria o trabalho para você; você pode tentar, mas acho que ele se recusará a se mexer até que você chegue php5myadmina um bom estado. dpkgé de nível inferior e pode operar mesmo em um banco de dados de pacotes parcialmente quebrado.
Gilles 'SO- stop be evil'
Ao tentar instalar php5-mcrypt, ele solicitou primeiro a remoção de phpmyadmine dbconfig-common. Como não consegui encontrar outras soluções, pensei que caísse de cara quando concordasse. Ao contrário, simplesmente o ato em que o php5-mycrypt foi 'sugerido' para a instalação permitiu ao aptitude limpar adequadamente os ganchos e remover phpmyadmine remover dbconfig-common. Agora eu os reinstalei juntamente com phpmyadmin(embora através de um alcatrão para mais controle). Parece que a versão mais recente não requer mysql para auto-organização. Obrigado Giles por remover os gafanhotos do meu servidor!
21411 Ken
3

Às vezes, o sistema de gerenciamento de pacotes está tão quebrado (geralmente em uma cadeia de dependência circular) que a única combinação de comandos que encontrei para remover pacotes problemáticos é:

  • cd /var/lib/dpkg/info ; rm <packagename.*>
  • dpkg --purge --force-remove-reinstreq <packagename>
  • OU dpkg --remove --force-remove-reinstreq <packagename>
  • Em seguida, apt-get install <packagename>reinstale o pacote

Às vezes, o arquivo de substituição de estado também pode precisar ser corrigido, e o procedimento acima pode gerar erros a respeito disso. Como corrigir os arquivos de substituição de estado depende se é um erro sinalizando um usuário ou não.

Geralmente:

  • os arquivos de substituição de estado estão em: /var/lib/dpkg/statoverride
  • Você pode atualizá-lo executando: dpkg-statoverride --remove <stateoverride-filename>
  • Você pode editá-los manualmente, se souber o que está fazendo
Chux Uzoeto
fonte
2

(Vou assumir que você quis dizer aptitude purgee apt-get remove, porque os comandos que você citou não existem)

Tente dpkg --purge phpmyadmin. É de nível inferior que as outras ferramentas, portanto, pode ser mais eficaz nesse caso.

tshepang
fonte
Ele forneceu o mesmo resultado, mas sem o feedback detalhado exigido pelo aptitude. Obrigado por capturar meus detalhes dos nomes dos comandos.
21711 Ken
Eu tenho o que parece o mesmo problema, mas infelizmente compilei manualmente o PHP, Apache e mais, instalando-os adicionando o módulo php5-mcrypt (que tem tudo o que mencionei como dependência) resultaria em uma confusão e duplicação indesejada. Não há outra maneira?
ken
0

Você pode querer executar 'apt-get -f install' para corrigir estes:

The following packages have unmet dependencies:
 postgresql-client-9.1 : Breaks: postgresql-9.1 (< 9.1.11-0ubuntu0.12.04) but 9.1.10-0ubuntu12.04 is to be installed
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).

Eu estava enfrentando um problema acima, usando o problema de comando "sudo dpkg --purge postgresql-9.1" resolvido

manjunath.k
fonte