¿Cómo eliminar las dependencias recomendadas y sugeridas de los paquetes desinstalados?

16

cómo eliminar las dependencias de un paquete desinstalado. y lo intenté

apt-get autoremove

pero eso no elimina las dependencias recomendadas / sugeridas por otros paquetes.

Es decir, si instalo un paquete X que recomienda Y, pero no instalo Y, y luego instalo el paquete Z que depende de Y. y luego lo hago

apt-get remove --auto-remove Z

entonces Y no se elimina automáticamente aunque nada depende de ello. (X "recogió" Y, aunque no depende de ello).

usuario2809402
fuente
1
¿Podrías decir cuál es el paquete que hace esto?
Braiam
Hay muchos ejemplos, así que intenté extraer la esencia del problema en la descripción anterior. Tiene razón en que también debería haber incluido un ejemplo concreto: considere la instalación de texlive-full. Instala muchos paquetes de fuentes, que son sugeridos (pero no requeridos) por muchos paquetes preexistentes (no puedo recordar con precisión cuál, pero creo que libreoffice preexistente o matplotlib u octave sugirieron estos). Entonces, el problema es que "apt-get install texlive-full" seguido de "apt-get remove --purge --auto-remove texlive-full" no deja el sistema en el mismo estado original.
user2809402

Respuestas:

14

Si desea eliminar los paquetes recomendados de su sistema, incluso si todavía hay algunos paquetes instalados que los recomiendan (o sugieren), coloque lo siguiente en el archivo /etc/apt/apt.conf.d/99_norecommends(créelo):

APT::Install-Recommends "false";
APT::AutoRemove::RecommendsImportant "false";
APT::AutoRemove::SuggestsImportant "false";

La documentación para estas opciones está aquí .

Luego, la próxima ejecución de apt debería eliminarlos a todos. Si no es así, inicie aptitude, escriba gy gnuevamente.

Esta configuración también deshabilita la instalación automática de paquetes recomendados cuando se usa apt-get. Para aptitudehacerlo desde la GUI de la consola, seleccione Opciones> Preferencias> "Instalar paquetes recomendados automáticamente" (desactívela).

Totor
fuente
No recomendaría no instalar recomendaciones, ya que la mayoría de las veces son útiles .
Braiam el
1
@Braiam Sin embargo, esto no es lo que preguntó el OP. Tu comentario es para él, no para mí.
Totor
Solo digo que eso puede ser exagerado.
Braiam
@Braiam Ese es tu punto de vista. Vivo bastante bien con InstallRecommendsdiscapacitados. Para el registro, se deshabilitó de forma predeterminada hasta que se lanzó Debian Squeeze, es decir, desde febrero de 2011 (no sé sobre Ubuntu). Además, es posible que no necesite la misma configuración en un servidor o una configuración de escritorio.
Totor
2
InstallRecommends: Porque ¿por qué instalar 5MB de cosas que quieres, cuando también puedes instalar 1GB de cosas que no quieres?
Mark K Cowan
7

Anulación de las opciones de APT

A diferencia de las dependencias, los paquetes "recomendados" o "sugeridos" instalados automáticamente pueden ser ignorados por apt-get autoremove.

Como se describe en otra parte, este comportamiento de APT se puede cambiar en la configuración.

Del mismo modo, la configuración del apt-getcomando se puede cambiar temporalmente a través de la -oopción de línea de comando.

Es decir, cómo forzaría a autoremove a eliminar los paquetes "recomendados" y "sugeridos" sobrantes, además de las dependencias no utilizadas.

sudo apt-get autoremove -o APT::Autoremove::RecommendsImportant=0 -o APT::Autoremove::SuggestsImportant=0

¡Precaución!

Alguna funcionalidad puede perderse. Esté preparado para investigar y reinstalar cosas. Puede ser más fácil dejar estos paquetes solos.

Otras opciones

Para desinstalar los paquetes 'recomendados' y 'sugeridos' únicamente para un paquete en particular, eche un vistazo al registro del historial de apt.

