Дистрибутивы на основе RPM, такие как Red Hat, просты:
rpm -qa --last
В Debian и других дистрибутивах на основе dpkg ваша конкретная проблема также проста:
grep install /var/log/dpkg.log
Если файл журнала не был повернут, в этом случае вы должны попробовать:
grep install /var/log/dpkg.log /var/log/dpkg.log.1
В общем, dpkg
и apt
, кажется, не отслеживать дату установки, если не считать такого поля на dpkg-query
странице руководства .
И, в конце концов, старые /var/log/dpkg.log.*
файлы будут удалены путем ротации журналов, так что не гарантируется, что вы получите всю историю вашей системы.
Одно предложение, которое появляется несколько раз (например, эта ветка ), - это посмотреть /var/lib/dpkg/info
каталог. Файлы там предлагают вам попробовать что-то вроде:
ls -t /var/lib/dpkg/info/*.list | sed -e 's/\.list$//' | head -n 50
Чтобы ответить на ваш вопрос о выборе, вот первый проход.
составить список пакетов по датам
$ find /var/lib/dpkg/info -name "*.list" -exec stat -c $'%n\t%y' {} \; | \
sed -e 's,/var/lib/dpkg/info/,,' -e 's,\.list\t,\t,' | \
sort > ~/dpkglist.dates
построить список установленных пакетов
$ dpkg --get-selections | sed -ne '/\tinstall$/{s/[[:space:]].*//;p}' | \
sort > ~/dpkglist.selections
присоединиться к 2 спискам
$ join -1 1 -2 1 -t $'\t' ~/dpkglist.selections ~/dpkglist.dates \
> ~/dpkglist.selectiondates
По какой-то причине для меня не очень много различий, поэтому может быть ошибка или неверное предположение о том, что --get-selections
значит.
Очевидно, что вы можете ограничить пакеты либо с помощью find . -mtime -<days>
или head -n <lines>
, и изменить формат вывода, как вам нравится, например
$ find /var/lib/dpkg/info -name "*.list" -mtime -4 | \
sed -e 's,/var/lib/dpkg/info/,,' -e 's,\.list$,,' | \
sort > ~/dpkglist.recent
$ join -1 1 -2 1 -t $'\t' ~/dpkglist.selections ~/dpkglist.recent \
> ~/dpkglist.recentselections
перечислить только те варианты, которые были установлены (изменены?) за последние 4 дня.
Вы также можете удалить sort
команды после проверки используемого порядка сортировки dpkg --get-selections
и сделать find
команду более эффективной.