Hvordan kan jeg få en liste over pakker som jeg har installert ved hjelp av apt-get? [duplikat]

Dette spørsmålet har allerede svar her :

Kommentarer

  • begge svarene her nevner history.log filer i /var/log/apt/. Det er ' det er viktig å merke seg at standard er logrotate konfigurert til å beholde bare de siste 12 månedene av disse filene. Det samme gjelder the /dpkg.log filer i /var/log (som gir lignende informasjon i et (IMO) lettere analysert format). Rediger /etc/logrotate.d/{apt,dpkg} for å endre oppbevaringspolitikken for systemet ditt.

Svar

Du kan liste opp installert pakke ved hjelp av apt ved hjelp av følgende kommando:

apt --installed list 

Rediger

Bruk følgende kommando for å liste installert pakke gjennom 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 oppgitt, viser alle installerte pakker. Jeg vil ha pakker som jeg har installert manuelt med apt-get -kommandoer.
  • @ user598200 – Vurder å godta dette svaret. 🙂
  • Basert på dette askubuntu-svaret 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,} gir samme utdata uten unødvendig zcat og cat. hvis du ikke ' ikke bryr deg om den nøyaktige rekkefølgen på pakkenavn i utdataene, vil /var/log/apt/history.log* gjøre for filnavnargumentet.

Svar

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

Dette vil gi deg en liste over pakker som har blitt installert, i den rekkefølgen de ble installert.

I henhold til kommentaren min blir bare de siste 12 månedene verdt /var/log/dpkg.log* filer som standard. For å endre dette, rediger /etc/logrotate.d/dpkg. For eksempel, endre rotate 12 til rotate 1200 for å holde de siste 1200 månedene (100 år) verdt – effektivt for alltid, aldri slett de gamle loggene.

BTW, hvis du vil se når pakker ble oppgradert, kan du endre install til upgrade. f.eks.

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

samme for remove og purge.

Svar

Hvis du bare vil vise en liste med pakkene, har du manuelt installert du kan kjøre:

apt --installed list | grep -v automatic 

for ikke å liste pakker som er merket som automatisk installert

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

Et annet alternativ som ikke vil ekskludere feilaktig en uheldig pakke med " automatisk " i navnet er:

apt-mark showmanual 

Kommentarer

  • Kort og søt, og sortert alfabetisk.
  • Hvis et pakkenavn tilfeldigvis inneholder " automatisk ", blir det filtrert ut av grep.

Svar

Dette er avhengig av aptitude, men det følgende vil gi deg en liste over pa ckages som er installert manuelt, dvs. ikke er installert bare på grunn av avhengighet:

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

Avhengig av hvordan bildet er konfigurert, vil det sannsynligvis også inkludere noen installerte av basesystemet. Du kan kvitte deg med en del av dem ved å bytte dem til å bli automatisk installert, og deretter bare merke de få du vil beholde som manuelle til tross for at du ikke har noe avhengig av dem. Dette er enkelt å gjøre med M inne i aptitude på et bare system.

Svar

Bruk dpkg til å liste opp alle pakker som er installert på et system: dpkg --get-selections

For å liste opp alle pakker som er installert med apt-get se på /var/log/apt/history.log. Denne loggen inneholder også pakker du har fjernet. Du kan grep for linjene som starter med Install:.

Kommentarer

  • Som du har oppgitt, viser alle installerte pakker. Jeg vil ha pakker som jeg har installert manuelt med apt-get -kommandoer.
  • @ user598200 Ah. Takk for at du avklarte. Se mitt redigerte svar. Jeg er ikke sikker på om apt-get har den funksjonaliteten. Men hver gang du installerer noe, legges det til loggfilen jeg nevner i svaret.
  • Takk.Uansett hvordan jeg kan gå gjennom alle /var/log/apt/history.log* filer og skrive ut pakkenavnene i ett treff?
  • @ user598200 Du kan bruke grep. grep "Install: package" /var/log/apt/history.log*

Svar

Ubuntu 14.04 og nyere bruker apt list --installed for eldre versjoner bruk dpkg --get-selections | grep -v deinstall

Svar

Litt kortere og sortert

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

Kommentarer

  • Noe forklaring på hvorfor dette er bedre enn svaret @ GAD3R ga ville være nyttig.
  • Først og fremst er det ' kortere, det andre av alt er sortert
  • Tanken på U & L er at du forbedrer svaret ditt (eller spørsmålet i tilfelle du hadde lagt ut et) ved å redigere innlegget, i stedet for å skjule verdifull informasjon i kommentarene. Som jeg ville kutte og lime inn kommandoen er 26 byte mindre ikke så interessant, men det faktum at utdataene dine er sortert, hører virkelig hjemme i selve svaret. Hvis en slik forbedring var som en reaksjon på en anmodning om avklaring, oppdaterte en enkel " svaret mitt " som kommentaren vil gjøre, kommentatoren ( i dette tilfellet vil jeg) få beskjed om den kommentaren. Jeg tror spenningen også er årsaken til at noen nedstemte svaret ditt.
  • Hvis du vil spille golf, så prøv zgrep -Pho '(?<=apt-get install ).*' /var/log/apt/history.log.*.gz | tr ' ' $'\n' | sort -u.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *