Есть ли способ откатить самое последнее обновление?

55

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

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

Я читал, что эта идея была описана в brainstorm.ubuntu.com, но кажется, что она мертва ... и форумы полны примеров обновлений, ломающих вещи, поэтому я чувствую, что с этой темой нужно что-то делать. Спасибо!

Марсело Руис
источник
17
Я подписываюсь, чтобы проголосовать за этот вопрос. Отсутствие единого инструмента отката в настольной ОС 2011 года вызывает жалость. Windows восстановила систему 5+ лет назад, это далеко позади. Пользователи были ( правильно ) обучены установке обновлений безопасности, но мы постоянно наказываем за это неудачными драйверами.
Гейтс вице-президент
@GatesVP Этот пункт, который вы высказали 8+ лет назад, все еще мучает Ubuntu (не могу говорить о других дистрибутивах, но они, вероятно, не лучше). Я нахожу это совершенно расстраивающим. Кто-то должен напечатать ваши слова шрифтом 64 pt и повесить перед каждым новичком, собирающимся окунуться в мир linux.
horaceT
Я должен согласиться, что резервный образ - это путь. Не указано, является ли это «производственной» системой. Если есть и возможно иметь систему тестирования клонов, то это с резервным копированием образа. Если это просто обновление приложения, то самым быстрым решением является понижение версии с или без «принудительной» опции.
JHPArizona Аризона

Ответы:

14

В synaptics вы можете по крайней мере контролировать, какие были последние обновления: File-menu, history.

(если синаптик запускается, с нарушенной системой). Так что с помощью команды apt -...-, чтобы отменить их обновление, это не должно быть слишком сложно.

Я думаю, что есть командная история для командной строки тоже.

Возможно, вам придется удалить весь пакет и установить конкретную версию. Афаик, можно установить конкретную версию, но мне никогда не нужно было это делать.

обновление: посмотрел, как это сделать с apt:

Найти пакеты, установленные за последние 3x24 часа:

find /var/lib/dpkg/info/ -name \*.list -mtime -3 | sed 's#.list$##;s#.*/##' 

С политикой apt-cache вы видите доступные версии программы:

sudo apt-cache policy PROGRAM:
 *** 3.6.7+build3+nobinonly-0ubuntu0.10.04.1 0
        500 http://de.archive.ubuntu.com/ubuntu/ lucid-updates/main Packages
        500 http://security.ubuntu.com/ubuntu/ lucid-security/main Packages
        100 /var/lib/dpkg/status
     3.6.3+nobinonly-0ubuntu4 0

здесь 3.6.7 и 3.6.3. Теперь вы знаете, какая более ранняя версия может быть установлена ​​(часто не непосредственный предшественник):

sudo apt-get install PROGRAM=3.6.3

Затем вам нужно сделать apt-pinning, чтобы предотвратить будущие обновления:

Создайте новый файл в /etc/apt/preferences.d/ (если> = 10.4) с именем вашей программы,

Package: program
Pin: version 3.6.3*
Pin-Priority: 1000
неизвестный пользователь
источник
Спасибо всем за информацию. Я не могу дождаться, когда Ubuntu сможет управлять zfs из коробки!
Марсело Руис
Извините - какое это имеет отношение к zfs? Zfs управляет откатами? Или обновления ломают вашу zfs-установку? Или zfs-update что-то ломает?
пользователь неизвестен
Что если версия 1.0.2g-1ubuntu4.12соответствует apt? Он отказывается принять это как номер версии. Я хочу понизить форму 1.0.2g-1ubuntu4.13до1.0.2g-1ubuntu4.12
Csaba Toth
спасибо, suuuuuuuuuuuuch боль, хотя. В моем последнем обновлении, в котором полностью уничтожен вход контроллера, find /var/lib/dpkg/info/ -name \*.list -mtime -3 | sed 's#.list$##;s#.*/##' на данный момент перечислено ровно 80 пакетов, и это не составит труда переустановить всю мою систему
tatsu
7

В основном вы можете проконсультироваться /var/log/apt/history.logоб изменениях, сделанных apt / synaptic. Это просто немного судебно-медицинской экспертизы и много вырезать / вставить, чтобы сделать.

Вернитесь к дате, когда ваша система все еще работала нормально.

Сначала возьмите все пакеты, которые были установлены с тех пор, и соедините их в сценарий удаления. Когда сценарий завершится, начните заново добавлять все удаленные пакеты.

Пример случая:
logfile:

Start-Date: 2014-05-28  21:28:11
Commandline: synaptic
Install: libfglrx-amdxvba1:amd64 (13.12-3kali1, automatic), libgl1-fglrx-glx:amd64 (13.12-3kali1), glx-alternative-fglrx:amd64 (0.4.1kali1, automatic), libfglrx:amd64 (13.12-3kali1, au$
Remove: fglrx-glx-ia32:amd64 (12-6+point-3)
End-Date: 2014-05-28  21:28:27

ты можешь видеть,

libfglrx-amdxvba1:amd64 libgl1-fglrx-glx:amd64 glx-alternative-fglrx:amd64 & libfglrx:amd64 

был установлен Synaptic. как будто libfglrx:amd64был удален Synaptic.

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

Рабочая команда для этого случая может выглядеть так:

sudo apt-get remove -y libfglrx-amdxvba1:amd64 libgl1-fglrx-glx:amd64 glx-alternative-fglrx:amd64 libfglrx:amd64 && sudo apt-get install -y libfglrx:amd64

Возможно, было бы не самой лучшей идеей обходиться без -yпереключателя - иметь больший контроль над процессом (чтобы избежать нарушенных зависимостей). Большинство из вас не сломало бы свой палец, пока делали несколько проверок "у"

В большинстве случаев откат возможен таким образом, но если зависимости уже нарушены - вы можете столкнуться с еще большей проблемой.

Matt
источник
6

В большинстве случаев, если ваша система сломана, это проблема ядра .

Просто загрузите старое ядро ​​и переустановите самые последние пакеты (особенно пакеты ядра), которые, вероятно, не обновились правильно. Несколько заметок:

/var/log/dpkg.log

ваш друг, чтобы проверить, что является списком недавно обновленных / установленных пакетов

sudo apt-get -f install

может большую часть времени исправить наполовину установленные пакеты

Джордано Баттилана
источник
4

К сожалению, пока нет способа сделать это. Снимок / откат на уровне файловой системы является одной из функций будущих btrfs, но у него есть способы еще стать полноценными и достаточно стабильными для использования в качестве файловой системы по умолчанию.

psusi
источник
1
Для моментальных снимков файловой системы вы можете использовать LVM вместо ext3 или ext4.
Flimm
@Flimm, теперь вы можете, хотя это не очень хорошо работает и требует, чтобы вы сначала установили LVM при установке.
Псуси
3

При выполнении серьезной модернизации, я клонировать жесткий диск с помощью Clonezilla . Запишите его на компакт-диск, подготовьте запасной (внешний) жесткий диск и следуйте инструкциям на Clonezilla LiveCD. Выберите partition-imageрежим, это занимает меньше всего места.

Если вы считаете, что сломали свою систему (или хотите отменить любые изменения), просто загрузитесь с Clonezilla LiveCD, выберите образ на своем (внешнем) жестком диске и восстановите его. Поскольку эти образы являются буквальной копией каждого бита на вашем диске, это может занять несколько часов в зависимости от скорости вашего диска и скорости соединения (соединение между данными, обычно внешним USB HDD, и компьютером).

Кстати, это называется методом резервного копирования.

Lekensteyn
источник
3

Вы можете легко установить более старую версию данного пакета (downgrade) с помощью apt или dpkg . Найти более старую версию пакета - проблема, поскольку они часто исчезают из пула и отражаются при обновлении.

Если вы устанавливаете пакет с установочного компакт-диска или устаревшего зеркала или из кэша, вам также нужно будет прикрепить его к старой версии, чтобы он не обновлялся до тех пор, пока вы это не допустите. Это означает, что вы должны следить за обновлениями и проверять их, пока ваша проблема не будет устранена. Это, конечно, проблема, поскольку между тем (возможно, навсегда) у вас останется нефиксированный, возможно, небезопасный пакет. Это означает, что каждый пользователь с какой-либо системной проблемой будет оставаться в случайном состоянии до тех пор, пока он не сможет ее решить.

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

Было бы здорово, если бы был способ сделать это, но это очень проблематично. Любой, кто считает, что есть согласованное решение, должен написать предложение и предложить комментарии или, что еще лучше, сделать решение концепции (код, сценарий, документ). Троллинг и нытье не конструктивны.

Поскольку не существует чистого технического решения, большая часть программного обеспечения разрабатывается (и интегрируется) с менталитетом «единственный путь - вперед». Попытка управлять устаревшими версиями - пустая трата времени каждого. Найденные проблемы исправлены в более новых версиях как можно скорее. В качестве незначительного решения я хотел бы видеть архив предыдущих версий пакетов, которые хранятся где-то для временного временного решения.

Между тем вы можете сообщать об ошибках и не ожидать, что передовые программы никогда не выйдут из строя. Исправление, найденное, должно быть в следующем обновлении. Разработчики - люди (в основном), и поэтому подвержены ошибкам. Компьютеры полны безумного разнообразия и деталей. Системы с защитным обслуживанием, использующие хорошо поддерживаемые компоненты и стабильное интегрированное распространение программного обеспечения, могут быть очень стабильными, не становясь небезопасными или не обновляемыми, несмотря на это.

XTL
источник