Страницы

Поиск по вопросам

воскресенье, 8 марта 2020 г.

Получить список пакетов, установленных пользователем

#debian #apt_get


apt-get иногда выдаёт сообщение, что некоторые пакеты были установлены автоматически
и их можно удалить командой apt-get autoremove. Значит, где-то хранится признак, по
какой причине был установлен тот или иной пакет.

Как получить список пакетов, установленных по запросу пользователя, без автоматически
добавленных по зависимостям, и, если возможно, с датой установки?
    


Ответы

Ответ 1



с помощью «тёплого лампового» aptitude: $ aptitude search -F '%p' '!~M ~i' с помощью apt-mark: $ apt-mark showmanual дату/время запуска (а также параметры и ещё много другой информции) программы apt-get можно найти в файлах /var/log/apt/*, программы aptitude — в файлах /var/log/aptitude*, программы dpkg (её ведь можно запустить и вручную для установки пакета из скачанного «вручную» файла) — в файлах /var/log/dpkg.log*. что плохо — все эти файлы ротируются и (насколько помню, но стоит это уточнить в настройках logrotate) со временем удаляются. доп. информация: поисковые шаблоны aptitude настройка того, как отображаются пакеты в aptitude дополнение по поводу даты установки. вообще-то она не фиксируется в «базе данных» dpkg, но более или менее релевантный результат можно получить, например, по дате последней модификации файлов /var/lib/dpkg/info/имя-пакета* (например, имя-пакета[:архитектура].list, содержащий список файлов пакета). при распаковке архивов, содержащихся в файле с пакетом, программа dpkg указанные файлы (как минимум) перезаписывает (более точный алгоритм можно узнать в документации dpkg, или непосредственно в её исходных кодах). как-нибудь так: #!/bin/bash export arch=$(dpkg --print-architecture) dostat() { stat --printf="$1\t%y\n" $2 } apt-mark showmanual | while read p; do if [ -f /var/lib/dpkg/info/$p.list ]; then dostat $p /var/lib/dpkg/info/$p.list elif [ -f /var/lib/dpkg/info/$p:$arch.list ]; then dostat $p /var/lib/dpkg/info/$p:$arch.list else echo $p fi done пример вывода: 2vcard 2010-03-25 11:56:42.000000000 +0300 abcde 2013-07-20 20:50:31.000000000 +0400 abiword 2013-07-20 22:48:50.000000000 +0400 abook 2013-07-20 22:48:51.000000000 +0400 acl 2013-07-20 22:46:20.000000000 +0400 acpi 2013-07-20 20:50:34.000000000 +0400 acpid 2013-07-20 20:50:34.000000000 +0400 adduser 2013-07-20 20:48:04.000000000 +0400 alien 2013-07-20 20:50:38.000000000 +0400 alsa-base 2013-07-20 22:45:48.000000000 +0400

Комментариев нет:

Отправить комментарий