Pregunta bastante simple: ¿hay algún comando de shell (o método GUI) que pueda usar, dada la ruta a un archivo en mi sistema, me dice qué paquete lo puso allí? Suponiendo que el archivo en realidad proviene de un paquete, es decir.
Pregunta adicional: ¿qué pasa si es un archivo que no está instalado en mi sistema? ¿Existe, por ejemplo, un sitio web que me permita buscar un archivo y ver qué paquetes, si los hay, lo proporcionan?
package-management
David Z
fuente
fuente
Provides:
mecanismo. Más detalladamente, un comando comomailx
osendmail
no está incluido como binario en ningún paquete; en cambio, varios paquetes instalan sus propios binarios y luego hacen que algunos de ellos estén disponibles con un nombre "canónico" a través de/etc/alternatives
. Consulte también askubuntu.com/questions/366135/…Respuestas:
Puede usar el
dpkg
comando para averiguar qué paquete instalado posee un archivo:De
man dpkg
:Ejemplo:
Puede buscar con una ruta completa o solo con el nombre del archivo.
Si desea buscar archivos que aún no están instalados en su computadora, puede usar la Búsqueda de paquetes de Ubuntu
fuente
which
para encontrar el programa:dpkg -S `which firefox`
dlocate
puede no hacer el trabajo, si la base de datos de dlocate no está actualizada. Tienes que llamarsudo update-dlocatedb
para actualizarlo.dpkg
la ruta exacta no devuelve nada (por ejemplodpkg /usr/bin/java
), intente solo el nombre del ejecutable (por ejemplodpkg java
).realpath
para resolver los enlaces simbólicos, como esto:dpkg -S $(realpath $(which <command>))
.El
apt-file
comando puede hacer esto por usted desde la línea de comando. Lo uso con frecuencia cuando construyo paquetes desde la fuente. Para los archivos proporcionados por paquetes que ya están instalados en su sistema,apt-cache
es otra opción.Para instalar
apt-file
, haga:Luego, debe actualizar su base de datos:
Y, finalmente, busque el archivo:
Sin embargo, una forma mucho más amigable es usar el sitio web de Búsqueda de paquetes de Ubuntu . Tienen la opción de "buscar el contenido de los paquetes" para un nombre de archivo específico.
fuente
apt-file
a menudo encuentra falsos positivos, es decir, paquetes que no están instalados. Por supuesto, esta respuesta es excelente para la "pregunta extra".apt-file search <>
es el análogo más cercano adnf/yum whatprovides <>
.apt-file find
como haceapt-find
mucho tiempo y es realmente útil! Por cierto, las últimas versiones requieren root paraapt-file update
.También hay apt-file para buscar archivos en paquetes que no están instalados. Por ejemplo:
fuente
Puede buscar el contenido de los paquetes incluidos en las diferentes versiones de Ubuntu en el sitio web de Paquetes de Ubuntu . Mire debajo del encabezado " Buscar el contenido de los paquetes ".
Por ejemplo, aquí están los resultados de búsqueda para libnss3.so en lucid (10.04):
http://packages.ubuntu.com/search?searchon=contents&keywords=libnss3.so&mode=exactfilename&suite=lucid&arch=any
fuente
Te refieres a qué paquete y no a qué aplicación. La aplicación es su administrador de paquetes, por ejemplo
Software Center
.Utilizando
dpkg
:Ejemplo
Utilizando
apt-file
:o también posible:
Ejemplo
O en línea aquí , en la sección
Search the contents of packages
.Ejemplo
fuente
Esta es una extensión de la excelente respuesta de Alexx Roche . Traté de hacer una edición de esa respuesta, pero fue rechazada (aunque no por Alexx)
Intentaba localizar lo que estaba instalado
which
en mi sistema. Después de un poco de trabajo creé/usr/local/bin/apt-whatprovides
Aunque para la mayoría de las COSAS que están instaladas puedes usar:
Para las COSAS que no están instaladas, puede usar:
El
apt-whatprovides
script funciona para archivos que están y no están en su sistema. Por ejemplo, mi sistema carecíadig
pero teníaping
esto, lo que resultó:Observe que
Searching for
es una ruta completa paraping
(instalado) y solo el nombre binario paradig
no instalado. Esto me ayudó a descubrir que necesitaba instalardnsutils
sin tener que ir a buscar https://packages.ubuntu.com/#search_contentsfuente
Intentaba localizar lo que estaba instalado
which
en mi sistema. Después de un poco de trabajo creé apt-whatprovidesAunque para la mayoría de las COSAS puedes usar
fuente
Una razón por la que podría tener que hacer esto es si está compilando software que ya tiene un paquete ubuntu, puede ejecutarlo
apt-get build-dep $PACKAGENAME
. Eso instalará todos los paquetes que necesita compilar$PACKAGENAME
.fuente