Questo comando può elencare solo i contenuti dei pacchetti installati,
dpkg -L PACKAGENAME
ma come elencare i contenuti di un pacchetto non installato, per visualizzare in anteprima / esaminare il pacchetto?
Questo comando può elencare solo i contenuti dei pacchetti installati,
dpkg -L PACKAGENAME
ma come elencare i contenuti di un pacchetto non installato, per visualizzare in anteprima / esaminare il pacchetto?
Risposte:
dpkg -c
(o --contents
) elenca il contenuto di un file del pacchetto .deb (è un front-end per dpkg-deb
.)
dpkg -c package_file.deb
Per lavorare direttamente con i nomi dei pacchetti anziché con i file dei pacchetti, è possibile utilizzare apt-file
. (Potrebbe essere necessario installare apt-file
prima il pacchetto.)
sudo apt-file update
apt-file list package_name
Come indicato nel primo commento, apt-file elenca i contenuti per i pacchetti nei repository Apt già configurati. È irrilevante se un determinato pacchetto è installato o meno.
sudo apt-file update
) ed elenca solo i contenuti per i pacchetti nei repository Apt già configurati.
dpkg -c
simpatico!
.deb
file scaricato separatamente. La domanda originale è ambigua.
Usa --contents
invece di -L
:
dpkg --contents PACKAGENAME
Se usato in questo modo, dpkg
funge da front-end per dpkg-deb
, quindi usa man dpkg-deb
per vedere tutte le opzioni.
È inoltre possibile utilizzare un browser di archivio per visualizzare il contenuto del pacchetto.
dpkg --contents google-chrome-stable_current_amd64.deb
ed ha elencato tutti i file che installerà (principalmente a /opt/google/chrome
), nessuno dei quali è attualmente installato sul mio sistema mentre lo scrivo. (Sto eseguendo Xubuntu 11.10 se questo è importante.)
dpkg --contents
ti permetterà di guardare il pacchetto disinstallato. Se .deb non è ancora sul tuo sistema, fallo
apt-get --download-only install pkgname
Il pacchetto verrà scaricato /var/cache/apt/archives
ma non installato.
Il modo migliore sarebbe quello di navigare direttamente nel repository dei pacchetti:
http://packages.debian.org/[distro name]/all/[package name]/filelist
Esempio:
http://packages.debian.org/wheezy/all/transmission-common/filelist
lynx -dump -nolist http://packages.debian.org/wheezy/all/transmission-common/filelist | grep ^/
(Purché sia stato lynx
installato).
Ho preso l'idea http di @ baldoz e l'ho generalizzata per Ubuntu e Debian, l' ho aggiunta un po ' sed
e l'ho avvolta in una funzione bash one-liner:
function deb_list () { curl -s $(lsb_release -si | sed -e 's Ubuntu https://packages.ubuntu.com ' -e 's Debian https://packages.debian.org ')/$(lsb_release -sc)/all/$1/filelist | sed -n -e '/<pre>/,/<\/pre>/p' | sed -e 's/<[^>]\+>//g' -e '/^$/d'; }
Uso:
$ deb_list curl
/usr/bin/curl
/usr/share/doc/curl/changelog.Debian.gz
/usr/share/doc/curl/copyright
/usr/share/doc/curl/NEWS.Debian.gz
/usr/share/man/man1/curl.1.gz
Stessa funzione su più righe:
function deb_list () {
curl -s $(lsb_release -si \
| sed -e 's Ubuntu https://packages.ubuntu.com ' \
-e 's Debian https://packages.debian.org '
)/$(lsb_release -sc)/all/$1/filelist \
| sed -n -e '/<pre>/,/<\/pre>/p' \
| sed -e 's/<[^>]\+>//g' -e '/^$/d';
}
Ha spiegato:
https://packages.ubuntu.com
ohttps://packages.debian.org
https://packages.ubuntu.com/trusty/all/curl/filelist
<pre>
e </pre>
tag); il secondo rimuove qualsiasi tag html; terzo rimuove eventuali righe vuote.Nota: non cerca PPA, repository di fonti apt alternative e interroga solo pacchetti ufficiali disponibili per il rilascio di debian / ubuntu in esecuzione.
Per tutte quelle persone che potrebbero ancora cercare su Google questo problema a gennaio 2017, puoi avere cose interessanti con le ultime versioni di apt e dpkg in Debian 8.5 senza scaricare nulla.
Elenco dei contenuti del file Deb senza download:
Individua innanzitutto l'URL completo del file deb:
root@debian:apt-get --print-uris download yade
'http://httpredir.debian.org/debian/pool/main/y/yade/yade_2016.06a-7_amd64.deb' yade_2016.06a-7_amd64.deb 1621148 SHA256:26c0d84484a92ae9c2828edaa63243eb764378d79191149970926aa3ec40cdd4
PS: --print-uris switch stampa l'URL del pacchetto deb ma deb non viene scaricato.
Quindi visualizzare i contenuti del pacchetto deb senza scaricarlo:
root@debian:curl -sL -o- "http://httpredir.debian.org/debian/pool/main/y/yade/yade_2016.06a-7_amd64.deb" |dpkg-deb -c /dev/stdin
drwxr-xr-x root/root 0 2016-12-10 22:18 ./
drwxr-xr-x root/root 0 2016-12-10 22:18 ./usr/
drwxr-xr-x root/root 0 2016-12-10 22:18 ./usr/bin/
-rwxr-xr-x root/root 13184 2016-12-10 22:18 ./usr/bin/yade
.........................more files listed bellow ......................
PS: lo stesso risultato può essere raggiunto con
root@debian:dpkg -c <(curl -sL -o- "http://httpredir.debian.org/debian/pool/main/y/yade/yade_2016.06a-7_amd64.deb")
Estrai un file dal pacchetto deb precedente, senza scaricare.
Ad esempio, vogliamo leggere la pagina man del pacchetto yade senza installare questo pacchetto e senza nemmeno scaricare il pacchetto deb.
Il nome file della pagina man all'interno del pacchetto deb come consigliato da dpkg -c
is./usr/share/man/man1/yade.1.gz
Per leggere la pagina man al volo:
root@debian:curl -sL -o- "http://httpredir.debian.org/debian/pool/main/y/yade/yade_2016.06a-7_amd64.deb" |dpkg-deb --fsys-tarfile /dev/stdin |tar -xO ./usr/share/man/man1/yade.1.gz |man /dev/stdin
la pagina man viene visualizzata correttamente usando l'applicazione man.
PS: sopra le pipe non funziona con il comando ar.
root@debian:apt --version --> apt 1.4~beta2 (amd64)
root@debian:dpkg --version --> Debian 'dpkg' package management program version 1.18.18 (amd64).
root@debian:man --version --> man 2.7.6.1
root@debian:tar --version --> tar (GNU tar) 1.29
Sembra che non sia possibile prima di installarlo prima o estrarre l'elenco dal .deb
file.
Prova il seguente comando:
dpkg --contents <(curl -s $(apt-get install --yes --no-download --reinstall --print-uris language-pack-en | tail -n1 | grep -o "http[^']\+"))
Cambia language-pack-en
con il nome del pacchetto.
In pratica legge i .deb
file estratti tramite curl
ed è eseguito dpkg --contents FILE
su di esso.
Puoi anche controllare il contenuto senza scaricare il file del pacchetto.
Quindi, se conosci l'URL del .deb
file, il seguente comando shell elencherà tutti i file del pacchetto:
dpkg -c <(curl -sL "http://httpredir.debian.org/debian/pool/main/a/avis/avis_1.2.2-4_all.deb")
Parametri ricciolo: -s
- silenzioso, -L
- segui i collegamenti spostati.
Se non conosci l'URL, vai a: apt --print-uris
ad es
apt --print-uris install avis | grep avis