¿Que es eso de los paquetes huérfanos?¿En que me afectan los paquetes huérfanos?¿Como puedo limpiar mi equipo de paquetes huérfanos?
Una de las características que mas me llaman la atención en el mundo del software libre es su carácter colaborativo. De esta manera existen miles o cientos de miles de librerías disponibles, que te permiten desarrollar una aplicación sin tener que empezar de cero. Así dispones de pequeños, o grandes, componentes con un objetivo o funcionalidad específica y que permiten hacer tu aplicación mas robusta.
Precisamente, de esta característica se nutren las distribuciones Linux. Evidentemente, como te puedes imaginar, para que esa aplicación que has desarrollado funcione, necesita que estén instalados el resto de paquetes. Así al definir el paquete que contiene tu aplicación, indicarás que dependencias necesita para su correcto funcionamiento. De esta forma, cuando se instala tu aplicación, también se instalan aquellos paquetes necesarios para su funcionamiento.
Estos paquetes necesarios es lo que se conocen como dependencias, puesto que tu aplicación depende de ellas para su correcto funcionamiento. Hasta aquí todo es correcto, sin embargo, el problema suele venir en la desinstalación de tu aplicación, y es que al desinstalar el paquete padre no siempre se desinstalan las dependencias. Al contrario, esas dependencias quedan instaladas en tu equipo ocupando un espacio innecesario. Estos paquetes olvidados es lo que se conoce como paquetes huérfanos.
Pero, ¿cual es el problema de esos paquetes huérfanos? En realidad tampoco son muy problemáticos. Simplemente ocupan espacio. Depende de las necesidades de espacio que tengas. Y por suerte o por desgracia, actualmente los equipos suelen disponer de espacio suficiente, y normalmente estos paquetes huérfanos no son tu problema.
De cualquier forma, veamos como puedes limpiar tu equipo de paquete huérfanos y que precauciones debes tomar….
Paquetes huérfanos
Con el paso del tiempo, conforme la instalación que has hecho de tu distribución se va asentando en tu equipo, y vas instalando y desinstalado aplicaciones y paquetes, tu ordenador se llena de paquetes huérfanos. Estos paquetes huérfanos, no son mas que paquetes que ya no son necesarios. Paquetes que se instalaron en su día para satisfacer una dependencia, tal y como te he indicado en la introducción, y que al desinstalar el paquete padre ya no tienen ninguna misión, han quedado huérfanos, son paquetes huérfanos.
Existen diferentes opciones para averiguar que paquetes huérfanos tienes en tu equipo, y después a tu elección desinstalarlas o no. Una de estas herramientas para averiguar los paquetes huérfanos en nuestro equipo es deborphan
.
deborphan
deborphan es una herramienta que se encarga de buscar aquellos paquetes sobre los que no hay ninguna dependencia, y para ello se analiza solo las secciones libs
y oldlibs
. Así, para comprobar que paquetes huérfanos residen en tu equipo, tan solo tienes que ejecutar la siguiente orden,
deborphan
Sin embargo, es posible conseguir que deborphan
intente adivinar que paquetes tiene poco o ningún uso. Y para esta especie de adivinación, se basa en el nombre y la descripción del paquete. Evidentemente, esto tiene mucho peligro, porque puedes llegar a perder paquetes que si que se utilizan. Para buscar paquetes huérfanos utilizando este poder adivinatorio, tienes que ejecutar la siguiente orden,
deborphan --guess-all
Es posible ser mas específico, y en lugar de guess-all
, puedes emplear otras opciones como,
--guess-common
, para la búsqueda de paquetes comunes.--guess-data
, en el caso de paquetes de datos.--guess-debug
, bibliotecas de depuración.--guess-dev
, paquetes de desarrollo.--guess-doc
, para paquetes de documentación--guess-python
, para módulos de Python. lo mismo se puede aplicar a otros intérpretes como (ruby, pike, perl y mono).
Existen algunas opciones mas que puedes consultar directamente en el terminal ejecutando man deborphan
. En el caso de deborphan --guess-all
, este los recoge a todos ellos.
Así por ejemplo, yo suelo instalar algunas librerías para desarrollar aplicaciones. Evidentemente la aplicación que estoy desarrollando no está instalada en mi equipo, y por tanto no he declarado esas dependencias en el paquete que no he instalado. Al ejecutar deborphan me va a listar precisamente esas librerías.
Pero no solo esto, dependiendo de como estén construidos los paquetes y dependiendo de como los hayas instalado, puedes dejar una aplicación completamente fuera de uso porque has desinstalado todas las dependencias.
En particular, no te recomiendo el uso de deborphan a menos que sepas y estés seguro de lo que estás haciendo.
Desinstalados paquetes
Una vez has encontrado todos aquellos paquetes huérfanos utilizando deborphan
. ¿Que hacemos con ellos?¿Como los desinstalamos?. Para desinstalarlos, puedes ejecutar la siguiente orden en un terminal,
deborphan | xargs sudo dpkg -r
Si por ejemplo quieres desinstalar solo aquellos paquetes que contengan python
, la orden a ejecutar sería,
deborphan | grep python | xargs sudo dpkg -r
GtkOrphan
GtkOrphan no solo es una interfaz gráfica para deborphan
, que te permite un uso mas intuitivo de esta herramienta. Además te permite desinstalar los paquetes directamente desde esta herramienta, sin que sea necesario una segunda ejecución para eliminarlos de tu equipo.
Por supuesto, GtkOrphan, permite buscar los paquetes huérfanos utilizando esos poderes adivinatorios.
Una vez encontrados todos aquellos paquetes solitarios, marcas la caja de verificación, y pulsas el botón Aceptar
. En ese momento te aparecerá un cuadro de diálogo de confirmación y procederás, en su caso, a eliminar los paquetes seleccionados de tu sistema.
Por supuesto GtkOrphan, tiene los mismos peligros que deborphan, al fin y al cabo no es mas que una interfaz gráfica de este último. Por ello, te recomiendo que en el caso de utilizarlo lo hagas con mucha precuación.
apt autoremove
Otra opción disponible para eliminar paquetes huérfanos de tu dispositivo es utilizando al todepoderos apt
. Esta vez lo utilizaremos con la opción autoremove
.
Al realizar una instalación apt
se encarga de resolver las dependencias de forma automática. De esta forma, si cuando instalas un paquete, apt
detecta que tiene una dependencia no satisfecha, se encargará de instalarla.
De la misma manera, cuando desinstales el paquete principal, apt
se dará cuanta de que instaló de forma automática una dependencia que no es necesaria y te avisará de ello, por ejemplo,
El paquete indicado a continuación se instaló de forma automática y ya no es necesario. late-data Utilice «sudo apt autoremove» para eliminarlo.
Ahora, utilizando sudo apt autoremove
eliminaremos todos aquellos paquetes instalados automáticamente utilizando apt
y como dependencia de otros paquetes.
Ahora bien, si hemos instalado la dependencia antes de instalar el paquete principal, apt
no lo quitará de forma automática al hacer sudo apt autoremove
.
Por todo ello, mi recomendación es que utilices esta opción apt autoremove
, en el caso de que quieras conseguir algo mas de espacio en tu equipo limpiándolo de paquetes huérfanos.
Más información,
Genial, pero creo que esta escrito al reves, lo primero seria la aplicacion con gui para gente normal, luego para los que quieran la terminal
Hola Cristian,
En general te doy la razón, es mas cómodo la interfaz gráfica, pero también es importante saber de donde vienen las cosas. Por esta razón, me pareció mas didáctico hacerlo de esta manera.
Pero de cualquier forma, gracias por tu observación.
Gracias.
Digo creo, no asevero, me gustan algunos comandos de terminal, pero con dibujitos todo es mas fácil, felicitaciones por el increíble trabajo que día a día que nos saca de la oscura ignorancia. Saludos cordiales.
Gracias por el artículo, cada día se aprende nuevas cosas, felicitaciones.
Me quedo con apt autoremove. No quiero meter la pata. Ya me llegó con el problema del 17.10 y mi Lenovo. Felizmente solucionado.