Come posso sapere quali programmi contiene un pacchetto apt-get?


17

Vorrei sapere quali installazioni di alcuni pacchetti specifici , ad esempio durante l'installazione ncurses, ho scoperto che la TABchiave si espande:

sudo apt-get install ncurses-

mostrare:

ncurses-base      ncurses-doc       ncurses-hexedit
ncurses-bin       ncurses-examples  ncurses-term

Come potrei sapere cosa, diciamo, ncurses-terminstalla? Sono interessato principalmente ai programmi, ma potrebbero essere utili anche le biblioteche e qualsiasi altro tipo di file.

Il metodo da riga di comando , se possibile, sarebbe preferito (anche altri accettati).


Quando dici "programmi" stai parlando di binari?
Braiam

Binari e script, se possibile, grazie @Braiam.
Sopalajo de Arrierez,

Risposte:


21

Ecco alcune opzioni, queste elencheranno tutte i file installati da un pacchetto:

A. Elenco di tutti i file inclusi in un pacchetto

  1. Per i pacchetti installati

    dpkg -L ncurses-term
    
  2. Per tutti i pacchetti, installati o meno

    apt-file -F list ncurses-term
    

    I -Fgiri della corrispondenza del modello in modo che vengano restituiti solo i pacchetti il ​​cui nome esatto corrisponde. Potrebbe essere necessario installare apt-filecon sudo apt-get install apt-filee quindi aggiornare il suo database con sudo apt-file update.

B. Elenco solo dei file eseguibili inclusi in un pacchetto

  1. Per i pacchetti installati

    Basta installare dlocate( sudo apt-get dlocate) ed eseguire:

    dlocate -lsbin ncurses-term 
    

    Come spiegato in man dlocate:

    -lsbin Elenca il percorso completo / nomi file dei file eseguibili (se presenti) nel pacchetto

    Se non si desidera installare pacchetti aggiuntivi, è possibile farlo manualmente. Basta raccogliere l'elenco dei file e trovare uno di essi con il bit eseguibile impostato:

    apt-file -F list ncurses-term | cut -d ' ' -f 2 | 
        while read file; do [[ -x $file && -f $file ]] && echo "$file"; done
    

    Il piccolo scriptlet sopra stamperà solo il percorso ( cut -d ' ' -f 2) e poi lo passerà attraverso un whileciclo che controlla se il file è eseguibile ( -x $file) e se è un file normale, nessuna directory o symlink ( -f $file) e stampa il suo nome solo se supera entrambi i test .

  2. Per tutti i pacchetti, installati o meno

    Non so come elencare solo gli eseguibili inclusi in un pacchetto disinstallato. Tuttavia, poiché la maggior parte degli eseguibili sono installati nelle bindirectory, è possibile ottenerne la maggior parte analizzando l'output:

     apt-file -F list ncurses-term | grep -Ew "bin|sbin"
    

    L' -wopzione corrisponde a parole intere, quindi non puoi installare cose, ad esempio trashbino altro.


NOTA : nessuno dei comandi sopra genererà alcun output per, ncurses-termma ciò è dovuto al fatto che questo pacchetto non installa file eseguibili. I comandi funzionano comunque, provare con un pacchetto diverso.


Ciao terdon, sei sicuro che il comando dovrebbe funzionare su applicazioni non installate? quando provo, offre semplicemente l'installazione. Non è strano, dato che il file .install viene (probabilmente) scaricato con l'applicazione?
Jacob Vlijm,

@Jacob sì, ho appena provato con un pacchetto che non è installato e ho apt-fileelencato il contenuto del pacchetto. Funziona su test Debian e Ubuntu 13.10.
terdon,

Ah, grazie, mi sembra di aver pensato, dato che le dipendenze sono mostrate anche su applicazioni non installate.
Jacob Vlijm,

4

È possibile utilizzare apt-file:

sudo apt-file update        
apt-file list package_name

3
Se apt-filenon è installato è possibile installarlo con sudo apt-get install apt-file.
edwin

3

Esiste la possibilità di utilizzare il browser (quindi non è necessario l'accesso a un sistema APT). Ad esempio, per elencare il contenuto del file del pacchetto "ncurses-term", basta digitare

https://packages.debian.org/wheezy/all/ncurses-term/filelist

nella barra degli indirizzi del browser (sostituire "wheezy" secondo necessità) per Debian o

http://packages.ubuntu.com/saucy/all/ncurses-term/filelist

per Ubuntu (sostituire "impertinente" se necessario).


Un metodo interessante Questo elenco è per i pacchetti Debian, quindi: dovrebbe essere lo stesso per qualsiasi altra distribuzione come Ubuntu o Kali?
Sopalajo de Arrierez,

1
@Sopalajo de Arrierez: Leggi esattamente: ho anche pubblicato il link per lo stesso pacchetto (ncurses-term in questo esempio) per Ubuntu. L'elenco dei file potrebbe essere lo stesso se una specifica versione di Ubuntu ha la stessa versione del pacchetto di uno dei set Debian, ma non è necessariamente. Ubuntu, Kali, Aptosid, CrunchBang e tutte le altre distribuzioni basate su Debian potrebbero apportare modifiche ai pacchetti a loro piacimento (in particolare file come "README" o file di configurazione per il sistema init).
Michael Kremser,

Capisco, @MichaelKremser. Quindi, come posso vedere, è utile cercare sul web i contenuti di un pacchetto ma, preferibilmente, dovresti cercare nell'elenco dei pacchetti ufficiali della tua specifica distribuzione.
Sopalajo de Arrierez,

1
@Sopalajo de Arrierez: Sì, giusto. Se sei su Debian Wheezy, usa l'elenco dei pacchetti per Debian Wheezy, se stai eseguendo un test Debian, usa quello, se sei su Ubuntu Precise, prendi il suo elenco. Ci possono sempre essere differenze, anche se ad esempio Ubuntu prende molti pacchetti da Debian non modificati. Tuttavia, questo potrebbe cambiare in qualsiasi momento.
Michael Kremser,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.