¿Puedo ver por qué se instala un paquete?

96

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?

    
pregunta Peter Smit 10.10.2010 - 16:08

4 respuestas

92

Una solución rápida es ingresar el siguiente comando en una terminal:

aptitude why $package

o, si solo está interesado en la causa principal:

aptitude why $package --show-summary

Reemplace $ package con el nombre del paquete, y es posible que deba instalar el paquete aptitude primero.

Aquí hay resultados que puede obtener para aptitude why aspell --show-summary

Packages requiring aspell:
  inkscape

Para obtener más detalles, ejecutaría aptitude why aspell . Puede leer el resultado del ejemplo, a continuación, de la siguiente manera: "Instaló manualmente inkscape , que requiere libgtkspell , que requiere libenchantic2a , que requiere aspell ". ( i marcadores indican paquetes instalados; 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 opción --recurse para listar todos los paquetes que dependen directa o indirectamente de él.

    
respondido por el enzotib 10.10.2010 - 16:14
29

Se puede encontrar un razonamiento rápido y breve sobre por qué se instaló un determinado paquete escribiendo el siguiente comando en un terminal ( Applications -> Accessories -> Terminal ):

aptitude why <package-name>

Reemplazar con el nombre del paquete que le interese. Por ejemplo, al escribir aptitude why libgoo-canvas-perl se genera 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 esté instalado. Al escribir aptitude why shutter , puedo caminar por la cadena de dependencia.

Sin embargo, hay una advertencia. A menudo noto que la aptitud encuentra la explicación más plausible para la situación que puede no ser el caso real, pero de todos modos 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 manera predeterminada. Sin embargo, me refresca la memoria de la "experiencia" al no poder editar capturas de pantalla con shutter lo que me llevó a instalar manualmente ligbgoo-canvas-perl

Finalmente, puede averiguar si un paquete se instaló automáticamente (lo que significa que el sistema de administración de paquetes lo decidió como obligatorio al observar dependencias y recomendaciones de otros paquetes que solicitó que se instalara) al ejecutar 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 un terminal) o visite la página de Aptitude wiki

Para averiguar cuándo se instaló un paquete en particular, hay 2 opciones:

  1. El administrador del paquete Synaptic mantiene un registro de historial de toda la actividad. Para ver el archivo de registro de historial, elija Historial en el menú Archivo. Puede buscar Install (tenga en cuenta el caso) para enumerar todas las entradas relacionadas con la instalación. Sin embargo, esto solo mostrará los paquetes instalados con Synaptic
  2. Ejecute el siguiente comando en una terminal. Esto buscará los registros de dpkg para las entradas del historial de instalación. Sin embargo, existe un límite máximo de la cantidad de 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>
    
respondido por el koushik 21.09.2010 - 16:02
11

Sí, puedes, y es un comando bastante obvio, de hecho. Suponiendo que tienes aptitude instalado, puedes 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 se trata de un paquete instalado manualmente, dirá algo así como "No fue posible encontrar un motivo para instalar el paquete".

    
respondido por el Daniel Rodrigues 10.10.2010 - 16:14
2

Esta es una forma simple que no depende de aptitude , que 10.10 ya no se envía por defecto.

  

Aviso

     

Necesita acceso de administrador para ejecutar estos comandos.

Gráficamente

Abre Synaptic e intenta eliminarlo.

Si aparece un diálogo pidiéndole que elimine otros paquetes, esos son los paquetes que (recursivamente) dependen de él.

desde la terminal

apt-get remove package_name_goes_here -s

Una vez más, los paquetes que se eliminarían como resultado son todos los que (recursivamente) dependen de él. (El parámetro -s dice que apt-get no elimina el paquete.)

    
respondido por el badp 10.10.2010 - 16:27

Lea otras preguntas en las etiquetas