Remover pacotes não utilizados

53

Instalei alguns pacotes rpm no meu Fedora 17. Alguns pacotes tinham muitas dependências. Eu removi alguns pacotes, mas eu esqueci de remover dependências não utilizadas com o yum remove.

Como posso fazer isso agora?

    
por Raphael Ahrens 06.06.2012 / 21:03

5 respostas

35

Não é fácil. Como você diferencia entre "um arquivo que foi requerido por algo que eu removi desde então" de "um arquivo que não é requerido por qualquer outra coisa que eu realmente queira"?

Você pode usar o comando package-cleanup do pacote yum-utils para listar "nós folha" no seu gráfico de dependência de pacote. Estes são pacotes que podem ser removidos sem afetar nada:

$ package-cleanup --leaves

Isso produzirá uma lista de "bibliotecas" das quais nada mais depende. Na maioria dos casos, você pode remover esses pacotes com segurança. Se você adicionar --all à linha de comando:

$ package-cleanup --leaves --all

Você receberá pacotes que também não são considerados bibliotecas, mas essa lista será tão longa que provavelmente não será útil.

    
por 06.06.2012 / 21:32
84

Se você instalar um pacote com yum install , digamos, pdftk , ele incluirá muitas dependências:

Installed:
  pdftk.x86_64 0:1.44-10.fc18

Dependency Installed:
  bouncycastle.noarch 0:1.46-6.fc18     
  itext-core.noarch 0:2.1.7-14.fc18     
  libgcj.x86_64 0:4.7.2-8.fc18          
  bouncycastle-mail.noarch 0:1.46-6.fc18
  java-1.5.0-gcj.x86_64 0:1.5.0.0-40.fc18
  sinjdoc.x86_64 0:0.5-13.fc18
  bouncycastle-tsp.noarch 0:1.46-5.fc18
  java_cup.noarch 1:0.11a-10.fc18
  itext.x86_64 0:2.1.7-14.fc18   
  javamail.noarch 0:1.4.3-12.fc18

Complete!

yum remove pdftk removerá apenas esse pacote e não todas as dependências.

Mas você pode ver todas as 'transações' (instalar, remover, etc):

$ sudo yum history list pdftk
ID     | Command line             | Date and time    | Action(s)      | Altered
-------------------------------------------------------------------------------  
    88 | install pdftk            | 2012-12-14 13:35 | Install        |   11   

E então você pode desfazer a transação:

$ sudo yum history undo 88
Undoing transaction 88, from Fri Dec 14 13:35:34 2012
    Dep-Install bouncycastle-1.46-6.fc18.noarch       @fedora
    Dep-Install bouncycastle-mail-1.46-6.fc18.noarch  @fedora
    Dep-Install bouncycastle-tsp-1.46-5.fc18.noarch   @fedora
    Dep-Install itext-2.1.7-14.fc18.x86_64            @fedora
    Dep-Install itext-core-2.1.7-14.fc18.noarch       @fedora
    Dep-Install java-1.5.0-gcj-1.5.0.0-40.fc18.x86_64 @fedora
    Dep-Install java_cup-1:0.11a-10.fc18.noarch       @fedora
    Dep-Install javamail-1.4.3-12.fc18.noarch         @fedora
    Dep-Install libgcj-4.7.2-8.fc18.x86_64            @fedora
    Install     pdftk-1.44-10.fc18.x86_64             @fedora
    Dep-Install sinjdoc-0.5-13.fc18.x86_64            @fedora
    ...
    Complete!
    
por 14.12.2012 / 15:13
48

A partir do Fedora 18, você pode simplesmente usar este comando

yum autoremove

ou

yum remove --setopt=clean_requirements_on_remove=1

Você também pode aplicar o comando autoremove com um pacote específico

yum autoremove <package>

O qual removerá as dependências desnecessárias do pacote instalado. autoremove é praticamente um alias de remove --setopt=clean_requirements_on_remove=1 , mas, por alguns motivos, ainda não está documentado.

    
por 17.07.2013 / 22:07
2

Eu tomei larsks responder um passo mais longe.

$ package-cleanup -q --leaves | xargs -l1 yum -y remove 

Isso agarra todas as dependências que podem ser removidas sem afetar qualquer outra coisa e, em seguida, as remove. Melhor então passar um por um.

"- q" é útil em alguns sistemas que imprimem "Configurando o yum" caso contrário, fazendo com que este comando remova o yum. E não é isso que você quer.

    
por 07.10.2014 / 03:45
1

Nos Fedoras mais recentes com dnf , você pode usar dnf repoquery --unneeded como um substituto para package-cleanup --leaves .

    
por 13.09.2016 / 23:54

Tags