Como funciona o purga do apt-get? Por que não foi possível remover o pacote quebrado em uma passagem?

2

Eu tentei instalar o droidcam para resolver outra questão seguindo as instruções aqui: Instale o DroidCam ( Webcam Android sem fio) Cliente no Ubuntu Via PPA

A instalação falha com erro de pós-script, log completo encontrado aqui .

Agora, quero limpá-lo e removê-lo completamente. Então, eu corro sudo apt-get purge droidcam . Mas fiquei surpreso por ter que executá-lo 3 vezes para limpar completamente sua instalação.

$ sudo apt-get purge droidcam        
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  linux-headers-3.19.0-15 linux-headers-3.19.0-15-generic linux-image-3.19.0-15-generic linux-image-extra-3.19.0-15-generic
Use 'apt-get autoremove' to remove them.
The following packages will be REMOVED:
  droidcam*
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
1 not fully installed or removed.
After this operation, 1,529 kB disk space will be freed.
Do you want to continue? [Y/n] y
(Reading database ... 239094 files and directories currently installed.)
Removing droidcam (1.3-0ubuntu0) ...
rmmod: ERROR: Module v4l2loopback_dc is not currently loaded
dpkg: error processing package droidcam (--purge):
 subprocess installed post-removal script returned error exit status 1
Processing triggers for gnome-menus (3.10.1-0ubuntu5) ...
Processing triggers for bamfdaemon (0.5.1+15.04.20150202-0ubuntu1) ...
Rebuilding /usr/share/applications/bamf-2.index...
Processing triggers for desktop-file-utils (0.22-1ubuntu3) ...
Processing triggers for mime-support (3.58ubuntu1) ...
Processing triggers for hicolor-icon-theme (0.14-0ubuntu1) ...
Errors were encountered while processing:
 droidcam
E: Sub-process /usr/bin/dpkg returned an error code (1)

$ sudo apt-get purge droidcam 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  linux-headers-3.19.0-15 linux-headers-3.19.0-15-generic linux-image-3.19.0-15-generic linux-image-extra-3.19.0-15-generic
Use 'apt-get autoremove' to remove them.
The following packages will be REMOVED:
  droidcam
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
1 not fully installed or removed.
After this operation, 1,529 kB disk space will be freed.
Do you want to continue? [Y/n] y
(Reading database ... 239088 files and directories currently installed.)
Removing droidcam (1.3-0ubuntu0) ...

$ sudo apt-get purge droidcam 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  linux-headers-3.19.0-15 linux-headers-3.19.0-15-generic linux-image-3.19.0-15-generic linux-image-extra-3.19.0-15-generic
Use 'apt-get autoremove' to remove them.
The following packages will be REMOVED:
  droidcam*
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n] y
(Reading database ... 239087 files and directories currently installed.)
Removing droidcam (1.3-0ubuntu0) ...
Purging configuration files for droidcam (1.3-0ubuntu0) ...
dpkg: warning: while removing droidcam, directory '/opt' not empty so not removed

$ sudo apt-get purge droidcam 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Package 'droidcam' is not installed, so not removed
The following packages were automatically installed and are no longer required:
  linux-headers-3.19.0-15 linux-headers-3.19.0-15-generic linux-image-3.19.0-15-generic linux-image-extra-3.19.0-15-generic
Use 'apt-get autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

O que eu quero saber:

  • Por que preciso rodá-lo várias vezes?
  • Como o apt-get purge work ? Eu acho que apt-get purge removerá todos os arquivos instalados com uma única passagem.

Minha primeira expectativa, pode ser droidcam não é bem embalada.

    
por user.dz 19.10.2015 / 15:40

1 resposta

3

Este e muitos outros pacotes têm problemas para serem removidos após um problema durante a instalação. Minha solução, se um script falhar, procure na pasta /var/lib/dpkg/info/ . Existem quatro tipos de scripts

  1. package_name.preinst - script de pré-instalação
  2. package_name.postinst - script de pós-instalação
  3. package_name.prerm - script de pré-remoção
  4. package_name.postrm - script de pós-remoção

Olhe nos scripts: Geralmente, é muito fácil encontrar o problema imediatamente. Muitas vezes, é apenas um serviço que não pode ser iniciado ou interrompido. Ou como no seu caso, um módulo descarregado. Se você quiser remover apenas o pacote, remova o código incorreto e comece a excluí-lo novamente.

Em casos muito problemáticos Às vezes, a única maneira de excluir todo o script até a linha exit 0 , atualmente, por exemplo, nginx : (

E como @kos diz, remova a linha set -e . Mas eu nunca testei.

E comece uma petição para scripts mais robustos =)

Alguns exemplos

Como posso remover um dpkg quebrado pelo driver deb MFC-8840 da Brother?

Erro do AVG (reinstale o ubuntu)

Falha ao instalar o doc-base

    
por A.B. 19.10.2015 / 15:49