debian: удалить все пакеты, установленные в определенный день

Я должен удалить все пакеты, установленные в определенный день.

Мое решение – найти файл /var/log/dpkg.log , узнать запись с правильной датой, извлечь имена пакетов и удалить их.

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

Есть ли другой способ сделать это более безопасным / формальным способом?

One Solution collect form web for “debian: удалить все пакеты, установленные в определенный день”

/var/log/apt/history.log обычно лучше использовать по нескольким причинам для этого, один из них заключается в том, что он регистрирует, был ли пакет установлен автоматически для удовлетворения зависимостей или нет. Предположим, что обновления установлены в тот же день, и некоторые из них имеют новые зависимости. Если вы попытаетесь удалить их, apt также рекомендует удалить обновленные пакеты. Вы всегда можете удалить автоматические зависимости удаленных пакетов после использования apt-get autoremove .

Один недостаток /var/log/apt/history.log заключается в том, что он регистрирует только пакеты, установленные через apt (командная строка или менеджер пакетов), а не те, которые установлены непосредственно с dpkg . Другим является то, что журнал ужасен для синтаксического анализа:

 date=2014-02-26 awk '$1=="Start-Date:" && $2=="'"$date"'" && got_date="yes" {} got_date=="yes" && $1=="Install:" && got_date="no" { for(i=2; i<=NF; i++) { if( $i !~ /,|\)/ && $(i+2) !~ /^automatic\)/ ) print $i } }' \ /var/log/apt/history.log | xargs sudo apt-get -s remove 

Удалите -s из apt-get когда вы уверены, что у вас есть то, что вы хотите. Формат даты может отличаться от локали, поэтому проверьте свой журнал, чтобы увидеть.

Кроме того, apt-get autremove не будет удалять пакеты, если другой пакет предлагает / рекомендует их (например, пакет устанавливается как зависимость, но сохраняется из-за предложения). Вот команда, чтобы получить все, будьте осторожны, это может удалить больше, чем вы рассчитывали (для меня это на самом деле хочет удалить среду рабочего стола!):

 date=2014-02-26 awk '$1=="Start-Date:" && $2=="'"$date"'" && got_date="yes" {} got_date=="yes" && $1=="Install:" && got_date="no" { for(i=2; i<=NF; i++) { if( $i !~ /,|\)/ ) print $i } }' \ /var/log/apt/history.log | xargs sudo apt-get -s remove 

Снова удалите -s когда -s счастливы.

  • Деинсталляция Gdm завершается с ошибкой («ошибка перед удалением»)
  • Система сборки пакетов для Debian (например, Fedora Koji)
  • Как установить конкретный пакет с зависимостями с помощью команды apt-offline?
  • Как исправить ошибку apt-get install -f apt-transport-https: 404 Не найдено?
  • Что указывают разные элементы версии в имени debian?
  • Самый простой способ обновления пакета выше релиза RHEL
  • Найти все веб-серверы в репозитории
  • Не удалось подключиться к ftp.us.debian.org:http:
  • Что означает deb-src в sources.list?
  • Не удается загрузить python-dev
  • Как найти пакет, содержащий программу в Debian?
  • Linux и Unix - лучшая ОС в мире.