Eliminar dependencias innecesarias en Linux

por | 19 febrero, 2017

¿Problemas con el tamaño de la partición raíz? ¿Bibliotecas que han acampado en tu sistema y desconoces si todavía sirven para algo? ¡Tranquilo! conozco a un comando que conoce a otro comando que te puede ayudar.

Al asunto: vamos a ver como desinstalar las dependencias de software innecesarias en algunas de las principales distribuciónes GNU/Linux.

Algo que puede ocurrir si como yo estás probando programas continuamente (aunque siempre existe la opción de hacer una desinstalación completa de un paquete que incluya las dependencias).

Arch Linux y derivadas como Antergos o Manjaro

Empezamos por mi distro de cabecera (una Antergos en la que acaba de aterrizar KDE después de más de un año en GNOME y XFCE).

sudo pacman -Rsn $(pacman -Qdtq)

Este comando se encarga de listar los paquetes innecesarios, los elimina de forma recursiva al tiempo que mantiene las dependencias de tipo opcional. Si al ejecutarlo os da error, es porque posiblemente no haya nada que eliminar.

A continuación se puede hacer una limpieza del cache de pacman:

sudo pacman -Scc

Debian y derivadas como Ubuntu o Linux Mint

A la hora de eliminar paquetes obsoletos podemos hacer:

sudo apt autoremove

si ademas queremos eliminar viejos archivos de configuración y deshacernos del caché:

sudo apt purge & sudo apt clean

Fedora

En Fedora podemos tirar de este comando que nos provee el gestor de paquetes DNF.

su -c

dnf autoremove

Y antes de que lo ejecutéis a lo loco, señalar que el gestor de software de Fedora, tiene fama de conflictivo en este punto.

Revisad bien las sugerencias de desinstalación antes de confirmar su ejecución, en especial si habéis instalado programas a través de GNOME Software.

Si queremos limpiar el caché del gestor de archivos (es decir los paquetes de software que hayamos descargado con anterioridad) lo podemos hacer con:

dnf clean all

o bien:

dnf clean all --enablerepo=\*

openSUSE

En la distro del camaleón con nombre de gecko, nuestro querido zypper no nos soluciona este tema o por lo menos no lo hace de forma global, que es lo que nos gustaría.

Existe la opción de hacerlo de forma puntual con un programa determinado. En este ejemplo con el reproductor multimedia VLC eliminamos también los paquetes instalados con el y que ya no son requeridos:

su

zypper rm -u vlc

A mayores se puede habilitar la opción de autolimpieza en la interfaz gráfica de Yast.

En Yast también se puede explorar los apartados de paquetes huerfanos (no implica que sea «innecesario»s, tan solo hace referencia a que no pertenecen a ningún repositorio activo) y «no necesarios».

Algo que desde la terminal podemos consultar mediante:

  • Paquetes huérfanos:
zypper pa --orphaned
  • Paquetes innecesarios
zypper pa --unneeded

Y después eliminar (con precaución) lo que se considere innecesario, dado que zypper tampoco es especialmente habilidoso a la hora de determinar dichos paquetes.

Si utilizáis otras distros o tenéis diferentes maneras de tratar este asunto de las dependencias, vuestra sugerencias en los comentarios del blog son como siempre bienvenidas.

