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.
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-cleanupcomando do yum-utilspacote 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.
O APT (o equivalente Debian do Yum) tem uma noção de "pacote instalado automaticamente". Se um pacote não foi solicitado explicitamente, mas apenas recebido como uma dependência, ele será removido automaticamente (com um prompt de confirmação) se todos os pacotes que dependem dele forem removidos. Sem uma indicação desse tipo, na verdade não é fácil.
Gilles 'SO- stop be evil'
101
Se você instalar um pacote com yum install, digamos pdftk, ele puxará muitas dependências:
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
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=1mas por algumas razões, ainda não está documentado.
comando yum remove --setopt=clean_requirements_on_remove=1funciona para mim no centOS
BMW
Para mim, os package-cleanup --leaves && yum autoremovelibvorbis 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.
Nakilon
O comando também yum autoremovefunciona no CentOS 7.6.
scrutari
yum autoremove falha ao remover 4 kernels antigos no CentOS 7
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.
yum
manual: linux.die.net/man/8/yum ?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 doyum-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: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: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.
fonte
Se você instalar um pacote com
yum install
, digamospdftk
, ele puxará muitas dependências: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.):
E então você pode desfazer essa transação:
fonte
yum history
. Obrigado!A partir do Fedora 18, você pode simplesmente usar este comando
ou
Você também pode aplicar o comando autoremove com pacote específico
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.fonte
yum remove --setopt=clean_requirements_on_remove=1
funciona para mim no centOSpackage-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.
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.
fonte
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: Dpackage-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, vagabundoNos Fedoras mais recentes com
dnf
, você pode usardnf repoquery --unneeded
como um substituto parapackage-cleanup --leaves
.fonte