Removendo pacotes quebrados

9

Recentemente, frustrados com a configuração do phpmyadmin, decidi começar do zero.

Infelizmente, durante a fase de desinstalação, eu fui solicitado com a senha de root para o mysql que eu não tinha na mão no momento. Basta dizer que havia componentes de resíduos, pois não conseguia limpar corretamente os conectores do banco de dados.

Quando cheguei em casa, tentei remover o pacote através de aptitude purge , o que acabou não sendo mais potente que aptitude remove em que ele viu o phpmyadmin, tentou removê-lo e falhou, pois os diretórios associados ao pacote eram já removido da minha tentativa anterior.

Eu tentei reinstalar o phpmyadmin, mas o aptitude simplesmente afirmou 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.

A esse respeito, eu continuei limpando o mysql soltando o banco de dados que ele usava e limpando-o das tabelas de usuários. No entanto, não faço ideia do que mais resta do pacote, nem de 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 limpo 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 em arquivos como 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 em execução no php, mas estou disposto a arriscar o tempo de inatividade para resolver isso.

    
por Ken 20.02.2011 / 03:28

4 respostas

7

phpmyadmin depende de dbconfig-common , que contém /usr/share/dbconfig-common/dpkg/prerm.mysql . Parece que você conseguiu desinstalar dbconfig-common sem desinstalar phpmyadmin , o que não deveria ter acontecido (você tentou --force alguma 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 phpmyadmin novamente.

Outra coisa que você pode fazer é comentar a linha ofensiva em /var/lib/dpkg/info/phpmyadmin.prerm . Isso provavelmente fará com que você consiga desinstalar phpmyadmin . Eu suspeito que você fez o que essa linha deve fazer quando editou as tabelas mysql manualmente, mas eu não sei phpmyadmin ou administração do banco de dados em geral, então estou apenas supondo.

A diferença entre remove e purge é que remove apenas remove o programa e seus arquivos de dados (o material que você pode baixar novamente), enquanto purge faz o que remove faz e também remove arquivos de configuração (as coisas que você pode ter editado localmente). Se remove falhar, também purge .

    
por 20.02.2011 / 21:19
2

(Suponho que você quis dizer aptitude purge e apt-get remove , porque os comandos citados não existem)

Experimente dpkg --purge phpmyadmin . É de nível inferior que as outras ferramentas, por isso pode ser mais eficaz neste caso.

    
por 20.02.2011 / 08:21
2

Às vezes, o sistema de gerenciamento de pacotes está tão corrompido (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> para reinstalar o pacote

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

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á-las manualmente, se souber o que está fazendo
por 17.04.2014 / 10:07
0

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

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 problema acima, usando "sudo dpkg --purge postgresql-9.1" problema de comando resolvido

    
por 12.03.2014 / 07:19