Czy można uzyskać listę ostatnio zainstalowanych pakietów?


157

Czy można uzyskać listę pakietów ostatnio zainstalowanych przez apt-get?



1
Teraz, jeśli tylko ktoś powie mi, jak wyświetlić listę ręcznie zainstalowanych pakietów, których jeszcze nie usunąłem. Westchnienie, Linux.
Aleksandr Dubinsky

1
@AleksandrDubinsky apt-mark showmanual | lessnie robi tego?
GKFX

@GKFX Miałem na myśli w kontekście ostatnio zainstalowanych pakietów.
Aleksandr Dubinsky

@AleksandrDubinsky Trzeba korzystać comm -12 a bz aposortoanej kopią apt-mark showmanuali bposortowanej listy z jednej z poniższych odpowiedzi.
GKFX,

Odpowiedzi:


180

Polecenie, aby wyświetlić listę ostatnio zainstalowanych pakietów, które zostały zainstalowane dowolną metodą ( apt-get, Software Center i in.):

grep " install " /var/log/dpkg.log

Przykładowe dane wyjściowe:

2010-12-08 15:48:14 install python-testtools <none> 0.9.2-1
2010-12-08 15:48:16 install quickly-widgets <none> 10.09
2010-12-08 22:21:31 install libobasis3.3-sdk <none> 3.3.0-17
2010-12-09 12:00:24 install mc <none> 3:4.7.0.6-1
2010-12-09 23:32:06 install oggconvert <none> 0.3.3-1ubuntu1
2010-12-09 23:34:50 install mpg123 <none> 1.12.1-3ubuntu1
2010-12-09 23:34:52 install dir2ogg <none> 0.11.8-1
2010-12-09 23:34:53 install faad <none> 2.7-4
2010-12-09 23:34:54 install wavpack <none> 4.60.1-1
2010-12-10 11:53:00 install playonlinux <none> 3.8.6

Możesz uruchomić to polecenie, aby wyświetlić tylko ostatnio zainstalowane nazwy pakietów,

awk '$3~/^install$/ {print $4;}' /var/log/dpkg.log

Historia poleceń do listy apt-get(UWAGA: nie wyświetla zainstalowanych zależności, po prostu wyświetla listę poprzednich apt-getpoleceń, które zostały uruchomione):

grep " install " /var/log/apt/history.log

Przykładowe dane wyjściowe:

Commandline: apt-get install libindicate-doc
Commandline: apt-get install googlecl
Commandline: apt-get --reinstall install ttf-mscorefonts-installer
Commandline: apt-get install valac libvala-0.10-dev
Commandline: apt-get install libgtksourceview-dev
Commandline: apt-get install python-sphinx
Commandline: apt-get install python-epydoc
Commandline: apt-get install quickly-widgets
Commandline: apt-get install libreoffice3* libobasis3.3*
Commandline: apt-get install mc

problem z synaptic polega na tym, że nie pokazuje on, co robisz z aptitude, apt-get i dpkg, z tego powodu +1 dla tej opcji
hhlp

To polecenie nie wyświetla aktualizacji. Skorzystaj z centrum oprogramowania, aby zobaczyć wszystko.
HDave

1
Lepiej zapisać taki plik tekstowycat /var/log/apt/history.log | grep "\ install\ " > install.log
CrandellWS

4
grep " install " /var/log/dpkg.logwystarczy. Nie trzeba używać cat. Zobacz także to .
sierpień

1
Zauważ, że wydaje się, że odnajduje to tylko pakiety, które zostały nowo zainstalowane. Pakiety, dla których zainstalowano nową wersję, pojawiają się jak upgradewdpkg.log
Andre Holzner

14

Centrum oprogramowania Ubuntu pokazuje całą historię wszystkich pakietów, które zostały zainstalowane / zaktualizowane / usunięte. Po prostu kliknij „Historia” u dołu listy po lewej stronie.


4
Ten przycisk historii znajduje się teraz u góry interfejsu GUI i może wyświetlać zainstalowane pakiety i aktualizacje. Powinna to być zaakceptowana odpowiedź na pytanie, ponieważ jest to jedyna odpowiedź, która działa w przypadku aktualizacji.
HDave

