Este utilitario provisto por el paquete yum-utils ayuda a detectar problemas en la base de datos rpm y a resolverlos, abajo se listan y muestran algunos usos comunes.
Paquetes huérfanos
Listar los paquetes huérfanos, aquellos paquetes que no son provistos por ninguno de los repositorios configurados, "son huérfanos de repositorio", use la opción --orphans
.
# package-cleanup --orphans
...
NetworkManager-0.8.9997-1.git20110531.fc15.x86_64
NetworkManager-glib-0.8.9997-1.git20110531.fc15.x86_64
NetworkManager-gnome-0.8.9997-1.git20110531.fc15.x86_64
adobe-release-i386-1.0-1.noarch
control-center-3.0.1.1-6.fc15.x86_64
control-center-filesystem-3.0.1.1-6.fc15.x86_64
cpp-4.6.0-7.fc15.x86_64
dbus-qt-0.70-7.fc12.x86_64
...
Paquetes duplicados
Para listar los paquetes con duplicados en la base de datos RPM use la opción --dupes
.
$ package-cleanup --dupes
...
samba-3.2.8-0.27.fc10.i386
samba-3.2.8-0.26.fc10.i386
libtalloc-1.2.0-26.fc10.i386
libtalloc-1.2.0-27.fc10.i386
wireshark-gnome-1.0.6-1.fc10.i386
wireshark-gnome-1.0.5-1.fc10.i386
Problemas de dependencias
Para listar los problemas de dependencias en la base de datos RPM use la opción --problems
.
$ package-cleanup --problems
...
Package compiz-0.9.5.92.1-0.2.gite676f1b12eb8db3a76978eed5bfc7c2cf9a0b6ce.fc16.x86_64 no se encuentran necesita de libboost_serialization-mt.so.1.47.0()(64bit)
Package compiz-gtk-0.9.5.92.1-0.2.gite676f1b12eb8db3a76978eed5bfc7c2cf9a0b6ce.fc16.x86_64 no se encuentran necesita de libboost_serialization-mt.so.1.47.0()(64bit)
Package compiz-plugins-main-0.9.5.92-1.fc16.x86_64 no se encuentran necesita de libboost_serialization-mt.so.1.47.0()(64bit)
Package libcompizconfig-0.9.5.92-1.fc16.x86_64 no se encuentran necesita de libboost_serialization-mt.so.1.47.0()(64bit)
Felizmente usted no tendrá problemas, lo que esperaría ver es:
$ package-cleanup --problems
Complementos cargados:presto, refresh-packagekit
No Problems Found
Remoción de kernels antiguos
package-cleanup
también es útil para remover instalaciones de kernel antiguos y paquetes relacionados a dichos kernel antiguos, ue la opción --oldkernel
:
# package-cleanup --oldkernel
Setting up yum
Loaded plugins: dellsysidplugin2, fastestmirror, kernel-module, presto,
: priorities, protectbase, upgrade-helper, versionlock
Loading mirror speeds from cached hostfile
I will remove the following 3 kernel related packages:
kernel-2.6.30.5-43.fc11.i586
kernel-devel-2.6.29.6-217.2.16.fc11.i586
kernel-devel-2.6.30.5-43.fc11.i586
Is this ok [y/N]: y
# rpm -qa kernel*
[root@movix ~]# rpm -qa kernel*
kernel-headers-2.6.30.9-90.fc11.i586
kernel-2.6.30.8-64.fc11.i586
kernel-devel-2.6.30.8-64.fc11.i586
kernel-2.6.30.9-90.fc11.i586
kernel-devel-2.6.30.9-90.fc11.i586
kernel-doc-2.6.30.9-90.fc11.noarch
kernel-firmware-2.6.30.9-90.fc11.noarch
# uname -r
2.6.30.9-90.fc11.i586
Note que se ha dejado un kernel antiguo de acuerdo a la práctica común de yum de mantener dos kernels máximo instalados. Tenga cuidado que este comando no interpreta la opción en yum.conf
installonly_limit
.
# package-cleanup --orphans
Setting up yum
libsndfile-1.0.14-1.fc5.i386
grisbi-0.5.8-2.fc5.i386
gedit-2.14.1-1.i386
...
Debido a la forma en como se maneja las actualizaciones, package-cleanup sólo considera la última versión del paquete, los paquetes no actualizados pero provistos por repositorios configurados aparecerán como huérfanos, es decir, el repositorio Updates, por ejemplo, no continúa suministrando la versión anterior para efectos de package-cleanup. Es decir, antes de hacer un package-cleanup --orphans
, se recomienda hacer una actualización completa si es posible, tenga cuidado de no remover estos paquetes a la ligera, ya que también pueden ser paquetes instalados manualmente y que funcionan perfectamente, o simplemente se deshabilitó el repositorio desde el cual se hizo la instalación.
Con package-cleanup
y el uso de la opción --dupes
, se puede detectar los paquetes duplicados en la base de datos RPM, en este ejemplo gedit-2.14.1-1.i386.
# package-cleanup --dupes
...
gedit
...
# rpm -qa | grep gedit
gedit-2.14.1-1
gedit-2.14.3-1
Se tienen dos versiones instaladas y la versión antigua permaneció, probablemente por algún mal manejo. Ahora se puede sin problemas comenzar una tarea de limpieza, y es que de eso se trata package-cleanup.
# yum remove gedit-2.14.1-1
...
Setting up Remove Process
Resolving Dependencies
--> Populating transaction set with selected packages. Please wait.
---> Package gedit.i386 1:2.14.1-1 set to be erased
--> Running transaction check
Dependencies Resolved
=============================================================================
Package Arch Version Repository Size
=============================================================================
Removing:
gedit i386 1:2.14.1-1 installed 13 M
Transaction Summary
=============================================================================
Install 0 Package(s)
Update 0 Package(s)
Remove 1 Package(s)
Is this ok [y/N] : y
Downloading Packages:
Running Transaction Test
Después de realizar esta operación se ha recuperado cierto espacio en disco, se ha limpiado, al menos en parte, la base de datos rpm que representa al software instalado en el sistema Fedora. Para más detalles de uso revise el manual, man package-cleanup
.