¿Comando para encontrar el paquete fuente de un binario?


33

Sé que hay un whichcomando que hace eco del nombre completo de un binario (por ejemplo which sh). Sin embargo, estoy bastante seguro de que hay un comando que hace eco del paquete que proporciona un binario particular. ¿Hay tal comando? Si es así, ¿qué es? Me gustaría poder ejecutar esto:

commandName ls

y obten

coreutils

por ejemplo.

Respuestas:


36

Supongo que está buscando el dpkg -Scomando (también vea las opciones de uso frecuente para dpkg ).


44
¡Gracias! dpkg -S `which COMMANDHERE`trabajó para mi.
Delan Azabani

Gentoo: qfile <nombre>
Sergei

dpkg -Sencuentra el nombre del paquete binario, que puede diferir del nombre del paquete fuente (código).
Tino

Solo para completar, -Ses la forma abreviada de la --searchopción, que en realidad es una opción para el dpkg-querycomando (pero dpkgtambién funciona)
waldyrious

10

Si desea encontrar archivos en un paquete que no ha instalado, use apt-file

apt-get install -y apt-file
apt-file update

Entonces, para encontrar algo:

apt-file search /usr/bin/file

o

apt-find search file

Donde "archivo" es el nombre de lo que esté buscando.

Si no tiene ganas de pasar por esto en todos los sistemas Debian, puede usar este script:

#!/bin/bash
which apt-get >/dev/null || { echo apt-get not found >&2; exit 1; }
which apt-file >/dev/null || { apt-get install -y apt-file;  apt-file update; }
unset i; IFS=$'\x0a'; select i in $( apt-file search "/$@" ); do 
    test -n "$i" || break; apt-get install "${i%% *}"; done

Entonces lo agité, pero parece funcionar bien.

Nota: "dpkg -S" solo encuentra cosas que ya has instalado.


3
Usar el -yparámetro es peligroso, podría decir que sí a cualquier cantidad de cosas. En el script puede estar bien, pero el primer comando realmente debería leer apt-get install apt-filesin el, -yya que no puede saber cómo se ve el sistema del usuario.
jmiserez
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.