To pytanie nie określa środowiska graficznego (GUI), ale zaakceptowana odpowiedź jest poprawna zarówno w przypadku GUI, jak i scenariuszy innych niż GUI.
msanford,

@HDave Zdecydowanie nieprawda, dpkg.logloguje aktualizacje.
GKFX

10

Aby zobaczyć również starsze pakiety posortowane według czasu instalacji:

grep " install " /var/log/dpkg.log.1 /var/log/dpkg.log

A dla pakietów zainstalowanych bardzo dawno temu:

gunzip -c `ls -tr /var/log/dpkg.log.*.gz` | grep " install "

Znalazłem pakiet, który został zainstalowany 2 dni temu w /var/log/dpkg.log, ale nie w /var/log/apt/history.log. Nadal nie wiem, dlaczego ...
Samuel Li

5

Poniższa sztuczka odpowiada na prośbę Aleksandra Dubińskiego, aby ograniczyć to do ręcznie instalowanych pakietów:

comm -12 <(apt-mark showmanual | sort) <(grep " install " /var/log/dpkg.log | cut -d " " -sf4 | grep -o "^[^:]*" | sort)
  • comm -12 wyświetla linie wspólne dla dwóch posortowanych plików.
  • <(command)rozwija się do nazwy pliku zawierającego dane wyjściowe command.
  • apt-mark showmanualwyświetla ręcznie zainstalowane pakiety; to znaczy. te, które nigdy nie powinny być automatycznie usuwane.
  • grep " install " /var/log/dpkg.log pochodzi z zaakceptowanej odpowiedzi.

Alternatywą jest wyświetlenie dodatkowych informacji w porządku chronologicznym i dostęp do wszystkich dostępnych dzienników:

zcat -f /var/log/dpkg.log* | grep " install " | sort > /tmp/dpkg.log
grep -F "`comm -12 <(apt-mark showmanual | sort) <(cat /tmp/dpkg.log | cut -d " " -sf4 | grep -o "^[^:]*" | sort)`" /tmp/dpkg.log | grep \<none\>

grep \<none\>ogranicza wyniki do nowych instalacji. Możesz na przykład użyć grep, aby ograniczyć wyszukiwanie do okresu trzech miesięcy, dodając grep 2016-0[567]do pierwszego potoku; jest bardzo elastyczny.


To się zbliża. Rzeczy, które można poprawić: 1) pokaż pakiety w kolejności chronologicznej, 2) pokaż więcej szczegółów, takich jak data / czas instalacji, wersja, może nawet rozmiar 3) pokaż wszystkie pakiety zainstalowane od czasu zainstalowania systemu operacyjnego.
Aleksandr Dubinsky

Niesamowity! Czy masz coś przeciwko, jeśli posprzątam twoją odpowiedź, aby uzyskać bardziej zwięzłe wyjaśnienie każdego polecenia?
Aleksandr Dubinsky

@AleksandrDubinsky Dzięki za edycję; Poprawiłem opis, aby pasował do wprowadzonych zmian.
GKFX,

Czy masz coś przeciwko, jeśli usunę szum „następująca sztuczka odpowiedzi na żądanie Aleksandra Dubinsky'ego”, pierwsze polecenie, które nie jest przydatne, umieść dobry nagłówek, umieść główne polecenie na górze, dodaj przykładowe dane wyjściowe i spróbuj opisać wszystkie polecenia zaangażowany?
Aleksandr Dubinsky

1
W ostatnim poleceniu jest błąd, ponieważ grep -Fznajdź częściowe dopasowania. Na przykład, jeśli python3jest zainstalowany, będzie również pasował do wszystkich bibliotek python3 ( python3-click-package), w tym tych, które nie są już zainstalowane. Co więcej, grep -Fwnie pomaga, ponieważ -jest granicą słów.
Aleksandr Dubinsky

5

Wszystko w jednej linii; do użycia polecenia

Wybierz i wydrukuj tylko ostatnio zainstalowane nazwy pakietów, wszystkie w jednym wierszu.

Aby to zrobić, zmień najczęściej głosowaną odpowiedź na:

cat /var/log/dpkg.log |awk '/ install / {printf "%s ",$4}'

