¿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.

Delan Azabani
fuente

Respuestas:

36

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

nik
fuente
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.

Orwellophile
fuente
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