Rate this post

Rollback к предыдущей версии может решить проблемы возникшие в случае неудачного обновления и в тоже время освободит дисковое пространство. Centos и Redhat поддерживают процедуру отката, но Debian и Ubuntu пока не поддерживают процедуру отката.n

Определим проблему прежде чем выбрать решение

Я удаленно администрирую сервер Ubuntu 14.04.3 LTS в одном из этих дешевых облаков, и я периодически использую команду atp-get для установки пакетов или апгрейдов. Я хотел установить Planet Venus ​​на моей системе. По какой-то странной причине, я запустил:n

sudo apt-get -y --install-suggests install planet-venus

Я должен был остановить установку. Результатом была катастрофа. Закончилось дисковое пространства, и было установлено 1764 пакетов в системе. Моя установка Planet Venus так же не работала. Это был один из тех дней, когда я совершил ошибки и забыл предварительно выполнить резервное копирование.nnДалее решение моих безрассудных действий.nnЯ загуглил в поиске и не нашел ничего, что бы мне помогло решить проблему. Оставил несколько сообщений с просьбой о помощи, и получил несколько советов, который натолкнули меня на мысль как решить мою задачу.n

Как откатить apt-get обновление из командной строки?

Я запустил командуn

grep -A 2 'Start-Date: 2016-01-17 07:56:42' /var/log/apt/history.log

И получил список пакетов, которые установил. Создал список:n

grep -A 2 'Start-Date: 2016-01-17  07:56:42' /var/log/apt/history.log | tail -1 >/tmp/packages.txt

Отредактировал полученный файл, удалив из него фразу Installn

vi /tmp/packages.txt

илиn

sed -i 's/Install://' /tmp/packages.txt

Далее подчистил еще несколько деталейn

tr ',' '\n' < /tmp/packages.txt | sed '/automatic)/d' | awk '{ print $1}' > /tmp/final.packages.txtnwc -l /tmp/final.packages.txtnn1764 /tmp/final.packages.txt

В результате получил список установленных пакетов по одному в строке. Теперь удалим пакеты.nnТеперь у меня есть целый список всех пакетов, установленных в этой черный день))nnПросмотрим егоn

less /tmp/final.packages.txt

Теперь просто удалим эти пакетыn

# Запускать от rootn# Сохраним имя пакетов в $pnp="$(</tmp/final.packages.txt)"n# Nuke itnapt-get --purge remove $pn#clears out the local repository of retrieved package filesnapt-get cleann# Just in case ...napt-get autoremoven# Проверим свободное пространствоndf -H

Какие выводы я для себя сделал:n

  • Выполнять резервное копирование перед каждым внесением изменений в систему
  • Подумать дважды прежде чем выполнять команду
  • Никогда слепо не доверять команде которая имеет опцию -y

Если Вам нужны услуги администрирования и поддержки сервера, обращайтесь [email protected]