Como “autoremove” pacotes com o gerenciador de pacotes do aptitude?

3

É possível executar um equivalente de apt-get autoremove com aptitude ? Se sim, como?

O Manual do Administrador do Debian diz que aptitude "autoremoves" pacotes automaticamente, mas isso não é verdade (nem sempre é verdade). No meu caso (Ubuntu GNOME 16.04), eu tenho um kernel linux que apt-get autoremove sugere para me livrar de:

§ sudo apt-get autoremove
[sudo] password for alexey: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED:
  linux-headers-4.4.0-31 linux-headers-4.4.0-31-generic
  linux-image-4.4.0-31-generic linux-image-extra-4.4.0-31-generic
0 upgraded, 0 newly installed, 4 to remove and 0 not upgraded.
After this operation, 295 MB disk space will be freed.
Do you want to continue? [Y/n]

aptitude , no entanto, não se importa com isso.

Aqui está a saída de aptitude why linux-image-4.4.0-31-generic :

i   ubuntu-gnome-desktop         Depends    gdm3                                                      
i A gdm3                         Recommends xserver-xorg                                              
c   xserver-xorg                 Recommends xserver-xorg-video-all | xorg-driver-video                
p   virtualbox-guest-x11         Provides   xorg-driver-video                                         
p   virtualbox-guest-x11         Depends    virtualbox-guest-utils (= 5.0.32-dfsg-0ubuntu1.16.04.2)   
p   virtualbox-guest-utils       Recommends virtualbox-guest-dkms (= 5.0.32-dfsg-0ubuntu1.16.04.2) | v
                                            irtualbox-guest-source (= 5.0.32-dfsg-0ubuntu1.16.04.2) | 
                                            virtualbox-guest-modules                                  
i A linux-image-4.4.0-31-generic Provides   virtualbox-guest-modules

Aqui está a saída de aptitude search '~i linux.*4.4.0-31' -F '%c%a%M %p' :

i A linux-headers-4.4.0-31
i A linux-headers-4.4.0-31-generic
i A linux-image-4.4.0-31-generic
i A linux-image-extra-4.4.0-31-generic
    
por Alexey 16.02.2017 / 20:43

1 resposta

1

Pacotes automáticos que não são mais usados são marcados como "id" no aptitude.

Eu acho três maneiras de removê-los.

  1. Aptidão da interface do usuário

    sudo aptitude

    Pressione g para visualizar os pacotes a serem instalados e removidos.

    Vocêpodeencontraressespacotesem"Pacotes sendo removidos porque não são mais usados". Em seguida, pressione g novamente, o aptitude removerá esses pacotes.

  2. Linha de comando de aptitude com grep e xargs

    aptitude search ~i | grep ^id | awk '{print $2}' | xargs sudo aptitude purge -y

  3. Linha de comando do Aptitude com Aptitude::Delete-Unused option

    sudo aptitude -o Aptitude::Delete-Unused=1 install

    Option: Aptitude::Delete-Unused

    Default: true

    Description: If this option is true, automatically installed packages which are no longer required will be automatically removed. For more information, see the section called “Managing automatically installed packages”.

    Eu encontrei esta solução do link . E a opção é descrita em "Referência do arquivo de configuração" no manual de referência do aptitude. Eu não tenho reputação suficiente para postar mais links, então você pode procurar pelo documento.

Qualquer um deles funciona para mim.

De acordo com 6.2.7. Acompanhando Pacotes Instalados Automaticamente :

With this information, when packages are removed, the package managers can compute a list of automatic packages that are no longer needed (because there is no “manually installed” packages depending on them).

e Gerenciando pacotes instalados automaticamente :

More precisely: they will be removed when there is no path via Depends, PreDepends, or Recommends to them from a manually installed package.

Minha resposta se aplica somente quando não há caminho de dependência (Depends, PreDepends ou Recommends) de um pacote instalado manualmente para o pacote de destino. Portanto, não há como usar aptitude para fazer a mesma coisa que apt-get autoremove faz na situação descrita na pergunta (existe um caminho de dependência de ubuntu-gnome-desktop ).

    
por 18.02.2017 / 08:47