Ubuntu как откатить последние изменения

Обновлено: 04.07.2024

У меня дома используется Debian Sid. Большей частью он весьма и весьма хорош, но местами он слишком Bleeding слишком Edge. Например, когда отгружает пакеты, ломающие работоспособность системы. Вчера приехал wpasupplicant, который сломал мне wifi. Я его откатил, но в процессе я подумал, что многие пользователи не умеют этого делать. Рассказ "как откатить плохой apt-get install/upgrade" — в этом посте.

Мы сделали apt-get install что-то, или apt-get upgrade, или даже apt-get dist-upgrade, и после перезагрузки (или даже сразу же) обнаружили, что так нельзя. Сервис не стартует, убрана важная нам фича, кто-то падает и т.д. Мы хотим откатиться. Но вот, незадача — куда именно мы не знаем, потому что какая была версия до обновления мы не знаем.

apt ведёт очень подробные логи в /var/log/apt . Там есть, в частности, history.log — там будут строчки вида:

Там же будет написано кто это сделал и какой командой.

Чтобы понять, какая версия была предыдущей, придётся посмотреть на лог установки. Он рядом — /var/log/apt/terminal.log . К сожалению, с esc-последовательностями.
Там мы увидим строчку вида:

Чтобы поставить обратно пакет по версии, мы указываем её в явном виде:

К сожалению, 90% это не сработает. Почему? Потому что пакета такой версии в репозитории нет.

В этом случае нам надо найти файл для установки. Он может быть в двух местах.

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

… и у меня снова есть интернет. Есть вероятность, что придётся разбираться с зависимостями, но хорошая новость состоит в том, что если пакеты не конфликтовали до обновления, то их можно откатить в тот же набор версий. И какие именно это версии видно в выводе terminal.log.

Как его подключать — написано там, хотя чаще проще просто скачать нужный пакет. Важно: когда ищите снапшот, проверяйте по версиям в логах. Если зависимости противные и сложные, то имеет смысл автоматизировать парсинг terminal.log .

Альтернативный путь: можно попробовать apt-cache policy wpasupplicant чтобы посмотреть на доступные версии и выбрать одну их них (тоже через знак равно). В моём случае это было бесполезно, ибо интернетов не было. Важно: как только вы начинаете откатываться на старые версии, вы рискуете сделать себе такую конфигурацию по зависимостям, которую так просто уже не разберёшь, так что я рекомендую при наличии зависимых пакетов в первую очередь пробовать откатиться на предыдущие версии, а не искать себе приключений посредством даунгрейда на антиквариат.

Чтобы случайно снова не проапдейтиться, пакет можно поставить на hold (запретить апдейты):

(unhold снимает hold).

Я давно для себя выработал привычку делать "dpkg -l >/var/log/dpkg_ date " перед апдейтом. В таком виде его легче парсить, если нужно делать большое количество даунгрейдов.

Я только что установил новую версию Ubuntu и хочу откатить ее до предыдущей версии.

Как я могу это сделать? Это вообще возможно?

Понижение версии возможно до некоторой степени. С достаточным количеством сражений это может быть сделано (см. Некоторые другие ответы здесь для технических деталей).

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

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

Если вы хотите проверить что-то в будущем и боитесь, что у вас могут возникнуть проблемы, всегда делайте следующее:

  • Сначала протестируйте LiveCD. Если у вас возникнут немедленные проблемы с оборудованием, об этом следует сообщить.
  • Сделайте резервную копию, прежде чем делать что-либо. Я знаю, что все и их мать уже сказали вам сделать это, но это действительно важно, если вы думаете, что у вас будут проблемы. Если вы не можете обойтись без своей машины более 20 минут, подумайте о некоторых инструментах клонирования полного диска, таких как Clonezilla, чтобы вы могли просто восстановить предыдущую версию диска. Есть и другие инструменты, которые могут предложить аналогичные результаты.
  • Храните ваши данные отдельно. Имея ваш /home/ в том же разделе, что и ваша установка, - это рецепт головной боли, если вы постоянно обновляете или понижаете производительность. Переместите его на другой диск или, по крайней мере, в другой раздел, чтобы при необходимости переустановки вам действительно нужно было настроить монтирование.
  • Была критическая ошибка для понижения версии, которая была исправлена ​​командой Ubuntu QA. Обязательно прочитайте об этом, так как некоторые люди порекомендуют вам просто вставить старый CD и "обновить" его, но это плохая идея.

На моем языке есть поговорка, которую можно примерно перевести как "Вы не можете превратить мясной фарш обратно в мясо, вращая рукоятку мясорубки в противоположном направлении":)

введите описание здесь

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

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

Обычно apt предпочитает устанавливать самую последнюю версию пакета. Но вы можете изменить это с помощью закрепления: вы можете объявить, что пакеты из старого выпуска имеют более высокий приоритет, чем установленные пакеты, так что они будут понижены, когда вы это сделаете aptitude dist-upgrade ,