Rolf
fuente
1
simplemente para analizar dichos paquetes, realice una ejecución en seco con apt-getla -sopción 's' y diríjase a grep ^Remv- así que ese es el comando:apt-get autoremove -s -o APT::Autoremove::RecommendsImportant=0 -o APT::Autoremove::SuggestsImportant=0 | grep ^Remv
myrdd
1

En realidad el comando es:

sudo apt-get autoremove <Z>

Pero esto tiene un truco! Si alguna de las dependencias tiene otros paquetes instalados previamente que los recomiendan / sugieren, entonces apt no los eliminará.

No especificó qué paquete era, pero, por ejemplo, si tuviera que instalar el complemento IcedTea, instalaría Java / OpenJRE por dependencias. Si los desinstalo usando sudo apt-get autoremove icedtea-7-plugin, notará que no eliminará Java / OpenJRE, ya que LibreOffice también sugiere los paquetes.

Por lo tanto, para eliminarlos, debe ser demasiado específico sobre el paquete que desea desinstalar que normalmente autoremoveno:

sudo apt-get autoremove <Z> <dependency of Z>

De esta manera, puede estar seguro de que su paquete se eliminará.

También puede usar deborphan para eliminar algunas dependencias.

Braiam
fuente
1
Por cierto, según tengo entendido de la página de manual de apt es que autoremove no espera un nombre de paquete, y simplemente limpiará todas las dependencias de paquetes innecesarias en el sistema. Debería hacer 2 pasos: "apt-get remove Z" seguido de "apt-get autoremove". Estos 2 pasos se pueden hacer a la vez con "apt-get remove --auto-remove Z", como se mencionó en mi pregunta original. Pero como dije, el problema es que hay algunos paquetes sobrantes que no se eliminan si fueron sugeridos por otra cosa.
user2809402
1
Sí, describiste mi problema perfectamente. Gracias. Pero, desafortunadamente, no lo ha resuelto, porque no quiero ir a /var/log/apt/history.log y buscar todos los paquetes Y que se instalaron hace un par de meses con Z (en su ejemplo, Y = java / jre, Z = plugin icedtea) y luego agregarlos manualmente a la línea de comandos de apt. Solo quiero especificar Z y el resto de las dependencias que se recogerán automáticamente, incluso si son sugeridas por otro paquete X existente (X = libreoffice en su ejemplo).
user2809402
1
Desafortunadamente, esta es la forma en que funciona el sistema apt, prefiere mantener los paquetes instalados en lugar de eliminarlos, incluso si ya no son necesarios. La única forma de eliminarlos es de forma manual o con deborphandeborphan, pero aún puede perder algunos paquetes. Puede usar las Debug::opciones y también consultar mi otra respuesta sobre esto . También puede usar el --no-install-recommends, pero apt-get no instala los paquetes sugeridos por defecto.
Braiam
@ user2809402 también debe consultar askubuntu.com/q/244470/169736
Braiam
Braiam- Gracias por el puntero deborphan. Lo revisaré.
user2809402
-1

Correcto, si desea eliminar el paquete <Z>con dependencias simplemente escriba:

sudo apt-get autoremove --purge <Z>
usuario1019723
fuente
3
Gracias, pero desafortunadamente, agregar "--purge" simplemente elimina las configuraciones de paquetes que se eliminan con "autoremove". Pero por lo que puedo ver, no cambia la decisión sobre qué paquetes eliminar. Es decir, las dependencias de Z sugeridas por algún paquete X preexistente, aún no se eliminan, ya sea que especifique o no "--purge".
user2809402
1
Además, autoremovefunciona en todo el sistema. Por lo tanto, cada vez que llame autoremove, eliminará todos los paquetes no utilizados en su sistema. Al instalar un paquete, autoremovinggeneralmente no devolverá el sistema al mismo estado y, en cambio, dejará un montón de paquetes "sobrantes".
Rolf