W rezultacie powstaje jeden wiersz nazw pakietów. Taki wiersz można łatwo dodać do sudo apt-get purgepolecenia.

Przykładowe dane wyjściowe

libgnome-media-profiles-3.0-0 gstreamer0.10-gconf gnome-media gnome-menus librest-0.7-0 libgoa-1.0-common libgoa-1.0-0 libwacom-common libwacom2 ubuntu-docs apg libgnome-control-center1 libgnomekbd-common libgnomekbd7 gnome-control-center-data gnome-icon-theme-symbolic gnome-settings-daemon ubuntu-system-service gnome-control-center gnome-online-accounts gnome-session-bin indicator-power mousetweaks

Wyświetlanie pakietów jeden pod drugim

Zgodnie z popularnym zapotrzebowaniem, tutaj jest nieco dostosowana wersja do umieszczania pakietów jeden pod drugim:

cat /var/log/dpkg.log |awk '/ install / {printf "%s\n",$4}'

Nie analizuj wyniku catpolecenia. A co powiesz na to awk '$3~/^install$/ {print $4;}' /var/log/dpkg.log?
Avinash Raj

@AvinashRaj Twoje awkpolecenie drukuje pakiety jeden pod drugim; kopać jeden obok drugiego. Dlatego przykład wyjściowy może być przydatny od czasu do czasu.
Serge Stroobandt

2

Jest pakiet o nazwie wajig Sprawdź to w wierszu poleceń, jest to pierwsza rzecz, którą teraz instaluję. Podobnie jak aptitude, z tym wyjątkiem, że działa tak, jakbyś oczekiwał od dyspozytora poleceń. Naprawdę, to nie jest tak, jak zręczność. Poniższe polecenia to tylko niewielki podzbiór.

wajig help
Common JIG commands:

 update         Update the list of downloadable packages

 new            List packages that became available since last update
 newupgrades    List packages newly available for upgrading

 install        Install (or upgrade) one or more packages or .deb files
 remove         Remove one or more packages (see also purge)

 toupgrade      List packages with newer versions available for upgrading
 upgrade        Upgrade all of the installed packages or just those listed

 listfiles      List the files that are supplied by the named package
 listnames      List all known packages or those containing supplied string
 whatis         For each package named obtain a one line description
 whichpkg       Find the package that supplies the given command or file

Run 'wajig -v commands' for a complete list of commands.

5
Nie jestem pewien, jak wajigpomaga w wyświetlaniu najnowszych pakietów. Nie widzę takiego polecenia po pobieżnym przejrzeniu poleceń. Czy wiesz, co to za polecenie?
Ehtesh Choudhury

1

Oprócz odpowiedzi DoR, dla tych, którzy wolą GUI, w Synaptic jest pozycja menu Plik -> Historia.


2
I jak wskazuje rafalcieslak , ta funkcja jest dostępna również w Software Center.
belacqua

3
Historia Synaptic pokazuje tylko to, co zainstalowałeś przez Synaptic ... całkowicie bezużyteczne.
HDave

1

Oto kilka powłok do listy zainstalowanych plików dpkg. (które powinny obejmować wszystkie zainstalowane pakiety apt / aptitude / centrum oprogramowania / synaptic)

grep -A 1 "Package: " /var/lib/dpkg/status | \
grep -B 1 -Ee "ok installed|half-installed|unpacked|half-configured|config-files" -Ee "^Essential:yes" | \
grep "Package:" | cut -d\  -f2

Nie obejmuje to informacji o czasie i dacie instalacji. Ale może być przydatny w określaniu wszelkich różnic w pakietach instalowanych z instalacji OS na bieżącą.


-1

Problem z przeglądaniem historii instalacji w Software Center lub Synaptic polega na tym, że trudno jest skopiować / wkleić zawartość do wiadomości e-mail (np. Podczas rozmowy z pomocą techniczną!). Alternatywą jest przeglądanie zawartości plików dziennika /var/log/aptjako root.


2
Aby to wyjaśnić, po prostu przeglądaj zawartość /var/log/apt, NIE musisz być rootem ani mieć uprawnień administratora.
Samuel Li
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.