He instalado algunos paquetes rpm en mi Fedora 17. Algunos paquetes tenían muchas dependencias. He eliminado algunos paquetes pero olvidé eliminar las dependencias no utilizadas con yum remove.
¿Cómo puedo hacer eso ahora?
He instalado algunos paquetes rpm en mi Fedora 17. Algunos paquetes tenían muchas dependencias. He eliminado algunos paquetes pero olvidé eliminar las dependencias no utilizadas con yum remove.
¿Cómo puedo hacer eso ahora?
Respuestas:
No es fácil. ¿Cómo se diferencia entre "un archivo que fue requerido por algo que eliminé" de "un archivo que no es requerido por otra cosa que realmente quiero"?
Puede usar el package-cleanup
comando del yum-utils
paquete para enumerar los "nodos hoja" en el gráfico de dependencia del paquete. Estos son paquetes que se pueden eliminar sin afectar nada más:
$ package-cleanup --leaves
Esto producirá una lista de "bibliotecas" de las cuales nada más depende. En la mayoría de los casos, puede eliminar estos paquetes de forma segura. Si agrega --all
a la línea de comando:
$ package-cleanup --leaves --all
También obtendrá paquetes que no se consideran bibliotecas, pero esta lista será tan larga que probablemente no será útil.
Si instala un paquete con yum install
, digamos pdftk
, atraerá muchas dependencias:
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
eliminará solo ese paquete y no todas las dependencias.
Pero puede ver todas las 'transacciones' (instalar, eliminar, 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
Y luego puedes deshacer esa transacción:
$ 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
. ¡Gracias!
A partir de Fedora 18, simplemente puede usar este comando
yum autoremove
o
yum remove --setopt=clean_requirements_on_remove=1
También puede aplicar el comando autoremove con un paquete específico
yum autoremove <package>
Lo que eliminará las dependencias innecesarias de ese paquete instalado. autoremove
es un alias de, remove --setopt=clean_requirements_on_remove=1
pero por alguna razón, todavía no está documentado.
yum remove --setopt=clean_requirements_on_remove=1
funciona para mí en centOS
package-cleanup --leaves && yum autoremove
libvorbis eliminada hizo que la aplicación "Ices" de transmisión de radio por Internet muriera, probablemente porque no está en repos y tuve que compilarla.
yum autoremove
funciona en CentOS 7.6.
Tomé larsks respuesta un paso más allá.
$ package-cleanup -q --leaves | xargs -l1 yum -y remove
Esto toma todas las dependencias que se pueden eliminar sin afectar nada más y luego las elimina. Mejor que pasar uno por uno.
"-q" es útil en algunos sistemas que imprimen "Configuración de yum", de lo contrario, este comando elimina yum. Y eso no es lo que quieres.
package-cleanup
genera "Configuración de yum" en mi máquina, lo que provocó que Yum se eliminara. Ahora estoy tratando de descubrir cómo resolver esto.
-q
opción a la limpieza del paquete. Esto también me pasó a mí: D
package-cleanup -q --leaves | xargs -r -l1 yum -y remove
omitirá xargs en silencio si la salida de limpieza del paquete está vacía, útil para scripts automatizados como ansible, chef, puppet, vagabundo
En Fedoras más nuevas con dnf
, puede usar dnf repoquery --unneeded
como reemplazo para package-cleanup --leaves
.
yum
: linux.die.net/man/8/yum ?