¿Cómo puedo saber qué programas contiene algún paquete apt-get?


17

Me gustaría saber qué instala un paquete específico , por ejemplo, al instalarlo ncurses, he descubierto que la TABclave se expande:

sudo apt-get install ncurses-

mostrar:

ncurses-base      ncurses-doc       ncurses-hexedit
ncurses-bin       ncurses-examples  ncurses-term

¿Cómo podría saber qué, por ejemplo, ncurses-terminstala? Estoy interesado principalmente en programas, pero las bibliotecas y cualquier otro tipo de archivo también podrían ser útiles.

Se preferiría el método de línea de comandos , si es posible ( cualquier otro aceptado también).


Cuando dices "programas", ¿estás hablando de binarios?
Braiam

Binarios y scripts, si es posible, gracias, @Braiam.
Sopalajo de Arrierez

Respuestas:


21

Aquí hay algunas opciones, estas enumerarán todos los archivos instalados por un paquete:

A. Listado de todos los archivos incluidos en un paquete

  1. Para paquetes instalados

    dpkg -L ncurses-term
    
  2. Para todos los paquetes, instalados o no

    apt-file -F list ncurses-term
    

    Los -Fgiros de la coincidencia de patrones para que solo se devuelvan los paquetes cuyo nombre exacto coincida. Es posible que deba instalar apt-filecon sudo apt-get install apt-filey luego actualizar su base de datos con sudo apt-file update.

B. Listado de solo archivos ejecutables incluidos en un paquete

  1. Para paquetes instalados

    Simplemente instale dlocate( sudo apt-get dlocate) y ejecute:

    dlocate -lsbin ncurses-term 
    

    Como se explica en man dlocate:

    -lsbin Lista de la ruta completa / nombres de archivo de los archivos ejecutables (si los hay) en el paquete

    Si no desea instalar paquetes adicionales, puede hacerlo manualmente. Simplemente recopile la lista de archivos y encuentre alguno de ellos que tenga establecido el bit ejecutable:

    apt-file -F list ncurses-term | cut -d ' ' -f 2 | 
        while read file; do [[ -x $file && -f $file ]] && echo "$file"; done
    

    El pequeño scriptlet anterior solo imprimirá la ruta ( cut -d ' ' -f 2) y luego la pasará a través de un whilebucle que verifica si el archivo es ejecutable ( -x $file) y si es un archivo normal, no hay directorios o enlaces simbólicos ( -f $file) e imprime su nombre solo si pasa ambas pruebas .

  2. Para todos los paquetes, instalados o no

    No sé cómo enumerar solo los ejecutables incluidos en un paquete desinstalado. Sin embargo, dado que la mayoría de los ejecutables están instalados en los bindirectorios, puede obtener la mayoría de ellos analizando la salida:

     apt-file -F list ncurses-term | grep -Ew "bin|sbin"
    

    La -wopción coincide con palabras completas, por lo que no se instalan elementos, por ejemplo, trashbino lo que sea.


NOTA : Ninguno de los comandos anteriores generará ningún resultado, ncurses-termpero eso se debe a que este paquete no instala archivos ejecutables. Sin embargo, los comandos funcionan, intente con un paquete diferente.


Hola terdon, ¿estás seguro de que el comando debería funcionar en aplicaciones no instaladas? cuando lo intento, simplemente ofrece instalarlo. ¿Qué no es tan extraño, ya que el archivo .install se descarga (probablemente) con la aplicación?
Jacob Vlijm

@Jacob sí, acabo de probar con un paquete que sé que no está instalado y apt-fileenumeré el contenido del paquete. Funciona en pruebas de Debian y Ubuntu 13.10.
terdon

Ajá, gracias, tiene sentido, pensé, ya que las dependencias también se muestran en aplicaciones no instaladas.
Jacob Vlijm

4

Puedes usar apt-file:

sudo apt-file update        
apt-file list package_name

3
Si apt-fileno está instalado, puede instalarlo con sudo apt-get install apt-file.
edwin

3

Existe la posibilidad de utilizar su navegador (por lo tanto, no requiere acceso a un sistema APT). Por ejemplo, para listar el contenido del paquete "ncurses-term", simplemente escriba

https://packages.debian.org/wheezy/all/ncurses-term/filelist

en la barra de direcciones de su navegador (reemplace "wheezy" según sea necesario) para Debian o

http://packages.ubuntu.com/saucy/all/ncurses-term/filelist

para Ubuntu (reemplace "descarado" según sea necesario).


Un método interesante Esta lista es para paquetes Debian, entonces: ¿se supone que es igual para cualquier otra distribución como Ubuntu o Kali?
Sopalajo de Arrierez

1
@Sopalajo de Arrierez: Lea con precisión: también publiqué el enlace para el mismo paquete (ncurses-term en este ejemplo) para Ubuntu. La lista de archivos puede ser la misma si una versión específica de Ubuntu tiene la misma versión del paquete que uno de los conjuntos de Debian, pero no necesariamente. Ubuntu, Kali, Aptosid, CrunchBang y todas las demás distribuciones basadas en Debian podrían hacer modificaciones a los paquetes como lo deseen (especialmente archivos como "README" o archivos de configuración para el sistema init).
Michael Kremser

Entiendo, @MichaelKremser. Entonces, como puedo ver, es útil buscar en la web el contenido de un paquete, pero, preferiblemente, debe buscar en la lista oficial de paquetes de su distribución específica.
Sopalajo de Arrierez

1
@Sopalajo de Arrierez: Sí, claro. Si está en Debian Wheezy, use la lista de paquetes para Debian Wheezy, si está en pruebas de Debian, use esa, si está en Ubuntu Precise, tome su lista. Siempre puede haber diferencias, aunque, por ejemplo, Ubuntu toma muchos paquetes de Debian sin modificar. Sin embargo, esto puede cambiar en cualquier momento.
Michael Kremser
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.