Questo breve tutorial spiega alcuni modi diversi per trovare il pacchetto che fornisce un file specifico in Linux. Questo potrebbe essere utile quando si compila e si installa manualmente un pacchetto. Quando stai compilando un pacchetto dal sorgente, è possibile che tu riceva un messaggio di errore simile a "Nessuna regola per creare un target '
Trova il pacchetto che fornisce un file specifico in Linux
Arch Linux, Antergos, Manjaro Linux:
Su Arch-based, c'è un piccolo strumento da riga di comando chiamato pkgfile , che viene utilizzato per cercare file dai pacchetti.
Pkgfile viene preinstallato con Arch Linux. In caso contrario, puoi installare utilizzando il seguente comando:
$ sudo pacman -S pkgfile
Quindi, esegui il comando seguente per sincronizzare con il database pkgfile:
$ sudo pkgfile -u
Ora puoi trovare il pacchetto che fornisce un file specifico, ad esempio alisp.h , utilizzando il comando:
$ pkgfile alisp.h extra/alsa-lib
Come puoi vedere nell'output sopra, alsa-lib il pacchetto fornisce alisp.h file. E il pacchetto è disponibile da extra deposito. Ora puoi installare questo pacchetto come mostrato di seguito.
$ sudo pacman -S alsa-lib
Per elencare tutti i file forniti dal pacchetto alsa-lib, eseguire:
$ pkgfile -l alsa-lib
RHEL, CentOS, Fedora:
Nei sistemi basati su YUM come RHEL e i suoi cloni come CentOS, Scientific Linux, puoi trovare il pacchetto che possiede un particolare file, usando il seguente comando:
$ yum whatprovides '*filename'
Su Fedora, usa invece il seguente comando:
$ dnf provides '*filename'
Se il file è già disponibile nel tuo sistema, ad esempio /bin/ls , puoi quindi trovare il pacchetto che possiede il file usando il comando:
# rpm -qf /bin/ls coreutils-8.22-18.el7.x86_64
Puoi anche utilizzare il repoquery comando come segue:
$ repoquery -f /bin/ls
Se il comando repoquery non è disponibile nel tuo sistema, installa yum-utils pacchetto.
$ sudo yum install yum-utils
Oppure,
$ sudo dnf install yum-utils
Debian, Ubuntu, Linux Mint:
In qualsiasi sistema basato su DEB, puoi trovare il pacchetto che fornisce un determinato file utilizzando apt-file strumento.
Installa apt-file come mostrato di seguito se non è già installato:
$ sudo apt-get install apt-file
Se hai appena installato apt-file, la cache a livello di sistema potrebbe essere vuota. È necessario eseguire 'apt-file update' come root per aggiornare la cache. Puoi anche eseguire 'apt-file update' come utente normale per utilizzare una cache nella directory home dell'utente.
Aggiorniamo la cache del database usando il comando:
$ sudo apt-file update
Quindi cerca i pacchetti che contengono un file specifico, ad esempio alisp.h , con comando:
$ apt-file find alisp.h
Oppure,
$ apt-file search alisp.h
Il campione sarebbe:
libasound2-dev: /usr/include/alsa/alisp.h
Bene, libasound2-dev è! Puoi installare questo pacchetto usando il comando:
$ sudo apt-get install libasound2-dev
Se hai già il file e volevi solo sapere a quale pacchetto appartiene, puoi utilizzare dpkg comando come mostrato di seguito.
$ dpkg -S $(which alisp.h)
Oppure,
$ dpkg -S `which alisp.h`
Se conosci il percorso completo del file, ad esempio /bin/ls , puoi cercare i pacchetti a cui appartiene utilizzando il seguente comando:
$ dpkg -S /bin/ls coreutils: /bin/ls
SUSE / openSUSE:
Su SUSE e openSUSE, esegui il comando seguente per scoprire a quale pacchetto appartiene un determinato file.
$ zypper wp alisp.h
Oppure,
$ zypper se --provides --match-exact alisp.h
Lettura consigliata:
- Come elencare i pacchetti installati da un determinato repository in Linux
- Come trovare le dipendenze per un particolare pacchetto in CentOS
E questo è tutto. Spero questo sia di aiuto. Se conosci altri metodi da trovare per trovare il pacchetto che contiene un file particolare, non esitare a farcelo sapere nella sezione commenti qui sotto. Controllerò e aggiornerò la guida di conseguenza.