Por que o 'removimento automático' não é removido de todas as dependências desnecessárias?

6

Acabei de instalar um pacote ( dansguardian neste caso) e apt disse que eu tinha dependências não atendidas.

# sudo apt-get install dansguardian
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  clamav clamav-base clamav-freshclam libclamav6 libtommath0
Suggested packages:
  clamav-docs squid libclamunrar6
The following NEW packages will be installed:
  clamav clamav-base clamav-freshclam dansguardian libclamav6 libtommath0
0 upgraded, 6 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/4,956 kB of archives.
After this operation, 14.4 MB of additional disk space will be used.
Do you want to continue [Y/n]?

Então eu instalei e as dependências. Até aí tudo bem.

Mais tarde, eu decido que este pacote não é o pacote para mim, então eu quero removê-lo e todo o lixo que ele instalou, já que eu não precisarei de nada disso:

# sudo apt-get remove --auto-remove --purge dansguardian
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED:
  dansguardian
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
After this operation, 1,816 kB disk space will be freed.
Do you want to continue [Y/n]?

No entanto, é apenas remover esse pacote específico. E quanto a clamav clamav-base clamav-freshclam libclamav6 libtommath0 ? Não apenas não os removeu, mas clamav estava realmente executando um daemon que carrega toda vez que o computador inicializa. Eu pensei que --auto-remove removeria não apenas os pacotes, mas também as dependências que foram instaladas com ele.

Então, basicamente, sem passar pelo arquivo de log do histórico apt (se eu me lembro de fazer isso, ou se eu lembro que um pacote específico que eu instalei 3 meses atrás tinha dependências junto com ele), existe uma maneira remover um pacote e todas as outras dependências que foram instaladas como neste caso?

    
por Mike 24.06.2012 / 04:37

2 respostas

3

Como izx disse, em sua resposta geral, o primeiro ponto, pode ser a causa deste tipo de coisas.

  

Essas dependências agora também são necessárias / recomendadas por outros pacotes que ainda estão instalados em seu sistema.

Esta é a razão mais provável e válida para esse tipo de situação, mas eu estou pensando que, os outros pacotes nomeados com clamav clamav-base clamav-freshclam libclamav6 libtommath0 provavelmente só estão associados ao pacote mãe clamav . Então, o primeiro ponto, pode não ser o caso nesta situação particular .

A causa mais provável deste problema, que parece ser a causa é, depois de instalar o pacote dansguardian , você instalou todos os seus pacotes de dependência, fazendo este tipo de comando abaixo:

sudo apt-get install clamav clamav-base clamav-freshclam dansguardian libclamav6 libtommath0

Se este for realmente o caso, você não poderá desinstalá-los removendo o pacote mãe dansguardian . já que na linguagem do APT, eles são instalados "manualmente" conforme você explicitamente instala esses pacotes alimentando seu nome no comando apt-get , então deve também desinstalá-los explicitamente declarando o nome do seu pacote

Você pode verificar isso, se for o caso, visualizando /var/log/apt/history.log arquivos.

Para remover:

Você deve remover os pacotes instalados explicitamente nomeando seus nomes. Assim, na sua situação específica, é

sudo apt-get purge clamav clamav-base clamav-freshclam dansguardian libclamav6 libtommath0

Para ver os pacotes dependentes

Você pode encontrar todos os pacotes dependentes com o comando abaixo:

apt-cache depends -i dansguardian | cut -f 2 -d ':' | tr '\n' ' '.

Observação de que dansguardian depende do pacote libc6 . enquanto esse pacote é muito essencial no seu sistema. Portanto, você não pode remover toda a dependência de dansguardian gerando sua lista de pacotes de dependências com o comando apt-cache , portanto, isso não é recomendado. (na verdade, é altamente recomendável evitar fazer isso, a menos que você esteja satisfeito com um sistema corrompido)

    
por Anwar 24.06.2012 / 05:51
3

Resposta específica:

Isso não é um comportamento normal:

izx@preciseunity:~$ sudo apt-get remove --auto-remove --purge dansguardian
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED:
  clamav* clamav-base* clamav-freshclam* dansguardian* libclamav6*
  libtommath0* python-gpgme*
0 upgraded, 0 newly installed, 7 to remove and 91 not upgraded.
After this operation, 14.7 MB disk space will be freed.
Do you want to continue [Y/n]? 

Veja a resposta geral não. 1 abaixo para o motivo mais provável.

Resposta geral:

Isso pode acontecer por vários motivos. Os mais comuns são:

  1. Essas dependências agora também são necessárias / recomendadas por outros pacotes que ainda estão instalados em seu sistema.
  2. O pacote original era um meta-pacote, ou seja, um atalho para instalar vários pacotes em um único traço rápido. A remoção de um metapacote remove apenas o atalho em si, não todos os pacotes instalados. Exemplos comuns são os vários pacotes de desktop guarda-chuva, por exemplo, ubuntu-desktop .

Para remover , use apt-cache depends package-name para obter suas dependências e alimente-as para apt-get remove . Verifique a lista mostrada para garantir que você não perderá nada importante!

Você pode fazer isso em uma única etapa com o seguinte comando (novamente, não pressione Y, a menos que tenha lido a lista!):

sudo apt-get remove 'apt-cache depends dansguardian | grep Dep | cut -d: -f2 | tr '\n' ' ''
    
por ish 24.06.2012 / 05:03