23 pensamientos en “Eliminar dependencias innecesarias en Linux

  1. Blablabla

    Ya nadie se acuerda del todopoderoso Gentoo 🙁
    Tan fácil como ejecutar «emerge -cav». Se pueden eliminar fuentes no necesarias con «eclean-sist» y «eclean-pkg».

    Responder
    1. tannhausser Autor

      Nunca instalé Gentoo, lo más que he hecho es probar alguna de sus derivadas (Sabayon por ej.) o el live CD, debido a eso no lo pongo en los ejemplos.

      Si a veces me equivoco con las que llevo usando años, imagina con el resto XD

      Por suerte ya contaba con que alguno de vosotros vendría con esa información, así que muchas gracias 🙂

      Responder
      1. tannhausser Autor

        Vaya! ahora no tengo openSUSE pero juraría que abreviado también funcionaba e incluso juntado los dos, tipo:

        zypper pa -no

        En todo caso lo voy a cambiar y poner como te funciona a ti.

        Gracias por el comentario

        Responder
  2. D'Artagnan

    Con este comando no me funciona: «sudo pacman -Rsn $(pacman -Qdtq)».
    Sin embargo con este: «pacman -Qtdq» (Sin ser root) es chapeau. Y con este otro :»sudo pacman -Rs $(pacman -Qtdq)» remato la jugada.

    Responder
    1. tannhausser Autor

      Si da error del estilo «no se especificaron objetivos» o «se ha especificado sin referencia respecto a la entrada estándar», no es el que el comando esté mal. Significa que no existen paquetes huerfanos que eliminar.

      Otro comando que puede valer es este:

      pacman -Qdtq | sudo pacman -Rns -

      En realidad es lo mismo, la primera parte del comando se encarga de buscar los paquetes y la segunda de borrarlos. Si «pacman -Qdtq» no encuentra nada también va a dar error.

      Responder
  3. Raul P

    Fedora no recomiendo tocarlo. Por ejemplo, vas a eliminar x dependencia y te desinstala más de la mitad de tus programas.

    Responder
  4. tannhausser Autor

    Exacto o si lo tocas mirar exactamente que hace cada paquete (obviamente el comando que posteo no hace nada si después no le das a confirmar)

    Mientras escribía el artículo y buscaba las diferencias entre yum y DNF a la hora de tratar esto, me he encontrado con algunos bugs bastante recientes.

    https://bugzilla.redhat.com/show_bug.cgi?id=1382673

    Y quejas varias en los foros de Fedora, porque incluso sugería desinstalar xorg

    http://forums.fedoraforum.org/showthread.php?t=311685

    Responder
  5. Victor

    Muy bien yo ya sabia ese de archlinux asi lo tengo en un alias del .zshrc o .bashrc segun usen
    y lo ejecuto de vez en cuando

    alias purgar=’sudo pacman -Rsn $(pacman -Qdtq)’

    Responder
  6. Henry GR (HenryGR)

    Un apunte:
    En Ubuntu, la opción clean no es válida en apt.
    Para poder hacer eso, hay que usar apt-get, en su lugar; es decir:

    sudo apt-get purge & sudo apt-get clean

    Saludos.

    Responder
  7. nonamed

    en debian para buscar paquetes obsoletos, es decir, que ya no es encuentran en nuestros repositorios, tenemos algo especifico:

    aptitude search ~o

    y uno a uno vamos investigando por qué es obsoleto, y eliminarlo con cuidado de no romper nada

    Responder
  8. 9acca9

    Hola. Gracias por el artículo.
    Quizás puedas darme una mano con esto; debería ser sencillo… pero algo no funciona según la lógica… 🙂
    (uso Antergos gnome)
    Es esto: muchas veces quiero subir le volumen de la notebook, porque está muy bajo, y ejecuto esto en una terminal.
    pactl set-sink-volume 0 200%

    perfecto, sube el volumen todo va de 10…
    Ahora bien, con esto quise hacer un atajo de teclado, y lo hice, en el apartado «teclado» del centro de configuración, con la combinación Ctrl + 1… resulta que cuando presiono la combinación, el resultado es justamente lo opuesto… baja el volumen a 0.

    Qué demonios?¡?¡?
    En la terminal funciona como debería, no así con la combinación.
    Alguna idea???

    saludos y muchas gracias.

    pd:raro no?

    Responder
    1. 9acca9

      mmmm…
      Acabo de «resolverlo»… jjaja

      con este comando sí funciona incluso desde el atajo de teclado

      pacmd ‘set-sink-volume 0 150000’

      Igual sería interesante saber por qué??
      La verdad que es raro que en la terminal un comando se ejecute de una manera y sin embargo como atajo de teclado resulte lo contrario…

      Pero bueno, el nuevo comando que puse funciona en ambos casos.
      Saludos y gracias

      Responder
  9. elendilnarsil

    Que una distro tan robusta como Opensuse carezca de un método más seguro para la eliminación de paquetes innecesarios e inservibles, no deja de ser una grave carencia. Más aún si considero que Yast es la herramienta de configuración mas completa que haya visto en cualquier sistema.

    Responder

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.