Поиск по сайту:

Удаление пакетов, установленных в определенную дату в Linux

Я устанавливаю и тестирую множество приложений на своих виртуальных машинах Linux. После завершения тестирования я удалю установленные пакеты, которые больше не используются. Поскольку я часто устанавливаю много приложений, мне кажется, что вручную удалять пакеты один за другим требуется много времени. Также я иногда забываю удалить ненужные пакеты. Если вы чем-то похожи на меня, вот простой способ найти и удалить все пакеты, установленные в определенную дату и время в Linux.

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

В Arch Linux, EndeavourOS и Manjaro Linux:

expac --timefmt='%Y-%m-%d %T' '%l\t%n'|sort -n

В Fedora, RHEL, CentOS, AlmaLinux и Rocky Linux:

sudo rpm -qa --last

В Debian, Ubuntu, Linux Mint и Pop OS:

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

Приведенные выше команды выведут список всех пакетов, установленных на все даты. Однако мы заинтересованы в том, чтобы находить и удалять пакеты, установленные только в определенную дату и время.

Удаление пакетов, установленных в определенную дату

Мы можем использовать параметр %yyyy-%mm-%dd с командой grep, чтобы вывести список всех пакетов, установленных в определенную дату и время.

Например, следующая команда отображает все установленные пакеты 14 сентября 2021 года в моей системе Debian 11.

grep "2021-09-14.*.install " /var/log/dpkg.log

Пример вывода:

2021-09-14 06:51:51 install tmpreaper:amd64 <none> 1.6.14+nmu2
2021-09-14 11:14:14 install hello:amd64 <none> 2.10-2
2021-09-14 11:17:13 install hello:amd64 <none> 2.10-2
2021-09-14 11:17:13 install tmpreaper:amd64 <none> 1.6.14+nmu2
2021-09-14 11:22:29 install hello:amd64 <none> 2.10-2
2021-09-14 11:22:29 install tmpreaper:amd64 <none> 1.6.14+nmu2
2021-09-14 11:41:16 install nano:amd64 5.4-2 5.4-2
2021-09-14 11:41:17 install tmpreaper:amd64 <none> 1.6.14+nmu2
2021-09-14 11:41:17 install vim-runtime:all 2:8.2.2434-3 2:8.2.2434-3
2021-09-14 11:41:18 install vim:amd64 2:8.2.2434-3 2:8.2.2434-3

Список установленных пакетов на определенную дату в Debian, Ubuntu

Как вы видите в приведенном выше выводе, я установил пакеты tmpreaper, vim и nano.

Если ротация журналов включена, содержимое файла /var/log/dpkg.log будет удалено. В этом случае вы можете просмотреть предыдущий файл журнала установки с помощью команды:

grep "2021-09-14.*.install " /var/log/dpkg.log.1

Если вы хотите вывести только имена пакетов, исключив из выходных данных дату/время установки и детали архитектуры, запустите:

grep "2021-09-14.*.install " /var/log/dpkg.log | awk '{ print $4 }' | cut -d: -f1

Теперь вы увидите только имена установленных пакетов на указанную дату:

tmpreaper
hello
hello
tmpreaper
hello
tmpreaper
nano
tmpreaper
vim-runtime
vim

Отображение установленных пакетов на определенную дату в системах на базе Debian

Теперь у нас есть названия всех установленных пакетов на указанную дату.

Чтобы удалить все пакеты, установленные в определенную дату, просто добавьте соответствующие аргументы команды apt с xargs в конце предыдущей команды.

Обратите внимание, что следующие команды не запрашивают подтверждения пользователя перед удалением пакетов. Поэтому всегда рекомендуется выполнить пробный прогон, чтобы проверить, какие пакеты будут удалены, прежде чем запускать фактическую команду.

Чтобы смоделировать (пробный прогон) процесс удаления пакета, просто добавьте -s или --simulate, как показано ниже.

grep "2021-09-14.*.install " /var/log/dpkg.log | awk '{ print $4 }' | cut -d: -f1 | xargs sudo apt purge -y -s

Приведенная выше команда только моделирует процесс удаления пакетов, но не удаляет сами пакеты.

Как только вы узнаете, какие пакеты будут удалены, повторно запустите приведенную выше команду без опции -s или --simulate:

grep "2021-09-14.*.install " /var/log/dpkg.log | awk '{ print $4 }' | cut -d: -f1 | xargs sudo apt purge -y

Если ротация журналов включена, вместо этого запустите следующую команду:

grep "2021-09-14.*.install " /var/log/dpkg.log.1 | awk '{ print $4 }' | cut -d: -f1 | xargs sudo apt purge -y

Удалить все пакеты, установленные в определенную дату в Linux.

На этот раз пакеты, установленные в указанную дату, будут удалены из вашей системы.

Связанное чтение:

  • Как найти и удалить неиспользуемые пакеты в Linux
  • Как удалить установленные пакеты из определенного репозитория в CentOS, Fedora
  • Простой способ установки и удаления группы пакетов в Arch Linux
  • Простой способ удалить программы, установленные из исходного кода в Linux

Статьи по данной тематике