Чи можливо отримати список останніх встановлених пакетів?


157

Чи можливо отримати список пакетів, які були нещодавно встановлені через apt-get?



1
Тепер, якби хтось сказав би мені, як перелічити встановлені вручну пакети, які я ще не видаляв. Зітхання, Linux.
Олександр Дубінський

1
@AleksandrDubinsky apt-mark showmanual | lessне робить цього?
GKFX

@GKFX Я мав на увазі в контексті нещодавно встановлених пакетів.
Олександр Дубінський

@AleksandrDubinsky Ви повинні були б використовувати comm -12 a bз aвідсортованої копії apt-mark showmanualі bвідсортованого списку одного з наведених нижче відповідей.
GKFX

Відповіді:


180

Команда перелічити нещодавно встановлені пакети, які були встановлені будь-яким методом ( apt-get, Software Center et al.):

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

Приклад виводу:

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

Ви можете запустити цю команду, щоб перелічити лише нещодавно встановлені імена пакета,

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

Команда для списку історії apt-get(ПРИМІТКА. У цьому списку не встановлені встановлені залежності, він просто перелічує попередні apt-getкоманди, які були виконані):

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

Приклад виводу:

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

Проблема синаптики полягає в тому, що він не показує, що ви робите з здатністю, apt-get і dpkg, з цієї причини +1 для цього варіанту
hhlp

Ця команда не відображатиме оновлення. Скористайтеся програмним центром, щоб побачити все.
HDave

1
Можливо, буде краще зберегти такий текстовий файлcat /var/log/apt/history.log | grep "\ install\ " > install.log
CrandellWS

4
grep " install " /var/log/dpkg.logбуде достатньо Не потрібно користуватися cat. Дивіться також це .
серпень

1
зауважте, що це здається лише для пошуку пакетів, які були нещодавно встановлені. Пакети , для яких була встановлена нова версія з'явиться , як upgradeвdpkg.log
Андре Holzner

14

Програмний центр Ubuntu показує всю історію всіх пакунків, які були встановлені / оновлені / видалені. Просто натисніть "Історія" внизу списку зліва.


4
Ця кнопка історії тепер знаходиться у верхній частині графічного інтерфейсу і може показувати встановлені пакети та оновлення. Це має бути прийнятою відповіддю на питання як єдиною відповіддю, яка працює на оновлення.
HDave

Це запитання не вказує середовища для робочого столу (GUI), але прийнята відповідь є дійсною як у сценаріях графічного, так і не графічного інтерфейсу.
msanford

@HDave Однозначно не вірно, dpkg.logжурнали оновлення.
GKFX

10

Щоб побачити також старіші пакети, відсортовані за часом встановлення:

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

А для пакетів, встановлених дуже давно:

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

Я знайшов пакет, встановлений 2 дні тому в /var/log/dpkg.log, але не в /var/log/apt/history.log. Досі не знаю, чому ...
Самуель Лі

5

Наступний трюк відповідає на прохання Олександра Дубінського обмежити це лише встановленими вручну пакетами:

comm -12 <(apt-mark showmanual | sort) <(grep " install " /var/log/dpkg.log | cut -d " " -sf4 | grep -o "^[^:]*" | sort)
  • comm -12 перелічує рядки, спільні для двох відсортованих файлів.
  • <(command)розширюється до імені файлу, що містить вихід command.
  • apt-mark showmanualсписки встановлених вручну пакетів; тобто. ті, які ніколи не слід видаляти автоматично.
  • grep " install " /var/log/dpkg.log взято з прийнятої відповіді.

Альтернативою, що відображає додаткову інформацію в хронологічному порядку та доступ до всіх доступних журналів, є:

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\>обмежує результати для нових установок. Наприклад, ви можете використовувати греп, щоб обмежити пошук тримісячним періодом, додавши grep 2016-0[567]до першого конвеєра; це дуже гнучко.


Це все ближче. Речі, які можна було б покращити: 1) показати пакунки в хронологічному порядку, 2) показати більше деталей, наприклад, дата / час установки, версія, можливо, навіть розмір 3) показати всі пакунки, встановлені з моменту встановлення ОС.
Олександр Дубінський

Дивовижний! Ви не заперечуєте, якщо я очищую вашу відповідь, щоб бути більш стислим з більшими поясненнями щодо кожної команди?
Олександр Дубінський

@AleksandrDubinsky Дякую за цю редагування; Я виправив опис, щоб він відповідав внесеним вами змінам.
GKFX

Ви не заперечуєте, якщо я видаляю шум "наступний трюк відповідає на запит Олександра Дубінського", перша команда, яка не є корисною, покладіть хороший заголовок, поставте основну команду зверху, додайте зразок виводу та спробуйте описати всі команди залучений?
Олександр Дубінський

1
В останній команді помилка, тому що grep -Fзнайдіть часткові збіги. Наприклад, якщо python3він встановлений, він також буде відповідати всім бібліотекам python3 ( python3-click-package), включаючи ті, які більше не встановлені. Більше того, grep -Fwце не допомагає, оскільки -це межа слова.
Олександр Дубінський

5

Усі в одному рядку; для використання команд

Виберіть і надрукуйте лише нещодавно встановлені назви пакунків, і все це в одному рядку.

Для цього змініть відповідь, якою найбільше голосували:

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

Це призводить до отримання єдиного рядка назв пакета. Такий рядок легко можна додати до sudo apt-get purgeкоманди.

Приклад виведення

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

Перерахування пакетів один під одним

За популярним попитом, ось дещо адаптована версія для перерахування пакетів один під одним:

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

Не розбирайте вихід catкоманди. А як щодо цього awk '$3~/^install$/ {print $4;}' /var/log/dpkg.log?
Авінаш Радж

@AvinashRaj Ваша awkкоманда друкує пакети один під одним; мої один поруч . Ось чому вихідний приклад може час від часу бути корисним.
Серж Стротобандт

2

Є пакет під назвою wajig Ознайомтесь з командним рядком, це перше, що я встановлюю зараз. Як і здатність, за винятком того, що вона працює так, як ви очікували, що працює диспетчер команд. Так справді, це не так, як здатність. Команди нижче - лише невеликий підмножина.

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
Я не впевнений, як wajigдопомагає перерахувати останні пакети. Я не бачу команди для цього після короткого перегляду команд. Ви знаєте, що це за команда?
Ehtesh Choudhury

1

Окрім відповіді DoR, для тих, хто віддає перевагу графічний інтерфейс, є пункт меню Файл -> Історія в Synaptic.


2
І як зазначає rafalcieslak , ця функція доступна і в Software Center.
белаква

3
Історія синаптики показує лише те, що ви встановили за допомогою Synaptic ... абсолютно марно.
HDave

1

Ось декілька оболонок для переліку встановлених файлів dpkg. (який повинен містити всі встановлені пакети apt / aptitude / центр програмного забезпечення / синаптичні пакети)

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

Це не включає інформацію про час / дату встановлення. Але може бути корисним для визначення будь-яких відмінностей у пакунках, встановлених від встановлення ОС до поточного.


-1

Проблема з переглядом історії встановлення в Software Center або Synaptic полягає в тому, що важко скопіювати / вставити вміст в електронний лист (наприклад, під час розмови з технічною підтримкою!). Альтернативою є перегляд вмісту файлів журналів у /var/log/aptкорінні.


2
Просто для уточнення, щоб просто переглядати вміст у /var/log/apt, НЕ потрібно мати root або мати будь-яку привілей адміністратора.
Самуель Лі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.