Reacties
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.*"
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 onnodigezcat
encat
. 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
.
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 voorthe /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.