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]