Hvordan kan jeg få en liste over pakker, som jeg har installeret ved hjælp af apt-get? [duplikat]

Dette spørgsmål har allerede svar her :

Kommentarer

  • begge svar her nævner history.log filer i /var/log/apt/. Det er ' vigtigt at bemærke, at logrotate som standard er konfigureret til kun at beholde disse filer i de sidste 12 måneder. Det samme gælder the /dpkg.log filer i /var/log (som giver lignende oplysninger i et (IMO) lettere parset format). Rediger /etc/logrotate.d/{apt,dpkg} for at ændre politik for opbevaring af dit system.

Svar

Du kan liste installeret pakke ved hjælp af apt ved hjælp af følgende kommando:

apt --installed list 

Rediger

Brug følgende kommando til at liste installeret pakke gennem apt-get:

zcat /var/log/apt/history.log.*.gz | cat - /var/log/apt/history.log | grep -Po "^Commandline: apt-get install (?!.*--reinstall)\K.*" 

Kilde: Askubuntu

Kommentarer

  • Som du har angivet, viser alle installerede pakker. Jeg vil have pakker, som jeg har installeret manuelt ved hjælp af apt-get kommandoer.
  • @ user598200 – Overvej at acceptere dette svar. 🙂
  • Baseret på dette askubuntu-svar kommer jeg til (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,} producerer den samme output uden det unødvendige zcat og cat. hvis du ikke ' ikke bryr dig om den nøjagtige rækkefølge af pakkenavne i output, vil /var/log/apt/history.log* gøre for filnavnargumentet.

Svar

zgrep -h " install " /var/log/dpkg.log* | sort | awk "{print $4}" 

Dette giver dig en liste over pakker, der har blevet installeret i den rækkefølge, de blev installeret.

I henhold til min kommentar er kun de sidste 12 måneders værdi af /var/log/dpkg.log* filer gemt som standard. For at ændre dette skal du redigere /etc/logrotate.d/dpkg. Skift f.eks. rotate 12 til rotate 1200 for at holde de sidste 1200 måneder (100 år) værd – effektivt for evigt, slet aldrig de gamle logfiler.

BTW, hvis du vil se, hvornår pakker blev opgraderet, skal du ændre install til upgrade. f.eks.

zgrep -h " upgrade " /var/log/dpkg.log* | sort 

samme for remove og purge.

Svar

Hvis du kun vil vise en liste med pakkerne, har du manuelt installeret du kunne køre:

apt --installed list | grep -v automatic 

for ikke at angive pakker, der er markeret som automatisk installeret

-v, --invert-match Invert the sense of matching, to select non-matching lines. 

En anden mulighed, der ikke fejlagtigt udelukker en uheldig pakke med " automatisk " i navnet er:

apt-mark showmanual 

Kommentarer

  • Kort og sødt og sorteret alfabetisk.
  • Hvis et pakkenavn tilfældigt indeholder " automatisk ", filtreres det med grep.

Svar

Dette er afhængig af aptitude, men det følgende giver dig en liste over pa ckages, der er installeret manuelt, dvs. ikke installeres bare på grund af afhængighed:

aptitude search -F %p "~i!~M" 

Afhængigt af hvordan billedet er opsat, vil det sandsynligvis også omfatte nogle installerede af basissystemet. Du kan slippe af en hel del af dem ved at skifte dem til at blive installeret automatisk, og markér bare som manuelle de få, du vil beholde på trods af at du ikke har noget afhængigt af dem. Dette er let at gøre med M inde i aptitude på et blottet system.

Svar

Brug dpkg til at liste alle pakker, der er installeret på et system: dpkg --get-selections

For at liste alle pakker, der er installeret ved hjælp af apt-get se på /var/log/apt/history.log. Denne log indeholder også pakker, du har fjernet. Du kan grep for de linjer, der starter med Install:.

Kommentarer

  • Som du har angivet, viser alle installerede pakker. Jeg vil have pakker, som jeg har installeret manuelt ved hjælp af apt-get kommandoer.
  • @ user598200 Ah. Tak for afklaring. Se mit redigerede svar. Jeg er ikke sikker på, om apt-get har den funktionalitet. Men hver gang du installerer noget, føjes det til den logfil, jeg nævner i svaret.
  • Tak.På nogen måde kan jeg gennemgå alle /var/log/apt/history.log* filer og udskrive pakkenavnene i et hit?
  • @ user598200 Du kunne bruge grep. grep "Install: package" /var/log/apt/history.log*

Svar

Ubuntu 14.04 og derover bruger apt list --installed til ældre versioner skal du bruge dpkg --get-selections | grep -v deinstall

Svar

Lidt kortere og sorteret

gunzip -c /var/log/apt/history.log.*.gz | grep "apt-get install" | cut -f4- -d" " | tr " " $"\n" | sort -u 

Kommentarer

  • Nogle forklaringer på, hvorfor dette er bedre end det svar, som @ GAD3R gav, ville være nyttigt.
  • Først og fremmest er det ' kortere, andet af alt sorteres output
  • Ideen på U & L er, at du forbedrer dit svar (eller spørgsmål, hvis du havde sendt et) ved at redigere indlægget i stedet for at skjule værdifuld information i kommentarer. Som jeg ville klippe og indsætte kommandoen, er 26 byte mindre ikke så interessant, men det faktum, at din output er sorteret, hører virkelig med i selve svaret. Hvis en sådan forbedring var som en reaktion på en anmodning om afklaring, opdaterede en simpel " mit svar ", som kommentaren vil gøre, kommentatoren ( i dette tilfælde vil jeg) blive underrettet om denne kommentar. Jeg tror, at tærhed også er årsagen til, at nogen nedstemte dit svar.
  • Hvis du vil spille golf, så prøv zgrep -Pho '(?<=apt-get install ).*' /var/log/apt/history.log.*.gz | tr ' ' $'\n' | sort -u.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *