Commenti
Rispondi
Puoi elencare i pacchetti installati utilizzando apt
utilizzando il seguente comando:
apt --installed list
Modifica
Utilizza il seguente comando per elencare i pacchetti installati tramite apt-get
:
zcat /var/log/apt/history.log.*.gz | cat - /var/log/apt/history.log | grep -Po "^Commandline: apt-get install (?!.*--reinstall)\K.*"
Commenti
- Come hai affermato, elenca tutti i pacchetti installati. Voglio pacchetti che ho installato manualmente utilizzando i comandi
apt-get
. - @ user598200 – Considera lidea di accettare questa risposta. 🙂
- Basato su questa risposta di askubuntu ottengo a
(zcat $(ls -tr /var/log/apt/history.log*.gz); cat /var/log/apt/history.log) 2>/dev/null | egrep '^(Commandline: apt(-get)? install)' | grep -v aptdaemon | egrep '^Commandline:'
-
zgrep -hPo '^Commandline: apt-get install (?!.*--reinstall)\K.*' /var/log/apt/history.log{.*.gz,}
produce lo stesso output senzazcat
ecat
. se ' non ti interessa lordine esatto dei nomi dei pacchetti nelloutput,/var/log/apt/history.log*
farà per largomento del nome del file.
Risposta
zgrep -h " install " /var/log/dpkg.log* | sort | awk "{print $4}"
Questo ti darà un elenco di pacchetti che hanno sono stati installati, nellordine in cui sono stati installati.
Secondo il mio commento, per impostazione predefinita vengono conservati solo gli ultimi 12 mesi di file /var/log/dpkg.log*
. Per cambiarlo, modifica /etc/logrotate.d/dpkg
. Ad esempio, modifica rotate 12
in rotate 1200
per conservare gli ultimi 1200 mesi (100 anni), effettivamente per sempre, non eliminare mai i vecchi log.
A proposito, se vuoi vedere quando i pacchetti sono stati aggiornati, cambia install
in upgrade
. ad es.
zgrep -h " upgrade " /var/log/dpkg.log* | sort
stesso per remove
e purge
.
Risposta
Se vuoi visualizzare solo un elenco con i pacchetti che hai installato manualmente puoi eseguire:
apt --installed list | grep -v automatic
per non elencare i pacchetti contrassegnati come installati automaticamente
-v, --invert-match Invert the sense of matching, to select non-matching lines.
Unaltra opzione che non esclude “erroneamente un pacchetto sfortunato con " automatico " nel suo nome è:
apt-mark showmanual
Commenti
- Breve e dolce e in ordine alfabetico.
- Se per caso il nome di un pacchetto contiene " automatico " verrà filtrato da grep.
Risposta
Questo si basa su aptitude
, ma quanto segue ti darà un elenco di pa ckages che sono installati manualmente, cioè non sono installati solo a causa della dipendenza:
aptitude search -F %p "~i!~M"
A seconda di come è configurata limmagine, probabilmente ne includerà anche alcuni installati dal sistema di base. Puoi sbarazzarti di una buona parte di quelli impostandoli in modo che vengano installati automaticamente, quindi contrassegna come manuali i pochi che desideri conservare nonostante non dipenda da loro. Questo è facile da fare con M allinterno di aptitude
su un sistema semplice.
Rispondi
Usa dpkg
per elencare tutti i pacchetti installati su un sistema: dpkg --get-selections
Per elencare tutti i pacchetti installati usando apt-get
guarda /var/log/apt/history.log
. Questo registro contiene anche i pacchetti che hai rimosso. Puoi grep
per le righe che iniziano con Install:
.
Commenti
- Come hai affermato, elenca tutti i pacchetti installati. Voglio pacchetti che ho installato manualmente usando i comandi
apt-get
. - @ user598200 Ah. Grazie per aver chiarito. Vedi la mia risposta modificata. Non sono sicuro che
apt-get
abbia questa funzionalità. Ma ogni volta che installi qualcosa, viene aggiunto al file di registro che ho menzionato nella risposta. - Grazie.In qualche modo posso esaminare tutti i file
/var/log/apt/history.log*
e stampare i nomi dei pacchetti in un colpo solo? - @ user598200 Potresti usare
grep
.grep "Install: package" /var/log/apt/history.log*
Risposta
Ubuntu 14.04 e versioni successive usa apt list --installed
per le versioni precedenti utilizza dpkg --get-selections | grep -v deinstall
Risposta
Un po più breve e ordinato
gunzip -c /var/log/apt/history.log.*.gz | grep "apt-get install" | cut -f4- -d" " | tr " " $"\n" | sort -u
Commenti
- Qualche spiegazione del motivo sarebbe utile meglio della risposta fornita da @ GAD3R.
- Prima di tutto, ' è più breve, secondo di tutto loutput è ordinato
- Lidea su U & L è di migliorare la tua risposta (o domanda nel caso ne avessi pubblicata una) modificando il post, invece di nascondere preziose informazioni nei commenti. Poiché taglierei e incollerei il comando, i 26 byte in meno non sono così interessanti, ma il fatto che il tuo output sia ordinato appartiene davvero alla risposta stessa. Se un tale miglioramento fosse una reazione a una richiesta di chiarimento, un semplice " aggiornava la mia risposta " come farà il commento, il commentatore ( in questo caso io) verrò informato di quel commento. Penso che la concisione sia anche la causa per cui qualcuno ha scartato la tua risposta.
- Se vuoi giocare a golf, prova
zgrep -Pho '(?<=apt-get install ).*' /var/log/apt/history.log.*.gz | tr ' ' $'\n' | sort -u
.
history.log
file in/var/log/apt/
. È ' importante notare che, per impostazione predefinita, logrotate è configurato per conservare solo gli ultimi 12 mesi di questi file. Lo stesso vale per i filethe /dpkg.log
in/var/log
(che forniscono informazioni simili in un formato (IMO) più facilmente analizzabile). Modifica/etc/logrotate.d/{apt,dpkg}
per cambiare il criterio di conservazione per il tuo sistema.