Come posso ottenere un elenco dei pacchetti che ho installato utilizzando apt-get? [duplicate]

Questa domanda ha già una risposta qui :

Commenti

  • entrambe le risposte qui menzionano il 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 file the /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.

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.*" 

Fonte: Askubuntu

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 senza zcat e cat. 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.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *