Hur kan jag få en lista över paket som jag har installerat med apt-get? [duplicera]

<åt sidan class = "s-notice s-notice__info js-post-notice mb16" role = "status">

Denna fråga har redan svar här :

Kommentarer

  • båda svaren här nämner history.log filer i /var/log/apt/. Det är ' viktigt att notera att logrotate som standard är konfigurerat för att bara behålla dessa filers senaste 12 månader. Detsamma gäller för the /dpkg.log -filer i /var/log (som ger liknande information i ett (IMO) lättare analyserat format). Redigera /etc/logrotate.d/{apt,dpkg} för att ändra lagringspolicyn för ditt system.

Svara

Du kan lista installerat paket med apt med följande kommando:

apt --installed list 

Redigera

Använd följande kommando för att lista installerat paket genom apt-get:

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

Källa: Askubuntu

Kommentarer

  • Som du har angett listar alla installerade paket. Jag vill ha paket som jag har installerat manuellt med apt-get -kommandon.
  • @ user598200 – Överväg att acceptera det här svaret. 🙂
  • Baserat på detta askubuntu-svar får jag (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,} producerar samma utdata utan onödigt zcat och cat. om du inte bryr dig om ' om den exakta ordningen på paketnamn i utdata, kommer /var/log/apt/history.log* att göra för filnamnargumentet.

Svar

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

Detta ger dig en lista över paket som har har installerats i den ordning de installerades.

Enligt min kommentar sparas endast de senaste 12 månaderna av /var/log/dpkg.log* -filer som standard. För att ändra detta, redigera /etc/logrotate.d/dpkg. Ändra till exempel rotate 12 till rotate 1200 för att hålla de senaste 1200 månaderna (100 år) värda – effektivt för alltid, radera aldrig de gamla loggarna.

BTW, om du vill se när paket uppgraderades ändrar du install till upgrade. t.ex.

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

samma för remove och purge.

Svar

Om du bara vill visa en lista med paketen har du manuellt installerat du kan köra:

apt --installed list | grep -v automatic 

för att inte lista paket som är flaggade som automatiskt installerade

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

Ett annat alternativ som inte kommer att felaktigt utesluta ett olyckligt paket med " automatisk " i dess namn är:

apt-mark showmanual 

Kommentarer

  • Korta och söta och sorterade i alfabetisk ordning.
  • Om ett paketnamn av en slump innehåller " automatisk " filtreras det bort med grep.

Svar

Detta är beroende av aptitude, men följande ger dig en lista över pa ckages som är manuellt installerade, dvs är inte installerade bara på grund av beroende:

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

Beroende på hur bilden är inställd kommer den antagligen också att innehålla några av bassystemet. Du kan bli av med en hel del av dem genom att byta dem till att installeras automatiskt, sedan markera bara som manuella de få du vill behålla trots att du inte har något beroende på dem. Detta är lätt att göra med M inuti aptitude på ett kalt system.

Svar

Använd dpkg för att lista alla paket som är installerade i ett system: dpkg --get-selections

För att lista alla paket installerade med apt-get titta på /var/log/apt/history.log. Den här loggen innehåller också paket som du har tagit bort. Du kan grep för de rader som börjar med Install:.

Kommentarer

  • Som du har sagt, listar alla installerade paket. Jag vill ha paket som jag har installerat manuellt med apt-get -kommandon.
  • @ user598200 Ah. Tack för att du klargjorde. Se mitt redigerade svar. Jag är inte säker på om apt-get har den funktionen. Men när du installerar något läggs det till loggfilen som jag nämner i svaret.
  • Tack.Hur som helst kan jag gå igenom alla /var/log/apt/history.log* filer och skriva ut paketnamnen i en träff?
  • @ user598200 Du kan använda grep. grep "Install: package" /var/log/apt/history.log*

Svar

Ubuntu 14.04 och senare använder apt list --installed för äldre versioner använd dpkg --get-selections | grep -v deinstall

Svar

Lite kortare och sorterade

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

Kommentarer

  • Någon förklaring till varför detta är bättre än svaret som @ GAD3R gav skulle vara till hjälp.
  • Först och främst är det ' kortare, andra av allt sorteras utdata
  • Tanken på U & L är att du förbättrar ditt svar (eller fråga ifall du hade lagt upp ett) genom att redigera inlägget istället för att dölja värdefull information i kommentarer. Som jag skulle klippa och klistra in kommandot är 26 byte mindre inte så intressant, men det faktum att din produktion är sorterad hör verkligen till själva svaret. Om en sådan förbättring var som en reaktion på en begäran om förtydligande uppdaterade en enkel " mitt svar " som kommentaren kommer att göra kommer kommentaren ( i det här fallet kommer jag) att få ett meddelande om den kommentaren. Jag tror att tappigheten också är orsaken till att någon nedröstade ditt svar.
  • Om du vill spela golf, försök zgrep -Pho '(?<=apt-get install ).*' /var/log/apt/history.log.*.gz | tr ' ' $'\n' | sort -u.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *