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

47

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

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

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

    
задан Marcelo Ruiz 13.04.2011 в 17:45
источник

6 ответов

11

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

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

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

Возможно, вам нужно удалить весь пакет и установить определенную версию. Afaik, можно установить конкретную версию, но мне никогда не приходилось это делать.

update: посмотрел, как это сделать с помощью apt:

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

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/ (if > = 10.4), названный в честь вашей программы,

Package: program
Pin: version 3.6.3*
Pin-Priority: 1000
    
ответ дан user unknown 13.04.2011 в 19:08
6

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

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

/var/log/dpkg.log

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

sudo apt-get -f install

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

    
ответ дан Giordano Battilana 22.09.2012 в 11:49
6

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

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

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

Пример:
файл_журнал:

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 - чтобы иметь больше контроля над процессом (чтобы избежать поломки зависимостей). Большинство из вас не сломают палец, а проведут несколько проверок «y»

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

    
ответ дан Matt 29.05.2014 в 11:46
3

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

    
ответ дан psusi 13.04.2011 в 20:33
3

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

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

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

    
ответ дан Lekensteyn 13.04.2011 в 23:02
2

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

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

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

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

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

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

    
ответ дан XTL 12.11.2012 в 12:25