Eu instalei algum pacote rpm no meu Fedora 17. Alguns pacotes tinham muitas dependências. Eu removi alguns pacotes, mas esqueci de remover dependências não utilizadas com o yum remove.
Como posso fazer isso agora?
Eu instalei algum pacote rpm no meu Fedora 17. Alguns pacotes tinham muitas dependências. Eu removi alguns pacotes, mas esqueci de remover dependências não utilizadas com o yum remove.
Como posso fazer isso agora?
Respostas:
Não é fácil. Como você diferencia entre "um arquivo que foi requerido por algo que removi desde então" de "um arquivo que não é requerido por mais nada que eu realmente queira"?
Você pode usar o package-cleanup
comando do yum-utils
pacote para listar "nós da folha" no gráfico de dependência do pacote. Estes são os pacotes que podem ser removidos sem afetar mais nada:
$ package-cleanup --leaves
Isso produzirá uma lista de "bibliotecas" das quais nada mais depende. Na maioria dos casos, você pode remover com segurança esses pacotes. Se você adicionar --all
à linha de comando:
$ package-cleanup --leaves --all
Você também receberá pacotes que não são considerados bibliotecas, mas essa lista será tão longa que provavelmente não será útil.
Se você instalar um pacote com yum install
, digamos pdftk
, ele puxará 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 nem todas as dependências.
Mas você pode olhar para 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 essa 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!
yum history
. Obrigado!
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 pacote específico
yum autoremove <package>
O que removerá dependências desnecessárias desse pacote instalado. autoremove
é muito um alias de, remove --setopt=clean_requirements_on_remove=1
mas por algumas razões, ainda não está documentado.
yum remove --setopt=clean_requirements_on_remove=1
funciona para mim no centOS
package-cleanup --leaves && yum autoremove
libvorbis removidos e, assim, fizeram com que o aplicativo "Ices" de streaming de rádio na Internet morresse - provavelmente porque não está em repositórios e eu tive que compilá-lo.
yum autoremove
funciona no CentOS 7.6.
Eu levei os larsks a dar um passo adiante.
$ package-cleanup -q --leaves | xargs -l1 yum -y remove
Isso agarra todas as dependências que podem ser removidas sem afetar mais nada e as remove. Melhor do que passar por 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.
package-cleanup
produz "Configurando o yum" na minha máquina, o que resultou na remoção do Yum. Agora estou tentando descobrir como resolver isso.
-q
opção à limpeza de pacotes. Isso aconteceu comigo também: D
package-cleanup -q --leaves | xargs -r -l1 yum -y remove
silenciosamente ignorar xargs se a saída pacote-limpeza está vazio, útil para scripts automatizados como ansible, cozinheiro chefe, fantoche, vagabundo
Nos Fedoras mais recentes com dnf
, você pode usar dnf repoquery --unneeded
como um substituto para package-cleanup --leaves
.
yum
manual: linux.die.net/man/8/yum ?