Hoe kan ik een lijst krijgen met pakketten die ik heb geïnstalleerd met apt-get? [duplicate]

Deze vraag heeft hier al antwoorden :

Reacties

  • beide antwoorden vermelden hier de history.log bestanden in /var/log/apt/. Het is ' belangrijk op te merken dat logrotate standaard is geconfigureerd om alleen de waarde van deze bestanden voor de laatste 12 maanden te bewaren. Hetzelfde geldt voor the /dpkg.log bestanden in /var/log (die vergelijkbare informatie geven in een (IMO) gemakkelijker te ontleden formaat). Bewerk /etc/logrotate.d/{apt,dpkg} om het bewaarbeleid voor uw systeem te wijzigen.

Antwoord

U kunt het geïnstalleerde pakket weergeven met apt met behulp van de volgende opdracht:

apt --installed list 

Bewerken

Gebruik de volgende opdracht om het geïnstalleerde pakket weer te geven via apt-get:

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

Bron: Askubuntu

Reacties

  • Zoals je hebt aangegeven geeft dit een overzicht van alle geïnstalleerde pakketten. Ik wil pakketten die ik handmatig heb geïnstalleerd met apt-get commandos.
  • @ user598200 – Overweeg dit antwoord te accepteren. 🙂
  • Op basis van dit askubuntu-antwoord krijg ik (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,} produceert dezelfde uitvoer zonder de onnodige zcat en cat. als je ' niet geïnteresseerd bent in de exacte volgorde van pakketnamen in de uitvoer, dan is /var/log/apt/history.log* voldoende voor het argument bestandsnaam.

Answer

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

Dit geeft je een lijst met pakketten die geïnstalleerd, in de volgorde waarin ze zijn geïnstalleerd.

Volgens mijn opmerking worden alleen de laatste 12 maanden aan /var/log/dpkg.log* bestanden standaard bewaard. Om dit te wijzigen, moet u /etc/logrotate.d/dpkg bewerken. Verander bijvoorbeeld rotate 12 in rotate 1200 om de laatste 1200 maanden (100 jaar) waard te houden – effectief voor altijd, verwijder nooit de oude logboeken.

BTW, als je wilt zien wanneer pakketten werden geüpgraded, verander dan install naar upgrade. bijv.

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

hetzelfde voor remove en purge.

Answer

Als je alleen een lijst met pakketten wilt weergeven, heb je handmatig geïnstalleerd u zou kunnen uitvoeren:

apt --installed list | grep -v automatic 

om geen pakketten weer te geven die zijn gemarkeerd als automatisch geïnstalleerd

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

Een andere optie die “niet ten onrechte een ongelukkig pakket uitsluit met " automatisch " in zijn naam is:

apt-mark showmanual 

Reacties

  • Kort en krachtig, en alfabetisch gesorteerd.
  • Als een pakketnaam toevallig " automatisch " bevat, wordt het uitgefilterd door grep.

Antwoord

Dit is afhankelijk van aptitude, maar het volgende geeft je een lijst van pa ckages die handmatig zijn geïnstalleerd, dwz niet zijn geïnstalleerd alleen vanwege afhankelijkheid:

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

Afhankelijk van hoe de afbeelding is ingesteld, bevat deze waarschijnlijk ook enkele geïnstalleerde door het basissysteem. Je kunt er behoorlijk wat van kwijtraken door ze automatisch te laten installeren, en vervolgens de paar die je wilt behouden, te markeren als handmatig, ondanks dat er niets van afhankelijk is. Dit is gemakkelijk te doen met M binnen aptitude op een kaal systeem.

Antwoord

Gebruik dpkg om alle pakketten weer te geven die op een systeem zijn geïnstalleerd: dpkg --get-selections

Om alle pakketten weer te geven die zijn geïnstalleerd met apt-get kijk naar /var/log/apt/history.log. Dit logboek bevat ook pakketten die u heeft verwijderd. U kunt grep voor de regels die beginnen met Install:.

Opmerkingen

  • Zoals je hebt aangegeven geeft dit een overzicht van alle geïnstalleerde pakketten. Ik wil pakketten die ik handmatig heb geïnstalleerd met apt-get commandos.
  • @ user598200 Ah. Dank voor uw toelichting. Zie mijn bewerkte antwoord. Ik weet niet zeker of apt-get die functionaliteit heeft. Maar telkens als je iets installeert, wordt het toegevoegd aan het logbestand dat ik in het antwoord noem.
  • Bedankt.Elke manier waarop ik door alle /var/log/apt/history.log* bestanden kan gaan en de pakketnamen in één keer kan afdrukken?
  • @ user598200 Je zou . grep "Install: package" /var/log/apt/history.log*

Antwoord

Ubuntu 14.04 en hoger gebruiken apt list --installed gebruik voor oudere versies dpkg --get-selections | grep -v deinstall

Antwoord

Een beetje korter en gesorteerd

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

Reacties

  • Enige uitleg waarom dit is beter dan het antwoord dat @ GAD3R gaf, zou nuttig zijn.
  • Allereerst is het ' s korter, ten tweede wordt de uitvoer gesorteerd
  • Het idee op U & L is dat je je antwoord verbetert (of vraag als je er een had gepost) door het bericht te bewerken, in plaats van waardevolle informatie in reacties te verbergen. Omdat ik de opdracht zou knippen en plakken, de 26 bytes minder is niet zo interessant, maar het feit dat je uitvoer is gesorteerd, hoort echt in het antwoord zelf. Als een dergelijke verbetering een reactie was op een verzoek om verduidelijking, heeft een simpele " mijn antwoord " bijgewerkt zoals commentaar zal doen, de commentator ( in dit geval ik) zal op de hoogte worden gebracht van die opmerking. Ik denk dat de beknoptheid ook de oorzaak is dat iemand je antwoord heeft afgewezen.
  • Als je wilt golfen, probeer dan zgrep -Pho '(?<=apt-get install ).*' /var/log/apt/history.log.*.gz | tr ' ' $'\n' | sort -u.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *