El popular logotipo de Debian

Deborphan, limpiando el reguero en Debian y derivados

Saludos a todos los lectores de GUTL. Quiero hablarles hoy un poco de Debian y derivados (tomando en cuenta que, según DistroWatch, padre ejemplar, hijo rebelde y nieto farsante se ubican en las tres primeras posiciones). Específicamente quiero hablar de una herramienta que nos permitirá mantener el orden del sistema a raíz de las constantes instalaciones y desinstalaciones que realizamos con frecuencia usando apt o aptitude. Nuestro invitado de hoy es deborphan.

Los sistemas GNU/Linux de la familia Debian sufren varios cambios en el período que se mantienen instalados en nuestro ordenador. Si revisamos los directorios con las librerías en particular, podemos notar que muchas de ellas son bastante antiguas. Por alguna razón, Debian las guarda aunque nadie depende de estas, ya que nunca se sabe cuando se pueden necesitar.

Si eres de los que gusta mantener las cosas ordenadas y en el menor espacio de disco posible, te comentamos hoy en GUTL que Deborphan puede ser tu mejor aliado: Deborphan permite quitar los paquetes huérfanos.

deborphan busca paquetes sobre los que ningún otro declara una relación de dependencia. La operación predefinida es analizar solo las secciones libs y oldlibs en busca de bibliotecas en desuso.

deborphan busca paquetes sobre los que ningún otro declara una relación de dependencia. La operación predefinida es analizar solo las secciones libs y oldlibs en busca de bibliotecas en desuso.

Deborphan es una utilidad instalable desde nuestros repositorios (Debian o Ubuntu) que se encarga de encontrar paquetes huérfanos (paquetes que no tienen paquetes dependiendo de ellos y que por tanto, son inútiles). Esto nos permite limpiar nuestro disco de librerías que ya no sean necesarias y que no han sido eliminadas al desinstalar la aplicación que dependía de ellas (a menudo porque se ha realizado la desinstalación de una forma inadecuada por parte del usuario), de forma que mantengamos el sistema completamente “limpio”.

La operación por defecto que realiza es la de buscar sólamente en las secciones libs y oldlibs para hallar librerías que no se utilicen, pero si esta utilidad es invocada con una lista de paquetes opcional, sólo serán comprobadas las dependencias de esos paquetes. Los resultados se visualizan posteriormente por pantalla (o std-out) como si se le hubiera pasado la opción –show-deps. Al mismo tiempo, si se le pide que busque por paquetes específicos, mostrará la información correspondiente a los paquetes solicitados independientemente de su prioridad.

Combinando este comando con otros comandos como dpkg o con aplicaciones como Synaptic podemos trabajar con los paquetes/librerías encontrados por deborphan (eliminarlos, listarlos, crear un archivo, etc.).

Instalación

Como mencionamos más arriba, deborphan se encuentra en los repositorios de Debian y Ubuntu, por tanto la instalación se reduce simplemente a pasar los parámetros desde el terminal:

sudo apt-get install deborphan

o usando aptitude (recuerden que en Ubuntu aptitude no viene preinstalado)

sudo aptitude install deborphan

Este paquete también incluye orphaner, una interfaz de menú de texto para deborphan. Instale los paquetes recomendados dialog, gettext-base y apt si desea un orphaner plenamente funcional, con todas sus características.

Usando deborphan

Una vez que tengamos instalado deborphan, el procedimiento es muy sencillo. Si solo queremos ver qué paquetes son “huérfanos”, simplemente tenemos que ejecutar:

daisy@maikel:/home/maikel# deborphan
-------------------------------------------- 08:30:25
libgnomekbd4
kdepimlibs-kio-plugins
librpcsecgss3
libchamplain-gtk-0.8-1
libcryptui0a
libslab0a
libkdcraw9
libgweather1
libkexiv2-9
libxcb-render-util0
ttf-sil-gentium
libgnome-window-settings1
libmicroblog4
libakonadi-kcal4
libevent-1.4-2
libswscale0
libcvaux2.1
ttf-droid
libksane0
libakonadi-kabc4
libabiword-2.8
pnm2ppa
liboobs-1-4
libkcalutils4
libmailtransport4
libtracker-client-0.10-0
libgck0
libedataserverui1.2-11
ttf-larabie-straight
libpolkit-gtk-1-0
libgucharmap7
libavformat52
chromium-browser-l10n
libkipi8
libkdb5-5
kerneloops
libboost-iostreams1.42.0
libgnome-bluetooth7
ttf-prociono
-------------------------------------------- 08:30:30
daisy@maikel:/home/maikel#

Opciones del comando deborphan

Podemos controlar el comportamiento de deborphan en función de las opciones y argumentos que le pasemos al invocarlo.

Opciones generales

  • -h, –help: Muestra un breve ensaje de ayuda y sale del programa.
  • -v, –version: Muestra la información de la versión y sale del programa.
  • -f, –status-file=FILE: Utiliza FILE como archivo de estatus.

Modificadores de la salida

  • -d, –show-deps: Muestra una salida de todos los paquetes instalados y el nombre de los paquetes que dependen de ellos.
  • -P, –show-priority: Muestra la prioridad de los paquetes encontrados.
  • -z, –show-size: Muestra el tamaño de instalación de los paquetes encontrados.
  • -s, –show-section: Muestra las secciones en las que se hallan los paquetes encontrados.
  • –no-show-section: Anular mostrar secciones cuando el comportamiento por defecto es mostrarla (ver: –all-packages).

Modificadores de búsqueda

  • -n, –nice-mode: Desactiva el modo nice-mode. Este modo comprueba si existe un paquete “sugiriendo” o “recomendando” el paquete. Si se encuentra uno, el paquete será marcado como “en uso”, o cuando la opción –show-deps sea empleada, mostrar el paquete por pantalla sugiriendo el paquete que presumiblemente depende de él.
  • -a, –all-packages: Comprueba todos los paquetes en lugar de únicamente en la sección libs. Es mejor emplearlo (si es que se usa)en combinación con –priority. Esta opción implica la opción –show-section.
  • –libdevel: Busca en la sección libdevel además de en libs y en oldlibs.
  • -e, –exclude=LIST: Excluye los paquetes incluídos en LIST (una lista de paquetes separados por comas) de la evaluación como si no existieran en eñ archivo de estatus.
  • -p, –priority=PRIORITY: Mostrar sólo aquellos paquetes con una prioridad igual o mayor que PRIORITY. PRIORITY puede estar en un rango entre 1 y 5 que responde a: required, important, standard, optional y extra. El valor por defecto para PRIORITY es 2 (equivalente a important).
  • -H, –force-hold: Ignora flags “hold” en paquetes. Normalmente, los paquetes con el flag “hold” no serán mostrados.
  • –find-config: Esta opción busca paquetes desinstalados que aún conservan archivos de configuración en el sistema. Implica la opción -a.

Administración de archivos a mantener

  • -A, –add-keep PKG1…PKGn: Añade paquetes a la lista de paquetes que no deben ser reportados independientemente de su estado. Debemos especificar ’-’ para emplear la entrada estándar. Es importante considerar que los nombres de los paquetes son sensibles a mayúsculas y minúsculas (case-sensitive).
  • -R, –del-keep PKG1…PKGn: Elimina paquetes a la lista de paquetes que no deben ser reportados independientemente de su estado. Debemos especificar ’-’ para emplear la entrada estándar. Si no existen dependencias para este paquete, será reportado la próxima vez que deborphan sea invocado.
  • -L, –list-keep: Muestra la lista de paquetes que no deben ser reportados independientemente de su estado.
  • -Z, –zero-keep: Vacía completamente la lista de paquetes que no deben ser reportados independientemente de su estado. La única opción posible que puede combinarse con esta opción es -A.
  • -k, –keep-file=FILE: Usa FILE para almacenar la lista de paquetes que no deben ser reportados independientemente de su estado.

Modo Adivinación

  • –guess-*: deborphan puede intentar adivinar qué paquetes pueden no ser de mucho uso para nosotros, por medio de examinar el nombre del paquete y/o descripción. Fingirá que el paquete se halla en la sección main/libs y lo reportará como si fuera una librería. El asterisco corresponde a cualquiera de las opciones detalladas más abajo. Este método no es en absoluto perfecto o incluso confiable, así que hay que ser muy cauto al usarlo.
Las siguientes opciones deben ir precedidas de –guess-:
  • perl: Esta opción intenta encontrar módulos perl. Intenta que coincida con ^lib.*-perl$.
  • python: Esta opción intenta encontrar módulos python. Intenta que coincida con ^pythondigit:*-.
  • pike: Esta opción intenta encontrar módulos pike. Intenta que coincida con ^pikedigit:*-.
  • ruby: Esta opción intenta encontrar módulos ruby. Intenta que coincida con ^lib.*-ruby$.
  • interpreters: Esta opción intenta encontrar módulos interpreter (implica ruby, pike, python y perl).
  • section: Esta opción intenta encontrar librerías que han sido situadas accidentalmente en la sección equivocada. Intenta que coincida con ^lib, pero no si acaba en: -dbg, -doc, -perl o -dev.
  • dev: Esta opción intenta encontrar paquetes de desarrollo (paquetes con nombres acabados en -dev). Ver también la opción –libdevel.
  • debug: Esta opción intenta encontrar librerias debugging (paquetes con nombres acabados en -dbg).
  • common: Esta opción intenta encontrar paquetes common (paquetes con nombres acabados en -common).
  • data: Esta opción intenta encontrar paquetes data (paquetes con nombres acabados en -data).
  • doc: Esta opción intenta encontrar paquetes documentation (paquetes con names acabados en -doc).
  • dummy: Esta opción intenta encontrar paquetes dummy (paquetes con “dummy” o “transitional” en su descripción corta).
  • all: Prueba todo lo anterior.
  • only: Ignora completamente la sección del paquete para centrarse únicamente en el nombre y/o descripción. Esta opción debe ser empleada en combinación con una o más opciones de –guess listadas más arriba o deborphan no mostrará ningún resultado.

Resumen más entendible

Si queremos solamente ver los paquetes huérfanos:

daisy@maikel:/home/maikel# deborphan

o también:

daisy@maikel:/home/maikel# deborphan --guess-all

Para eliminarlos:

daisy@maikel:/home/maikel# dpkg --purge $(deborphan)

Si eres de los que no les gusta escribir muchos comandos en la terminal, existen dos interfaces que pueden ayudarte a hacer el trabajo más fácil (también desde la consola o terminal). Una de ellas recibe el nombre de Orphaner (sencillamente escriba en consola orphaner) y proporciona una lista clara de los paquetes huérfanos. A continuación se pueden seleccionar los paquetes individuales de la lista, o la lista completa, e indicarle a Deborphan que los elimine.

La otra interfaz es Editkeep (teclee en consola editkeep). Como su nombre sugiere, EditKeep suministra una lista de paquetes marcados para conservar.

Si necesitas utilizar Deborphan pero no quieres saber nada de la terminal, existe una opción totalmente gráfica: gtkorphan. Para instalarlo simplemente sigue las vías conocidas:

daisy@maikel:/home/maikel# apt-get install gtkorphan

gtkorphanPudiéramos seguir hablando de esta fabulosa herramienta pero creo que mejor los dejamos a ustedes para que hagan sus propios experimentos. Recuerden tener sumo cuidado en lo que eliminan de su sistema.

Adelantándome a las protestas de los usuarios de RPM, quiero cerrar esta entrada comentando que las distribuciones basadas en paquetes RPM cuentan con un paquete similar llamado Rpmorphan, que parece ser un clon de Deborphan, pero bueno, que sean los Fedoristas, openSUSIANOS, CentOSienses, Mandriveros, Mageienses o RetHateros los que hablen de dicha aplicación.

Fuente:

http://swlx.cubava.cu

¿Te resultó interesante? Compártelo ...



Maikel Llamaret Heredia

Publicado por Maikel Llamaret Heredia

https://swlx.info » Facebook » Twitter » Google+ » Linkedin » Forma parte de GUTL desde el 6 diciembre, 2011. Parte de la familia GUTL. Usuario de Tecnologías Libres desde hace varios años. Fiel a GNU/Linux y las filosofías del Software Libre y el Código Abierto. Linux User # 587451. Creador y actual mantenedor del Proyecto SWL-X. Freelancer dedicado al Desarrollo / Diseño Web y Marketing Online. Creador de Web & Media Integrated Solutions

Este artículo tiene 12 comentarios

  1. Maikel.

    Satisface conocer otra vía para limpiar los paquetes huérfanos. Siempre «barrí» empleando Synaptic, herramienta que me muestras los ficheros que poseen esta condición.

    • Saludos @Delio. Desde que conoci deborphan la verdad que es de las primeras cosas que instalo en Debian y derivados. De hecho, hay mas cosas de esa herramienta, pero prefiero luego hacer un time y subirlas a nuestra Wiki (reconozco que me salen algunas ronchitas en la piel cuando interactuo con dokuwiki, pero bueno, la wiki hay que atenderla tambien)

      • eeeesto buscaba desde hace rato para una cosa que necesito hacer para la version KDE que sacaremos de NOVA 2015…necesitaba hacer un netinstall de NOVA , partiendo desde NOVA DESKTOP con GNOME, sin dejar churre alguno al purgear GNOME libreria por libreria q es lo q quiero hacer…esto de verdad me ayuda bastante, ahora a compilar deborphan desde las fuentes de whezzy…

        +99 for llamaret

  2. Wow! Buenísimo esto del Deborphan. Este método es mejor que el de Synaptic que acabo de probarlo. Me detectó paquetes huérfanos (poor little orphans!) que el Synaptic ni se había enterado… 10+ para el autor!

  3. Creo que deborphan fue una de las primeras herramientas que usé cuando comencé a usa Linux, es simplemente genial, pero ojo, también puede ser fatal si no estamos claros de lo que estamos desinstalando. Por ejemplo, he notado que algunos paquetes que instalamos manualmente son reconocidos por deborphan como huérfanos, así que si le metemos mano, pues podríamos quedarnos sin parte importante de nuestras aplicaciones.

    saludos,

    lpozo

  4. Muy bueno, lo pruebo cuando le ponga los dedos a mi chacharro en casa. Gracias. Maikel un Off-line, man serias tan amable de publicar algo nuevo relacionado con el avance de los Juegos en GNU/Linux. Una que me gustaria que publiques seria «Cross-Over» plataforma para correr juegos de Windows en Gnu/Linux, por cierto es comercial pero valdria la pena.

    • Bueno, generalmente me gusta escribir sobre cosas que hago a diario o temas de los que mas o menos conozco (aunque no conozco mucho de esto, pues como siempre digo soy un colado en este grupo). Mi ansias de jugar murieron hace bastante tiempo, al extremo que me da lo mismo si hay Steam, Valve o si queman y tiran al rio todos los juegos para PC. Sobre ese tema creo que los mas indicados son @Neji y/o @Ozkar

Los comentarios están cerrados.