Para un paquete específico, ¿puedo averiguar por qué está instalado?
Entonces, ¿puedo ver o está instalado manualmente, o que está instalado como una dependencia de otro paquete? ¿O que está instalado como parte de la distribución?
apt
software-installation
dependencies
Peter Smit
fuente
fuente
Respuestas:
Una solución rápida es ingresar el siguiente comando en una terminal:
o, si solo le interesa la causa última:
Reemplace $ package con el nombre del paquete, y es posible que
aptitude
primero necesite instalar el paquete.Aquí está la salida que puede obtener para
aptitude why aspell --show-summary
Para más detalles correrás
aptitude why aspell
. Puede leer el resultado de ejemplo, a continuación, de la siguiente manera: "Usted instaló manualmenteinkscape
, lo que requierelibgtkspell
, lo que requierelibenchantic2a
, lo que requiereaspell
". (losi
marcadores indican paquetes instalados; losA
marcadores indican paquetes instalados automáticamente).Finalmente, el siguiente comando
enumera los otros paquetes instalados en su computadora que dependen directamente de $ package . Puede agregar la
--recurse
opción para enumerar todos los paquetes que dependen directa o indirectamente de él.fuente
apt-cache rdepends --recurse $package
Probablemente da demasiados paquetes. Agregaría la--installed
opción de restringir a los paquetes instalados.-i
La opción se restringe a la predependencia y los paquetes relacionados con la dependencia. Pero un paquete puede instalarse porque otro paquete lo recomienda. Para incluir dichos paquetes relacionados con las recomendaciones, supongo que esto daría los correctos:apt-cache rdepends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances --installed --recurse $package
apt-cache rdepends --no-{suggests,conflicts,breaks,replaces,enhances} --installed --recurse $package
Puede encontrar un razonamiento rápido y breve sobre por qué se instaló cierto paquete escribiendo el siguiente comando en un terminal (
Applications -> Accessories -> Terminal
):Reemplácelo con el nombre del paquete que le interesa. Por ejemplo, al escribir, se obtiene
aptitude why libgoo-canvas-perl
lo siguiente:Esto básicamente significa que el paquete
shutter
en este caso ha sugerido quelibgoo-canvas-perl
se instale. Para entonces, escribiendoaptitude why shutter
, puedo subir la cadena de dependencia.Sin embargo, hay una advertencia. A menudo noto que aptitud encuentra la explicación más plausible para la situación que puede no ser el caso real, pero que sin embargo le dará una pista para buscar más.
En mi caso,
shutter
sugierelibgoo-canvas-perl
, sin embargo, los paquetes sugeridos no se instalan automáticamente de forma predeterminada. Sin embargo, me recuerda la "experiencia" de no poder editar capturas de pantalla con lasshutter
que me llevó a instalar manualmenteligbgoo-canvas-perl
Finalmente, puede averiguar si un paquete se instaló automáticamente (lo que significa que el sistema de administración de paquetes decidió que es obligatorio observar las dependencias y recomendaciones de otros paquetes que le pidió que instalara) ejecutando el siguiente comando.
Esto generará una línea como la siguiente (tercera línea de la salida):
Para obtener más información, ejecute
info aptitude
(en una terminal) o visite la página wiki de AptitudePara saber cuándo se instaló un paquete en particular, hay 2 opciones:
Install
(tenga en cuenta el caso) para enumerar todas las entradas relacionadas con la instalación. Sin embargo, esto solo mostrará los paquetes instalados usando SynapticEjecute el siguiente comando en una terminal. Esto buscará en los registros de dpkg las entradas del historial de instalación. Sin embargo, existe un límite máximo de la cantidad de estos registros que se conservan, por lo que si el paquete que está buscando se instaló hace mucho tiempo, es posible que no lo encuentre. Más detalles aquí
fuente
zcat -f /var/log/dpkg.log* | grep -i PackageName | egrep “\ install\ |\ upgrade\ “
Sí, puedes, y de hecho es un comando bastante obvio. Suponiendo que tiene aptitude instalado, puede abrir un tipo de anuncio de ventana de terminal:
Eso debería dar una lista de paquetes que dependen de ese paquete específico. Si es un paquete instalado manualmente, dirá algo como "No fue posible encontrar una razón para instalar el paquete".
fuente
Aquí hay una manera simple en la que no se basa
aptitude
, que 10.10 ya no se envía por defecto.Gráficamente
Abra Synaptic e intente eliminarlo.
Si aparece un cuadro de diálogo pidiéndole que elimine otros paquetes, esos son los paquetes que (recursivamente) dependen de él.
Desde la terminal
Nuevamente, los paquetes que serían eliminados como resultado son todos aquellos que (recursivamente) dependen de él. (El
-s
parámetro le indicaapt-get
que en realidad no elimine el paquete).fuente
y/N
solicitud de confirmación adicional si escribe-s
. Sin embargo, agregué una advertencia.