Измени свой /etc/apt/sources.list включить только старый выпуск (отредактируйте файл или используйте ваш любимый графический интерфейс) и запустите aptitude update , Затем отредактируйте /etc/apt/preferences (задокументировано в apt_preferences man page) и добавьте следующие строки (чтобы перейти на lucid):

Тогда беги aptitude dist-upgrade , Каждый пакет имеет приоритет больше 1000, поэтому каждый пакет, который присутствует в 10.04 и установлен в вашей системе, будет понижен. Вам придется удалить пакеты, которых не было в 10.04, вручную; они будут перечислены в разделе "Устаревшие и локально созданные пакеты" в aptitude.

Они говорят "никогда не говори никогда" и "нет ничего невозможного" - и то, и другое верно, но не в вашем случае. Я предлагаю вам либо сделать резервную копию ваших данных и переустановить, либо выложить их. Система должна становиться все более и более стабильной с течением недель.

Вы также можете переустановить поверх существующей установки (она сохранит ваши файлы).

Однако, как правило, старайтесь избегать обновления до версий разработки на производственных системах (особенно, если вы не являетесь тестировщиком / разработчиком).

Вы можете сделать это вручную.

Сначала создайте список того, что вы установили в своей системе. Вы можете сделать это, набрав в терминале следующее.

скопируйте папку /home и /etc на резервный носитель.

Переустановите Ubuntu 10.04. Восстановите резервную копию (не забудьте установить правильные права доступа). Затем выполните следующее, чтобы переустановить все программы, которые у вас были раньше.

Обратите внимание, что вам может потребоваться очистить папку /etc и /home для несовместимых настроек.

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

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

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

APT просто спроектирован так, чтобы максимально избежать откатов, а пакеты, составляющие дистрибутив Ubuntu (и, в данном случае, Debian), не предназначены для плавного отката в качестве цели проектирования.

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

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

Было бы неплохо иметь возможность спокойно обновлять систему или попробовать новую версию дистрибутива не боясь проблем и ошибок, зная что вы всегда можете откатить Ubuntu назад к прежнему состоянию. В этой статье мы рассмотрим инструмент, который позволяет сделать снимок состояния системы Ubuntu в любое время. TimeShift очень похож на функцию восстановления системы в Windows, программа позволяет восстановить состояние ubuntu. Сначала вы создаете снимок, можете запланировать автоматическое создание снимков через заданные промежутки времени, а затем просто восстанавливаете систему.

TimeShift защищает только системные файлы и настройки, но не восстанавливает пользовательские данные, такие как фото, музыка, документы. Если вам нужно делать резервную копию именно таких файлов, придется использовать другие инструменты.

Установка TimeShift

В современных версиях Ubuntu программа Timeshift уже есть в официальных репозиториях, поэтому для установки достаточно выполнить:

sudo apt install timeshift

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


Когда установка завершится, можете закрыть окно терминала, а программа будет доступна в главном меню. Для того чтобы её найти наберите в строке поиска Timeshift:


Откат системы Ubuntu


Для работы программы нужны права root, поэтому после запуска появится окно с запросом пароля. Введите его и нажмите Ok.

При первом запуске утилиту надо настроить. Сначала мастер настройки спросит вас каким способом создавать снимки файловой системы. Доступно два варианта: с помощью утилиты rsync или встроенными средствами Btrfs. Если вы используете не файловую систему ext4, то вариант с Btrfs не подойдёт. Снимки rsync будут инкрементные, сначала программа скопирует все системные файлы, затем в каждом новом снимке будут копироваться только измененные:


Затем надо выбрать устройство, на котором надо сохранять снимки. Поддерживаются только разделы, отформатированные в файловые системы Linux, такие файловые системы как FAT и NTFS не поддерживаются:


Далее надо настроить автоматическое создание снимков. Если вы хотите его отключить просто снимите все галочки. Я указал создавать снимок файловой системы каждый месяц. Ещё здесь можно настроить сколько таких снимков надо сохранять. По умолчанию сохраняется пять последних снимков:


На следующем шаге надо выбрать добавлять ли домашние каталоги пользователей в снимок. Можно их вовсе не добавлять, добавлять только скрытые файлы или все файлы. Для экономии места на диске домашние каталоги лучше оставить исключёнными (Exclude all files):


Только теперь перед вами откроется главное окно программы:


Здесь отображается свободное место, доступное для создания снимков, а также все снимки, созданные на данный момент. Для создания первого снимка нажмите кнопку Создать:


После завершения создания снимка он появится в списке:


Вы можете посмотреть его содержимое нажав кнопку Обзор:


Физически в файловой системе все снимки находятся в директории /timeshift. Здесь есть каталоги, как с уже созданными снимками, так и пустые, для запланированных. Подкаталог snapshots содержит снимки, созданные вручную. Лучше скопировать снимок на USB флешку, другой диск или загрузить на один из облачных сервисов, на случай если диск будет поврежден, и вам нужно будет откатить обновления Ubuntu.


Все настройки, которые мы задавали с помощью мастера при первом запуске программы можно найти кликнув по кнопке Настройки:


Для того чтобы выполнить откат системы Ubuntu просто выберите нужный снимок и нажмите кнопку Восстановить:


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

