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

12

Я позволил менеджеру обновлений установить 200 Mib обновлений, и я думаю, что это обновление запускает мой графический драйвер в проблему. Итак, мне нужен способ удалить обновления, которые были установлены с 30 мая по 12 мая, например (или любой другой даты). Если мне придется удалить их вручную (в случае их удаления по одному), просим вас дать мне инструкции, как это сделать.

творческий
источник

Ответы:

8

Существует альтернативный подход командной строки для получения истории установки.

Менеджер пакетов, aptкажется, регистрирует все /var/log/apt/history.logи /var/log/apt/term.log, в том числе разделяет все по датам. Оба содержат похожую, полезную информацию, но term.logоба более многословны и не указывают явно, что инициировало операцию.

Журнал истории

/var/log/apt/history.logхранит краткое резюме каждого aptпрогона. Вот мой фрагмент для ручной установки:

Start-Date: 2014-08-22  17:17:52
Commandline: apt-get install nautilus-dropbox
Install: nautilus-dropbox:amd64 (1.6.1-1), python-gpgme:amd64 (0.3-0ubuntu3, automatic)
End-Date: 2014-08-22  17:19:13

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

Commandline: aptdaemon role='role-commit-packages' sender=':1.131'

... и вот ваш список пакетов, отсортированный по дате, способу и действию (установка / обновление / удаление). Обратите внимание, что если вы хотите передать эти пакеты обратно apt-get remove ...:

  • Как уже упоминалось , это полностью удаляет пакеты, а не возвращает их. Информация в журналах, безусловно, может использоваться для просмотра обновленных пакетов, хотя откат их - это другой вопрос.
  • Вам нужно убрать скобки, их содержимое и разделитель запятых из списка с помощью предпочтительного метода обработки текста (например sed, vimи т. Д.). Поэтому, если я хочу удалить пакеты из приведенного выше фрагмента, я могу использовать строку относительно напрямую:

    sudo apt-get remove nautilus-dropbox:amd64 python-gpgme:amd64
    

Терминал журнала

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

Selecting previously unselected package nautilus-dropbox.

Ниже приведен один из способов печати списка установленных пакетов на терминал для всего журнала:

$ awk '/^Selecting/ {gsub(/\./,""); print $5}' /var/log/apt/term.log

Это может быть адаптировано или расширено, чтобы получить установки в диапазоне дат.

Электрическая головка
источник
1
Если это может сделать жизнь человека проще, вот СЭД фрагмента кода я использовал , чтобы удалить скобки и запятые из /var/log/apt/history.log перечисленного пакета , так что я мог бы кормить их apt-get remove: sed 's/ ([^)]*)//g' | sed 's/,//g').
Apteryx
4

Примечание: В отличие от Windows, удаления обновления в Ubuntu будет нормально удалить этот пакет / программа и будет не просто отменить (или понижение) его предыдущей версии.

Вы можете открыть Ubuntu Software Center и нажать на историю

введите описание изображения здесь

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

введите описание изображения здесь

Чтобы удалить, вы можете использовать Synaptic Package Manager. Если он не установлен, вы можете установить его с

Митч
источник
Спасибо. Включает ли это какие-либо команды на терминале?
креатив