Sapevamo già come elencare i pacchetti installati e anche come elencare le dipendenze di un pacchetto in Linux. Oggi vedremo come elencare il contenuto di un pacchetto in Linux. Non importa se il pacchetto è installato o meno. È possibile leggere il contenuto di un pacchetto installato o non installato.
In Linux e Unix, la maggior parte dei programmi di solito non finisce in una singola directory. Quando installi un pacchetto, tutti i file in quel pacchetto vengono sparsi nel filesystem e salvati in percorsi diversi. Di solito, i file eseguibili (ad es. i binari/script) sono archiviati nelle directory '/bin' o '/usr/bin' o '/usr/local/bin', i file di libreria in '/usr/lib', i file di configurazione in '/etc', dati statici in '/usr/share' e così via. Ora troviamo l'elenco dei file in un pacchetto e dove sono effettivamente archiviati in Linux.
Elenca il contenuto di un pacchetto in Linux
Per prima cosa vedremo come leggere il contenuto di un pacchetto in sistemi basati su DEB, ad esempio Ubuntu.
Elenca il contenuto di un pacchetto installato in Ubuntu
Ho già installato Microsoft Teams pacchetto nel mio desktop Ubuntu 20.04.
Per visualizzare i contenuti del pacchetto Microsoft Teams, esegui semplicemente:
$ dpkg -L teams
Risultato di esempio:
/. /usr /usr/bin /usr/bin/teams /usr/share /usr/share/applications /usr/share/applications/teams.desktop /usr/share/pixmaps /usr/share/pixmaps/teams.png /usr/share/teams . . . /usr/share/teams/swiftshader/libEGL.so /usr/share/teams/swiftshader/libGLESv2.so /usr/share/teams/teams /usr/share/teams/v8_context_snapshot.bin
Vedere? L'output sopra mostra i file installati dal pacchetto Teams e la loro posizione nel mio sistema Ubuntu.
Ecco un altro modo per visualizzare il contenuto di un pacchetto installato in Ubuntu:
$ dpkg-query -L teams
Elenca il contenuto di un pacchetto non installato in Ubuntu
Come ho già detto, i comandi precedenti mostrano il contenuto di un pacchetto installato. Cosa succede se il pacchetto non è installato e si desidera leggerne il contenuto? È anche possibile! Puoi scoprire quali file verranno installati da un pacchetto anche prima di installarlo.
Per prima cosa scarica il file .deb. Ho già scaricato il file .deb dell'applicazione Teams. Vai alla posizione in cui hai scaricato il file .deb ed esegui il seguente comando per visualizzarne il contenuto:
$ dpkg --contents teams_1.2.00.32451_amd64.deb
Oppure,
$ dpkg -c teams_1.2.00.32451_amd64.deb
Risultato di esempio:
drwxr-xr-x root/root 0 2019-11-20 20:55 ./ drwxr-xr-x root/root 0 2019-11-20 20:54 ./usr/ drwxr-xr-x root/root 0 2019-11-20 20:54 ./usr/bin/ -rwxr-xr-x root/root 286 2019-11-20 20:54 ./usr/bin/teams drwxr-xr-x root/root 0 2019-11-20 20:54 ./usr/share/ drwxr-xr-x root/root 0 2019-11-20 20:54 ./usr/share/applications/ -rw-r--r-- root/root 352 2019-11-20 20:54 ./usr/share/applications/teams.desktop . . . -rwxr-xr-x root/root 286264 2019-11-20 20:54 ./usr/share/teams/swiftshader/libEGL.so -rwxr-xr-x root/root 2677296 2019-11-20 20:54 ./usr/share/teams/swiftshader/libGLESv2.so -rwxr-xr-x root/root 114944384 2019-11-20 20:54 ./usr/share/teams/teams -rw-r--r-- root/root 1040824 2019-11-20 20:54 ./usr/share/teams/v8_context_snapshot.bin
In alternativa, puoi farlo usando apt-file anche lo strumento.
Installa apt-file come mostrato di seguito se non è già installato:
$ sudo apt 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
Ora elenca il contenuto di un pacchetto installato, ad esempio vim, come di seguito:
$ apt-file list vim
Risultato di esempio:
vim: /usr/bin/vim.basic vim: /usr/share/bug/vim/presubj vim: /usr/share/bug/vim/script vim: /usr/share/doc/vim/NEWS.Debian.gz vim: /usr/share/doc/vim/changelog.Debian.gz vim: /usr/share/doc/vim/copyright vim: /usr/share/lintian/overrides/vim
Lo strumento apt-file viene utilizzato anche per cercare i pacchetti che forniscono un file specifico. Ad esempio, trova il pacchetto che fornisce alisp.h file con comando:
$ apt-file find alisp.h
Oppure,
$ apt-file search alisp.h
Risultato di esempio:
libasound2-dev: /usr/include/alsa/alisp.h
Come puoi vedere, il pacchetto "libasound2-dev" fornisce il file alisp.h.
Per maggiori dettagli, fare riferimento al seguente link.
- Come trovare il pacchetto che fornisce un file specifico in Linux
Questi sono alcuni modi per visualizzare il contenuto di un pacchetto nei sistemi basati su DEB. Ora vediamo come elencare il contenuto del pacchetto nei sistemi basati su RPM, ad esempio CentOS.
Elenca il contenuto di un pacchetto installato/non installato in CentOS
Nei sistemi basati su RPM come CentOS, possiamo trovare il contenuto di un pacchetto usando "repoquery" comando.
Il pacchetto "yum-utils" fornisce il comando repoquery, quindi installiamolo usando il comando:
$ sudo yum install yum-utils
Ora scopriamo il contenuto del pacchetto dell'editor "nano" usando il comando:
# repoquery --installed --list nano
Oppure,
# repoquery --list nano
Oppure,
# repoquery -l nano
Risultato di esempio:
Last metadata expiration check: 0:03:02 ago on Tuesday 16 June 2020 06:01:46 PM IST. /etc/nanorc /usr/bin/nano /usr/bin/rnano /usr/lib/.build-id /usr/lib/.build-id/d3 . . . /usr/share/nano/tcl.nanorc /usr/share/nano/tex.nanorc /usr/share/nano/texinfo.nanorc /usr/share/nano/xml.nanorc
Allo stesso modo puoi elencare il contenuto di un file non installato. Vai alla posizione in cui hai scaricato il file rpm e visualizza il suo contenuto come di seguito:
# repoquery --list nano-2.9.8-1.el8.x86_64.rpm
Lettura correlata:
- Come scaricare un pacchetto RPM con tutte le dipendenze in CentOS
Spero che questo aiuti.