2009-12-14 06:49:35 +0000 2009-12-14 06:49:35 +0000
295
295

Come elencare i file di un pacchetto Debian senza installare

Questo comando può elencare solo il contenuto dei pacchetti installati,

dpkg -L PACKAGENAME

ma come elencare il contenuto di un pacchetto non installato, per visualizzare in anteprima/esaminare il pacchetto?

Odpowiedzi (8)

359
359
359
2009-12-14 15:42:54 +0000

dpkg -c (o --contents) elenca il contenuto di un file di pacchetto .deb (è un front-end di dpkg-deb.)

dpkg -c package_file.deb
``` ```
sudo apt-file update        
apt-file list package_name

Per lavorare direttamente con i nomi dei pacchetti piuttosto che con i file di pacchetto, si può usare apt-file. (Potrebbe essere necessario installare prima il pacchetto apt-file.)

&001 &001

Come indicato nel primo commento, apt-file elenca il contenuto dei pacchetti nei repository Apt già configurati. È irrilevante se un particolare pacchetto è o non è installato.

58
58
58
2009-12-14 08:14:19 +0000

Utilizzare --contents invece di -L:

dpkg --contents PACKAGENAME
``` &001 


Quando viene utilizzato in questo modo, `dpkg` funge da front-end a `dpkg-deb`, quindi utilizzare `man dpkg-deb` per visualizzare tutte le opzioni. 


È inoltre possibile utilizzare un browser di archivio per visualizzare il contenuto del pacchetto.
23
23
23
2009-12-14 14:34:45 +0000

dpkg --contents vi permetterà di dare un'occhiata al pacchetto non installato. Se il .deb non è ancora presente sul vostro sistema, fate

apt-get --download-only install pkgname

Il pacchetto verrà scaricato su /var/cache/apt/archives ma non installato.

15
15
15
2013-06-01 13:57:56 +0000

Il modo migliore sarebbe quello di sfogliare direttamente il repository dei pacchetti:

http://packages.debian.org/[distro name]/all/[package name]/filelist

Esempio:

http://packages.debian.org/wheezy/all/transmission-common/filelist

8
8
8
2015-04-21 21:44:25 +0000

Ho preso l'idea di @baldoz http e l'ho generalizzata per Ubuntu e Debian, ho aggiunto un po’ di 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'; }
``` ```
$ 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

Uso:

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';
}

Stessa funzione su più linee:

&001

Spiegato:

  1. lsb_release -si restituisce “Ubuntu” o “Debian” sostituendo quello con l'url base https://packages.ubuntu.com o https://packages.debian.org
  2. lsb_Release -sc restituisce il nome in codice (ad es. “trusty”, “sid”, ecc.) usa quello per costruire l'URL completo: https://packages.ubuntu.com/trusty/all/curl/filelist
  3. 3. Recuperare l'URL con curl e pipe l'html attraverso tre comandi sed. Il primo cattura solo l'elenco dei file (cosa c'è tra i tag <pre> e </pre>); il secondo elimina i tag html; il terzo rimuove le righe vuote.

Nota: Non cerca i PPA, non cerca i repository apt source alternativi e interroga solo i pacchetti ufficiali disponibili per il rilascio di debian/ubuntu che si sta eseguendo.

5
5
5
2017-01-06 03:14:29 +0000

Per tutte quelle persone che potrebbero ancora cercare su Google questo numero a gennaio 2017, si può avere un po’ di roba interessante con le versioni recenti di apt e dpkg in Debian 8.5 senza scaricare nulla.

List Contents of Deb File Without Download:

Prima individua 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 il deb non viene scaricato.

Poi visualizzare il contenuto 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 ......................
``` ```
root@debian:dpkg -c <(curl -sL -o- "http://httpredir.debian.org/debian/pool/main/y/yade/yade_2016.06a-7_amd64.deb")

PS: Lo stesso risultato può essere ottenuto con

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
``` ```
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

*Estrai un file dal suddetto pacchetto deb , senza scaricarlo. * Per esempio vogliamo leggere la pagina man del pacchetto yade senza installare questo pacchetto e senza nemmeno scaricare il pacchetto deb.

Filename of man page all'interno del pacchetto deb come consigliato da dpkg -c è ./usr/share/man/man1/yade.1.gz

Per leggere la pagina man al volo:

&001

la pagina man viene visualizzata correttamente usando l'applicazione man.

PS: I tubi di cui sopra non funzionano con il comando ar.

&001

2
2
2
2014-06-27 15:28:37 +0000

Prova:

apt-get download packages-name
dpkg --contents *.deb
1
1
1
2015-12-27 13:33:51 +0000

Sembra che non sia possibile prima di installarlo per primo o di estrarre la lista dal file .deb.

Provare il seguente comando:

dpkg --contents <(curl -s $(apt-get install --yes --no-download --reinstall --print-uris language-pack-en | tail -n1 | grep -o "http[^']"))

Change language-pack-en con il nome del pacchetto.

In pratica legge il file .deb estratto tramite curl ed esegue dpkg --contents FILE su di esso.


Potete anche controllare il contenuto senza scaricare il file del pacchetto.

Quindi, se conoscete l'URL del file .deb, il seguente comando di 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")
``` ```
apt --print-uris install avis | grep avis

Parametri del ricciolo: -s - silent, -L - seguire i link spostati.

Se non conoscete l'URL, andate a prenderlo tramite: apt --print-uris, ad esempio

&001