Posso vedere perché è stato installato un pacchetto?

96

Per un pacchetto specifico, posso scoprire perché è stato installato?

Quindi, posso vederlo o viene installato manualmente o installato come dipendenza da un altro pacchetto? O che è installato come parte della distro?

    
posta Peter Smit 10.10.2010 - 16:08

4 risposte

92

Una soluzione rapida è inserire il seguente comando in un terminale:

aptitude why $package

o, se sei interessato solo alla causa finale:

aptitude why $package --show-summary

Sostituisci $ pacchetto con il nome del pacchetto e potresti dover installare prima il pacchetto aptitude .

Ecco l'output che potresti ottenere per aptitude why aspell --show-summary

Packages requiring aspell:
  inkscape

Per maggiori dettagli eseguirai aptitude why aspell . Puoi leggere l'output di esempio, di seguito, come segue: "Hai installato manualmente inkscape , che richiede libgtkspell , che richiede libenchantic2a , che richiede aspell ". (I marcatori i indicano i pacchetti installati; i marcatori A indicano i pacchetti installati automaticamente.)

i   inkscape       Depends libgtkspell0 (>= 2.0.10)                                                                    
i A libgtkspell0   Depends libenchant1c2a (>= 1.6.0)                                                                   
i A libenchant1c2a Depends aspell-en | myspell-dictionary | aspell-dictionary | ispell-dictionary | hunspell-dictionary
i A aspell-en      Depends aspell (>= 0.60.3-2)

Infine, il seguente comando

apt-cache rdepends --installed $package

elenca gli altri pacchetti installati sul tuo computer che dipendono direttamente da $ pacchetto . Puoi aggiungere l'opzione --recurse per elencare tutti i pacchetti che dipendono direttamente o indirettamente da esso.

    
risposta data enzotib 10.10.2010 - 16:14
29

Un rapido e breve ragionamento sul perché un determinato pacchetto è stato installato può essere scoperto digitando il seguente comando in un terminale ( Applications -> Accessories -> Terminal ):

aptitude why <package-name>

Sostituisci con il nome del pacchetto a cui sei interessato. Ad esempio, digitando aptitude why libgoo-canvas-perl viene restituito quanto segue:

i   shutter Suggests libgoo-canvas-perl

Questo significa in sostanza che il pacchetto shutter in questo caso ha suggerito l'installazione di libgoo-canvas-perl . Digitando aptitude why shutter , posso risalire la catena di dipendenze.

Tuttavia, vi è un avvertimento. Spesso noto che l'attitudine trova la spiegazione più plausibile per la situazione che potrebbe non essere il caso reale, ma ti darà comunque un indizio per guardare oltre.

Nel mio caso, shutter suggerisce libgoo-canvas-perl - tuttavia, i pacchetti suggeriti non vengono installati automaticamente per impostazione predefinita. Tuttavia, mi fa girare la memoria della "esperienza" con il non poter modificare schermate con shutter che mi ha portato ad installare manualmente ligbgoo-canvas-perl

Infine, puoi scoprire se un pacchetto è stato installato automaticamente (il che significa che il sistema di gestione dei pacchetti ha deciso come obbligatorio osservare le dipendenze e i consigli degli altri pacchetti che hai chiesto di installare) eseguendo il comando seguente.

aptitude show <package-name>

Questo mostrerà una riga come sotto (terza riga dell'output):

Automatically installed: no

Per maggiori informazioni esegui info aptitude (in un terminale) o visita la pagina wiki di Aptitude

Per scoprire quando è stato installato un particolare pacchetto, ci sono 2 opzioni:

  1. Gestore pacchetti Synaptic mantiene un registro cronologico di tutte le attività. Per visualizzare il file di registro della cronologia, selezionare Cronologia dal menu File. Puoi cercare Install (attenzione al caso) per elencare tutte le voci relative all'installazione. Tuttavia, questo mostrerà solo i pacchetti installati usando Synaptic
  2. Esegui il seguente comando in un terminale. Questo cercherà i registri di dpkg per le voci della cronologia dell'installazione. Tuttavia, esiste il limite massimo della quantità di questi registri conservati, quindi se il pacchetto che stai cercando è stato installato molto tempo fa, potresti non trovarlo. Maggiori dettagli qui

    zcat -f /var/log/dpkg.log* | grep "\ install\ " | grep -i <package-name>
    
risposta data koushik 21.09.2010 - 16:02
11

Sì, è possibile, ed è un comando abbastanza ovvio, infatti. Supponendo di aver installato aptitude, puoi aprire un tipo di annuncio per la finestra del terminale:

aptitude why package

Questo dovrebbe fornire un elenco di pacchetti che dipendono da quel pacchetto specifico. Se è un pacchetto installato manualmente, dirà qualcosa del tipo "Non è stato possibile trovare un motivo per installare il pacchetto".

    
risposta data Daniel Rodrigues 10.10.2010 - 16:14
2

Ecco un modo semplice che non si basa su aptitude , che 10.10 non spedisce più per impostazione predefinita.

  

Avviso

     

È necessario l'accesso come root per eseguire questi comandi.

Graficamente

Apri Synaptic e prova a rimuoverlo.

Se viene visualizzata una finestra di dialogo che richiede di cancellare altri pacchetti, questi sono i pacchetti che (ricorsivamente) dipendono da esso.

Dal terminale

apt-get remove package_name_goes_here -s

Ancora una volta, i pacchetti che verrebbero rimossi come risultato sono tutti quelli che (in modo ricorsivo) dipendono da esso. (Il parametro -s indica apt-get per non rimuovere effettivamente il pacchetto.)

    
risposta data badp 10.10.2010 - 16:27

Leggi altre domande sui tag