¿Cómo puedo saber qué paquete posee un archivo?


Respuestas:


40

Hay varias utilidades en Debian que realizan esta tarea; comprobar esta página para una descripción. Mencionaré dos de ellos, apt-file y dlocate.

apt-file busca su caché interno, lo que le permite no instalar todos los paquetes que desea buscar. A continuación encontrará una guía más detallada.

dlocate es una alternativa rápida a dpkg -L (el comando que enumera el contenido del paquete), y como tal, solo busca los paquetes instalados. La búsqueda es realizada por dlocate -S file.name.

También puedes buscar paquetes en línea usando packages.debian.org servidor (el Buscar el contenido de los paquetes. sección).


Instalación y uso apt-file

Es una buena idea actualizar primero:

sudo apt-get update

Mira qué apt-file es para:

apt-cache show apt-file

Instalarlo:

sudo apt-get install apt-file

Leer datos de repositorios (esto funciona también sin sudo pero crea el caché del usuario entonces; con sudo el caché es de todo el sistema):

sudo apt-file update

Realizar búsqueda En este ejemplo queremos saber en qué paquete. xrandr ejecutable es:

apt-file search xrandr

Enumera muchos paquetes con unxrandr, lxrandr.mo o source_lxrandr.py. No es muy útil en nuestro caso. Búsqueda más inteligente:

apt-file search -x /xrandr$

( $ denota el final de la línea). Ejemplo de salida:

bash-completion: /usr/share/bash-completion/completions/xrandr
x11-xserver-utils: /usr/bin/xrandr

El primer resultado no parece ejecutable, el segundo sí lo hace. Podemos investigar más a fondo. Correr:

apt-cache show x11-xserver-utils

¡Bingo! Este es el paquete.


El primer enlace en esta respuesta ( debianhelp.co.uk/findfile.htm ) parece estar desaparecido ahora.
rogpeppe

100
user@host:~$ dpkg-query -S /bin/bash 
bash: /bin/bash

Donde bash es el nombre del paquete.


1
¡Esta respuesta es mucho mejor que la aceptada!
Bex

37

Otra alternativa:

$ dpkg -S /bin/bash
bash: /bin/bash

Al menos en mi Ubuntu, ambos parecen estar en el dpkg paquete, por lo que no hay una ventaja real para cualquier específico ...


10

Instalacion de archivos generados. no será encontrado por dpkg -S, como se menciona en: https://askubuntu.com/a/667227/52975

Por ejemplo, /bin/nc aparece cuando instala el paquete netcat-openbsd.

Pero sobre:

dpkg -S /bin/nc

obtenemos dpkg-query: no path found matching pattern /bin/nc.

Esto sucede porque /bin/nc es generado por el update-alternatives llamar al script postinst que se ejecuta después de la instalación.

Funciona así porque otra versión de /bin/nc es proporcionado por el netcat-traditional paquete.

No creo que haya una forma general de encontrar tales archivos generados. En el caso específico de enlaces simbólicos alternativos, solo podemos seguir el enlace con readlink -f:

dpkg -S "$(readlink -f /bin/nc)"

2

Al no estar familiarizado con Debian, me sorprendió cuando intenté esto:

kearnsp@xubuntuvb:~$ dpkg -S /usr/bin/vncviewer
dpkg-query: no path found matching pattern /usr/bin/vncviewer
kearnsp@xubuntuvb:~$ 

Un poco de investigación y encontré el paquete:

kearnsp@xubuntuvb:~$ ls -l /usr/bin/vncviewer
lrwxrwxrwx 1 root root 27 May 28 15:49 /usr/bin/vncviewer -> /etc/alternatives/vncviewer
kearnsp@xubuntuvb:~$ ls -l /etc/alternatives/vncviewer
lrwxrwxrwx 1 root root 20 May 28 15:49 /etc/alternatives/vncviewer -> /usr/bin/xvnc4viewer
kearnsp@xubuntuvb:~$ dpkg -S /usr/bin/xvnc4viewer
xvnc4viewer: /usr/bin/xvnc4viewer
kearnsp@xubuntuvb:~$ 
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.