Выберите устройство для восстановления корневой файловой системы Если вы считаете, что загрузчик тоже был повреждён, то нажмите кнопку Дополнительные параметры загрузчика, и выберите устройство для его восстановления:


После завершения настроек нажмите кнопку Далее чтобы отменить изменения Ubuntu. Программа покажет файлы, которые были изменены, подтвердите, что надо откатить изменения:


Затем система перезагрузится:


После этого вы вернетесь в систему, какой она была во время создания снимка, при чём заменены будут только системные файлы, пользовательские файлы останутся на месте.

Если ваша система повреждена, то скорее всего у вас нет доступа к графическому интерфейсу. Но у timeshift есть возможность работать и через терминал. Для просмотра доступных снимков выполните:

sudo timeshift --list

Далее вы можете восстановить нужный вам снимок такой командой:

sudo timeshift --restore --snapshot --target /dev/sda

После этого утилита спросит нужно ли устанавливать загрузчик, и если да, то на какой диск:


Затем попросит подтверждения восстановления и после этого компьютер перезагрузится.

Выводы

TimeShift это очень полезный инструмент, если вы любите экспериментировать с обновлениями системы. Он очень пригодится если что-то пойдет не так. Также, как и в Windows, вы можете просто выполнить откат системы Ubuntu к предыдущему состоянию и дальше экспериментировать не переустанавливая систему. Вы даже можете откатить ubuntu до первоначального состояния, просто создав снимок сразу после установки.

Пакет для понижения версии в Linux

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

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

Поскольку не существует общего метода для всех дистрибутивов, я покажу, как это можно сделать с помощью самые популярные менеджеры пакетов. Кстати, если вы используете другие методы, такие как YaST, Synaptic и т. Д., Процедуры также возможны, но графически и намного более интуитивно понятны. Здесь я объясню методы через консоль, которые вызывают наибольшую путаницу .

apt-get: Debian / Ubuntu и производные

Для всех дистрибутивы на основе пакетов DEB а с помощью диспетчера пакетов apt-get вы можете легко перейти с более современной версии на более старую. Например, мы возьмем пакет firefox в качестве эталона, представив, что мы хотим вернуться от текущей версии к предыдущей. В этом случае вы можете выполнить следующие команды:

  • Вы можете получить информация о пакете firefox (или что-то еще, вам просто нужно изменить имя на соответствующее в вашем случае), например, предыдущие установленные версии и т. д., вы можете использовать следующую команду:
  • Как только вы хорошо знаете предыдущая версия, которую вы хотите установить, вы можете использовать следующую команду для установки нужного пакета. В нашем случае в предыдущей команде мы получили пакет с именем firefox = 57.3-build1-0ubuntu1, который мы хотим установить:
  • После этого у вас уже будет установлена ​​предыдущая версия этой программы. Вы знаете, что если нет указать версию Используя APT, вы устанавливаете последнюю версию, доступную в репозитории этого пакета. В данном случае мы указали конкретную версию.

Помните, что возможно, что сосуществуют два разных пакета версий на GNU / Linux без проблем. Итак, если вы хотите иметь две разные версии одного и того же пакета, вы можете это сделать .

pacman: Arch Linux и производные

Если у вас есть Arch Linux, то вам придется иметь дело с pacman как с менеджером пакетов. Этот инструмент также позволяет вам вернуться к предыдущей версии, если хотите. Способ сделать это немного другой, но такой же простой:

  • Искать ев кеше пакета доступные версии, вы можете проверить запись. Чтобы отфильтровать результаты только для пакетов firefox в нашем случае (но вы уже знаете, что можете заменить имя пакета на то, которое хотите . ), вы можете использовать:
  • Теперь, когда вы знаете, какая версия вам нужна, вы можете использовать следующую команду установить это:

zypper: SUSE / openSUSE и производные

В мире SUSE, вы можете использовать менеджер пакетов zypper. Это также простой способ получить пакет в предыдущей версии. В нашем случае с Mozilla Firefox это будет примерно так:

  • Первым делом нужно обратиться к кешу пакетов аналогично тому, как мы это делали для Arch, с помощью следующей команды, чтобы узнать предыдущие версии пакета в наличии:
  • Как только предыдущая версия будет найдена, вы сможете установить эту версию используя zypper следующим образом:

dnf: Red Hat / CentOS / Fedora и производные

Наконец, в дистрибутивах на основе Fedora yum или dnf будут использоваться. Чтобы отменить обновление пакета и вернуться к предыдущей версии с пониженной версией, вы можете использовать следующие команды:

  • В этом случае первым делом нужно будет увидеть предыдущие версии пакета, который вы пытаетесь установить в репозитории DNF. В нашем примере вы можете использовать эту команду для получения списка:
  • Теперь, когда вы внимательно посмотрите на имя версия, которую вы хотите установить, вам просто нужно скопировать его из данных, выданных в выводе предыдущей команды, и вставить в следующую. Например:

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

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

Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.

Полный путь к статье: Любители Linux » Общие » Программное обеспечение Linux » Переход на более раннюю версию: возврат к предыдущей версии программного пакета.

Читайте также: