Este breve tutorial explica algunas formas diferentes de encontrar el paquete que proporciona un archivo específico en Linux. Esto podría ser útil cuando compila e instala manualmente un paquete. Cuando está compilando un paquete desde el origen, es posible que reciba un error similar a "No hay regla para hacer que el objetivo sea '
Encuentre el paquete que proporciona un archivo específico en Linux
Arch Linux, Antergos, Manjaro Linux:
En Arch, hay una pequeña herramienta de línea de comandos llamada pkgfile , que se utiliza para buscar archivos de paquetes.
Pkgfile viene preinstalado con Arch Linux. Si no es así, puede instalar usando el siguiente comando:
$ sudo pacman -S pkgfile
Luego, ejecute el siguiente comando para sincronizar con la base de datos pkgfile:
$ sudo pkgfile -u
Ahora, puede encontrar el paquete que proporciona un archivo específico, digamos, por ejemplo, alisp.h , usando el comando:
$ pkgfile alisp.h extra/alsa-lib
Como puede ver en el resultado anterior, alsa-lib el paquete proporciona alisp.h expediente. Y el paquete está disponible desde extra repositorio. Ahora puede instalar este paquete como se muestra a continuación.
$ sudo pacman -S alsa-lib
Para enumerar todos los archivos proporcionados por el paquete alsa-lib, ejecute:
$ pkgfile -l alsa-lib
RHEL, CentOS, Fedora:
En sistemas basados en YUM como RHEL y sus clones como CentOS, Scientific Linux, puede encontrar el paquete que posee un archivo en particular, usando el siguiente comando:
$ yum whatprovides '*filename'
En Fedora, use el siguiente comando en su lugar:
$ dnf provides '*filename'
Si el archivo ya está disponible en su sistema, diga por ejemplo /bin/ls , luego puede encontrar el paquete que posee el archivo usando el comando:
# rpm -qf /bin/ls coreutils-8.22-18.el7.x86_64
También puedes usar el repoquery comando de la siguiente manera:
$ repoquery -f /bin/ls
Si el comando repoquery no está disponible en su sistema, instale yum-utils paquete.
$ sudo yum install yum-utils
O,
$ sudo dnf install yum-utils
Debian, Ubuntu, Linux Mint:
En cualquier sistema basado en DEB, puede encontrar el paquete que proporciona un determinado archivo usando apt-file herramienta.
Instale el archivo apt como se muestra a continuación si aún no está instalado:
$ sudo apt-get install apt-file
Si acaba de instalar apt-file, es posible que la memoria caché de todo el sistema esté vacía. Debe ejecutar 'apt-file update' como root para actualizar el caché. También puede ejecutar 'apt-file update' como usuario normal para usar un caché en el directorio de inicio del usuario.
Actualicemos la caché de la base de datos usando el comando:
$ sudo apt-file update
Y luego busque los paquetes que contienen un archivo específico, digamos alisp.h , con comando:
$ apt-file find alisp.h
O,
$ apt-file search alisp.h
La muestra sería:
libasound2-dev: /usr/include/alsa/alisp.h
Bueno, libasound2-dev ¡está! Puede instalar este paquete usando el comando:
$ sudo apt-get install libasound2-dev
Si ya tiene el archivo y solo quiere saber a qué paquete pertenece, puede usar dpkg comando como se muestra a continuación.
$ dpkg -S $(which alisp.h)
O,
$ dpkg -S `which alisp.h`
Si conoce la ruta completa del archivo, diga, por ejemplo, /bin/ls , puedes buscar los paquetes a los que pertenece usando el siguiente comando:
$ dpkg -S /bin/ls coreutils: /bin/ls
SUSE/openSUSE:
En SUSE y openSUSE, ejecute el siguiente comando para averiguar a qué paquete pertenece un determinado archivo.
$ zypper wp alisp.h
O,
$ zypper se --provides --match-exact alisp.h
Lectura sugerida:
- Cómo enumerar los paquetes instalados desde un determinado repositorio en Linux
- Cómo encontrar dependencias para un paquete en particular en CentOS
Y eso es todo. Espero que esto ayude. Si conoce otros métodos para encontrar el paquete que contiene un archivo en particular, no dude en hacérnoslo saber en la sección de comentarios a continuación. Comprobaré y actualizaré la guía en consecuencia.