Per un pacchetto specifico, posso scoprire perché è installato?
Quindi, posso vedere o è installato manualmente o che è installato come dipendenza di un altro pacchetto? O che sia installato come parte della distribuzione?
Per un pacchetto specifico, posso scoprire perché è installato?
Quindi, posso vedere o è installato manualmente o che è installato come dipendenza di un altro pacchetto? O che sia installato come parte della distribuzione?
Risposte:
Una soluzione rapida è inserire il seguente comando in un terminale:
aptitude why $package
o, se sei interessato solo alla causa ultima:
aptitude why $package --show-summary
Sostituisci $ package con il nome del pacchetto e potresti dover aptitude
prima installare il pacchetto.
Ecco l'output che potresti ottenere aptitude why aspell --show-summary
Packages requiring aspell:
inkscape
Per maggiori dettagli eseguiresti aptitude why aspell
. È possibile leggere l'output di esempio, di seguito, come segue: "Installazione manuale inkscape
, che richiede libgtkspell
, che richiede libenchantic2a
, che richiede aspell
". (gli i
indicatori indicano i pacchetti installati; gli A
indicatori 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 $ package . È possibile aggiungere l' --recurse
opzione per elencare tutti i pacchetti che dipendono direttamente o indirettamente da esso.
apt-cache rdepends --recurse $package
probabilmente dà troppi pacchetti. Aggiungerei l' --installed
opzione per limitare ai pacchetti installati. -i
L'opzione limita i pacchetti relativi alla pre-dipendenza e alla dipendenza. Ma un pacchetto può essere installato perché è consigliato da un altro pacchetto. Per includere tali pacchetti relativi alle raccomandazioni, suppongo che ciò darebbe quelli giusti:apt-cache rdepends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances --installed --recurse $package
apt-cache rdepends --no-{suggests,conflicts,breaks,replaces,enhances} --installed --recurse $package
Un ragionamento rapido e breve sul motivo per cui un certo 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 che ti interessa. Ad esempio, digitando aptitude why libgoo-canvas-perl
restituisce quanto segue:
i shutter Suggests libgoo-canvas-perl
Ciò significa sostanzialmente che il pacchetto shutter
in questo caso ha suggerito di libgoo-canvas-perl
essere installato. Digitando quindi aptitude why shutter
posso camminare sulla catena delle dipendenze.
Tuttavia, c'è un avvertimento. Noto spesso che aptitude trova la spiegazione più plausibile per la situazione che potrebbe non essere il caso reale, ma che comunque ti darà un indizio per guardare oltre.
Nel mio caso, shutter
suggerisce libgoo-canvas-perl
- tuttavia, i pacchetti suggeriti non vengono installati automaticamente per impostazione predefinita. Ciononostante, fa jogging la mia memoria dell '"esperienza" con il fatto di non essere in grado di modificare schermate con le shutter
quali mi ha portato all'installazione manualeligbgoo-canvas-perl
Infine, puoi scoprire se un pacchetto è stato installato automaticamente (significato deciso dal sistema di gestione dei pacchetti come obbligatorio guardando le dipendenze e le raccomandazioni di altri pacchetti che hai chiesto di installare) eseguendo il comando seguente.
aptitude show <package-name>
Questo genererà una riga come di seguito (terza riga dell'output):
Automatically installed: no
Per ulteriori informazioni, esegui info aptitude
(in un terminale) o visita la pagina wiki di Aptitude
Per scoprire quando è stato installato un determinato pacchetto, ci sono 2 opzioni:
Install
(attenzione al caso) per elencare tutte le voci relative all'installazione. Tuttavia, questo mostrerà solo i pacchetti installati usando SynapticEseguire il comando seguente in un terminale. Ciò cercherà nei registri di dpkg le voci della cronologia di installazione. Tuttavia, esiste un limite massimo alla quantità di questi registri mantenuta, 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>
zcat -f /var/log/dpkg.log* | grep -i PackageName | egrep “\ install\ |\ upgrade\ “
Sì, puoi, ed è un comando abbastanza ovvio, in effetti. Supponendo che aptitude sia installato, è possibile aprire un tipo di annuncio della finestra Terminale:
aptitude why package
Ciò dovrebbe fornire un elenco di pacchetti che dipendono da quel pacchetto specifico. Se si tratta di un pacchetto installato manualmente, verrà visualizzato qualcosa del tipo "Impossibile trovare un motivo per installare il pacchetto".
Ecco un modo semplice su cui non fare affidamento aptitude
, che 10.10 non viene più fornito di default.
Apri Synaptic e prova a rimuoverlo.
Se viene visualizzata una finestra di dialogo che richiede di eliminare altri pacchetti, questi sono i pacchetti che (ricorsivamente) dipendono da esso.
apt-get remove package_name_goes_here -s
Ancora una volta, i pacchetti che verrebbero rimossi di conseguenza sono tutti quelli che (ricorsivamente) dipendono da esso. (Il -s
parametro dice apt-get
di non rimuovere effettivamente il pacchetto.)
y/N
richiesta di conferma aggiuntiva in caso di errore di battitura -s
. Ho aggiunto un avviso comunque.