Можно ли получить список последних установленных пакетов?


157

Можно ли получить список пакетов, которые были недавно установлены через apt-get?



1
Теперь, если бы кто-нибудь сказал мне, как составить список установленных вручную пакетов, которые я еще не удалил. Вздох, Линукс.
Александр Дубинский

1
@AleksandrDubinsky apt-mark showmanual | lessне делает этого?
GKFX

@GKFX Я имел ввиду в контексте недавно установленных пакетов.
Александр Дубинский

@AleksandrDubinsky Вам придется использовать comm -12 a bс aотсортированной копией apt-mark showmanualи bотсортированным списком из одного из ответов ниже.
GKFX

Ответы:


180

Команда для просмотра списка недавно установленных пакетов, которые были установлены любым способом ( apt-getЦентр программного обеспечения и др.):

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

проблема с synaptic в том, что он не показывает, что вы делаете с aptitude, 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), но принятый ответ действителен как в сценариях с графическим, так и не графическим интерфейсом.
Мсанфорд

@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, чтобы ограничить поиск трехмесячным периодом, добавив 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. Проверьте его на наличие командной строки, это первое, что я сейчас установил. Как aptitude, за исключением того, что он работает так, как будто вы ожидаете, что сработает диспетчер команд. Так что на самом деле это не похоже на способности. Команды ниже являются лишь небольшим подмножеством.

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помогает список последних пакетов. Я не вижу команды для этого после беглого просмотра команд. Вы знаете, что это за команда?
Этеш Чоудхури

1

В дополнение к ответу DoR, для тех, кто предпочитает графический интерфейс, в Synaptic есть пункт меню File -> History.


2
И, как указывает rafalcieslak , эта функция доступна и в Центре программного обеспечения.
belacqua

3
История Synaptic показывает только то, что вы установили через Synaptic ... совершенно бесполезно.
HDave

1

Вот некоторая оболочка для вывода списка установленных файлов dpkg. (который должен включать все установленные пакеты apt / aptitude / software center / 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

Это не включает информацию о времени и дате установки. Но может быть полезно при определении любых различий в пакетах, установленных от os install до current.


-1

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


2
Просто чтобы уточнить, чтобы просто просматривать содержимое /var/log/apt, вам не нужно быть пользователем root или с правами администратора.
Самуэль Ли
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.