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?
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?
Respuestas:
Una solución rápida es ingresar el siguiente comando en una terminal:
aptitude why $package
o, si solo le interesa la causa última:
aptitude why $package --show-summary
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
Packages requiring aspell:
inkscape
Para más detalles correrás aptitude why aspell
. Puede leer el resultado de ejemplo, a continuación, de la siguiente manera: "Usted instaló manualmente inkscape
, lo que requiere libgtkspell
, lo que requiere libenchantic2a
, lo que requiere aspell
". (los i
marcadores indican paquetes instalados; los A
marcadores indican paquetes instalados automáticamente).
i inkscape Depends libgtkspell0 (>= 2.0.10)
i A libgtkspell0 Depends libenchant1c2a (>= 1.6.0)
i A libenchant1c2a Depends aspell-en | myspell-dictionary | aspell-dictionary | ispell-dictionary | hunspell-dictionary
i A aspell-en Depends aspell (>= 0.60.3-2)
Finalmente, el siguiente comando
apt-cache rdepends --installed $package
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.
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
):
aptitude why <package-name>
Reemplácelo con el nombre del paquete que le interesa. Por ejemplo, al escribir, se obtiene aptitude why libgoo-canvas-perl
lo siguiente:
i shutter Suggests libgoo-canvas-perl
Esto básicamente significa que el paquete shutter
en este caso ha sugerido que libgoo-canvas-perl
se instale. Para entonces, escribiendo aptitude 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
sugiere libgoo-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 las shutter
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.
aptitude show <package-name>
Esto generará una línea como la siguiente (tercera línea de la salida):
Automatically installed: no
Para obtener más información, ejecute info aptitude
(en una terminal) o visite la página wiki de Aptitude
Para 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í
zcat -f /var/log/dpkg.log* | grep "\ install\ " | grep -i <package-name>
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:
aptitude why package
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".
Aquí hay una manera simple en la que no se basa aptitude
, que 10.10 ya no se envía por defecto.
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.
apt-get remove package_name_goes_here -s
Nuevamente, los paquetes que serían eliminados como resultado son todos aquellos que (recursivamente) dependen de él. (El -s
parámetro le indica apt-get
que en realidad no elimine el paquete).
y/N
solicitud de confirmación adicional si escribe -s
. Sin embargo, agregué una advertencia.