Pregunta ¿A qué paquete pertenece un archivo en Ubuntu / Debian?


Frecuentemente me falta un programa, página de manual u otro archivo cuando trabajo en mi sistema Ubuntu 8.04. ¿Hay alguna manera simple de buscar qué paquete contiene un archivo determinado (ya esté instalado o no)? Tal vez alguna opción oscura para apt o dpkg?


258


origen


Lo mismo en Ubuntu: askubuntu.com/questions/481/... - Ciro Santilli 新疆改造中心 六四事件 法轮功
dpkg -S /path/to/filesi tienes el paquete instalado - Zaz


Respuestas:


apt-file search filename

o

apt-file search /path/to/file


Instalar apt-file, utilizar:

sudo apt-get install apt-file

Deberá actualizar su base de datos para poder usarla:

sudo apt-file update

210



FYI: apt-file parece depender de Contents-amd64.gz proporcionado por los repositorios. Y no todos los repositorios de terceros proporcionan este archivo. - Jokester
A mi no me sirvió. Actualicé la base de datos pero no devuelve nada. dpkg -S funciona como se describe a continuación. - Northys


(Debian / Ubuntu) Descubre a qué paquete pertenece un archivo:

dpkg -S /usr/bin/ls

'dpkg -S' solo coincide con la cadena que   suministrarlo, así que solo use 'ls' como   argumento coincide con cualquier archivo de cualquier   paquete que tiene 'ls' en cualquier parte del   nombre del archivo. Por lo general, es una buena idea   usar una ruta absoluta Puedes ver   en el segundo ejemplo que 12 mil   archivos que son conocidos por dpkg coinciden con el   cadena desnuda 'ls'.


349



Eso es solo si los archivos ya están instalados - John T
En contraste con apt-file, esto también encuentra el paquete en un archivo si se instaló manualmente a través de dpkg -i! - tanius
Si lo consigues dpkg-query: no se encontró camino que coincida con el patrón  prueba esto: dpkg -S "$(readlink -fn "$(which rename)")". - Pablo Bianchi
Extraño, esto no funcionó para mí: dpkg-query: no path found matching pattern /usr/bin/java, aunque hay un archivo en /usr/bin/java - nnyby


packages.debian.org es lo que siempre uso para lograr esta tarea. Es superior a apt-file porque también puede encontrar partes de nombres de archivo. También está vinculado a la lista de paquetes principales que enumerará descripciones, errores, etc. En definitiva, un buen sitio web. No es tan útil desde la línea de comandos, pero sigue siendo bastante útil.

Por velocidad, marqué la url:

http://packages.debian.org/search?searchon=contents&keywords=%s&mode=filename&suite=unstable&arch=any

en Firefox, y se agregó "debfind" como palabra clave (haga clic en "más" en el administrador de marcadores con el hilighted), así que puedo simplemente escribir "debfind" y funcionará. Puede cambiar 'suite' de inestable a estable o probar si lo desea, para otras versiones de la distribución.


16



Sin embargo, no funciona con repositorios personalizados. - Ctrl-C
Mala elección en lo que respecta a la automatización. - Alexander Shcheblikin


También puedes usar dlocate. De la página man;

$ dlocate [ PATTERN ]
List all records where either the package name or the filename matches PATTERN.

11



dlocate también es mi método favorito, muy confiable. - Avio
@Avio dlocate no encuentra un paquete recientemente instalado a menos que ejecute sudo update-dlocatedb primero. El comando se ejecuta automáticamente diariamente en /etc/cron.daily/dlocate - jarno


Encontré a Wajig ...

wajig whichpackage /path/to/file 

p.ej.

wajig whichpackage /etc/apt/sources.list

Wajig es una útil herramienta de consola o línea de comandos que engloba todas las apt-get, dpkg bondad que nunca quisiste aprender. .

Para instalar Wajig use:

apt-get install wajig

Ese comando 'whichpackage' depende de apt-file

aún necesitará actualizar su base de datos para poder usarla: - Todavía no sé si la actualización de wajig whixh hace una actualización de apt-get también actualiza el caché de archivos, pero espero que sí.

sudo wajig update

sudo apt-file update

(y Super Cow, Easter egss?!)


4





Similar a la respuesta de Jamuraa para Debian, también puedes ir a http://packages.ubuntu.com/ para Ubuntu. Tendrás que desplazarte hacia abajo un poco para encontrar el "Buscar el contenido de los paquetes" cuadro de búsqueda donde puede ingresar la ruta de un archivo.


2



Ahora si solo Raspbian también tuviera uno :) - XTL


Intenta buscar archivos usando http://www.kodkast.com/applications/find-which-package-file-belongs-to

Esta es una aplicación para buscar archivos que están contenidos en diferentes paquetes de rpms / linux, y es muy útil cuando ni siquiera tiene las rpm instaladas en su máquina.


0



Votación negativa: el enlace está roto y el enlace parece ser para paquetes RPM en primer lugar. - tripleee


El paquete de comando no encontrado le da pistas sobre los posibles comandos y el nombre del paquete Debian. Funciona escribiendo el comando en el shell bash y mirando su resultado.

Por ejemplo, si se conoce el nombre del comando:

zer@ivy:~ 10:45 $ zsh5
The program 'zsh5' is currently not installed.  To run 'zsh5' please ask
your administrator to install the package 'zsh'
zsh5: command not found

y si el comando no se conoce, algunas suposiciones se aplican:

zer@ivy:~ 09:46 $ zsh
No command 'zsh' found, did you mean:
 Command 'lsh' from package 'lsh-client' (main)
 Command 'osh' from package 'omake' (main)
 Command 'ysh' from package 'libyaml-shell-perl' (main)
 Command 'ssh' from package 'openssh-client' (main)
 Command 'vsh' from package 'crystalspace' (main)
 Command 'dsh' from package 'dsh' (main)
 Command 'ash' from package 'ash' (main)
 Command 'msh' from package 'nmh' (main)
 Command 'zssh' from package 'zssh' (main)
 Command 'qsh' from package 'gridengine-client' (main)
 Command 'sh' from package 'dash' (main)
 Command 'bsh' from package 'bsh' (main)
zsh: command not found

0



Sin embargo, esto no funciona para archivos arbitrarios, como el OP solicitado. - Michael Kjörling
Este es un consejo problemático si el programa hace cosas perjudiciales e IS está instalado. Añadiendo -h o --help al final ayudaría un poco. Si agrega -h al final haría esto lo suficientemente seguro como lo recomendaría, pero aún así no es una buena forma de lograr lo que pide el PO. - Dr Beco