Пришла ночь, пора обновлять ОС. Системные администраторы чаще всего занимаются апгрейдом операционный систем по ночам.
Сегодня апгрейдим Ubuntu Server 20.04 до версии 22.04. Апгрейд версии Ubuntu обычно не представляет сложности. Проблем может доставить несовместимость вашего софта с новой ОС. Поэтому, перед апгрейдом нужно подготовиться.
- Если у вас есть возможность сделать бэкап сервера — сделайте бэкап. Проверьте что бэкап восстанавливается.
- Если у вас виртуальная среда — сделайте снапшот сервера, чтобы откатиться обратно в случае сбоя.
- Проведите тестирования вашего ПО на той версии ОС, на которую собираетесь обновляться.
- Убедитесь что на сервере есть доступ в Интернет для загрузки новых пакетов. Или работает прокси.
- Рассчитывайте время, апгрейд может занять несколько часов. Я обновлял 2.5 часа, ещё больше часа потратил на то, чтобы мой софт нормально заработал.
- Ну чего я вас учу, соломки надо подстелить, пивас взять.
У меня всё не так страшно, я буду обновлять домашний сервер, так что обойдусь снапшотом.
Проверим текущую версию ОС:
cat /etc/*release*
У нас Ubunto Server 20.04.6 LTS.
Подготовка к апгрейду
Работаем далее под root.
Если сразу выполнить попытку апгрейда, то ничего может не получиться.
do-release-upgrade
Please install all available updates for your release before upgrading.
Команда проверяет наличие необновлённых пакетов и отказывается запускаться. Сначала нужно всё обновить.
apt update
apt upgrade
Обновляем всё. Перезагружаем сервер.
reboot
При логине по SSH видим:
New release '22.04.3 LTS' available.
Run 'do-release-upgrade' to upgrade to it.
После перезагрузки всё ПО работает нормально, но команда do-release-upgrade
завершается тем же сообщением: "Please install all available updates for your release before upgrading."
Будем обновлять дальше.
apt dist-upgrade
Из мануала apt-get:
upgrade upgrade is used to install the newest versions of all packages currently installed on the system from the sources enumerated in /etc/apt/sources.list. Packages currently installed with new versions available are retrieved and upgraded; under no circumstances are currently installed packages removed, or packages not already installed retrieved and installed. New versions of currently installed packages that cannot be upgraded without changing the install status of another package will be left at their current version. An update must be performed first so that apt-get knows that new versions of packages are available. dist-upgrade dist-upgrade in addition to performing the function of upgrade, also intelligently handles changing dependencies with new versions of packages; apt-get has a "smart" conflict resolution system, and it will attempt to upgrade the most important packages at the expense of less important ones if necessary. The dist-upgrade command may therefore remove some packages. The /etc/apt/sources.list file contains a list of locations from which to retrieve desired package files. See also apt_preferences(5) for a mechanism for overriding the general settings for individual packages.
Из мануала apt:
upgrade (apt-get(8)) upgrade is used to install available upgrades of all packages currently installed on the system from the sources configured via sources.list(5). New packages will be installed if required to satisfy dependencies, but existing packages will never be removed. If an upgrade for a package requires the removal of an installed package the upgrade for this package isn't performed. full-upgrade (apt-get(8)) full-upgrade performs the function of upgrade but will remove currently installed packages if this is needed to upgrade the system as a whole.
Вкратце:
- apt update (apt-get update) — обновление списка доступных пакетов.
- apt upgrade (apt-get upgrade) — обновление установленных пакетов до последней доступной версии, не удаляет пакеты.
- apt dist-upgrade (apt-get dist-upgrade) — обновление установленных пакетов до последней доступной версии со всеми зависимостями, удаляет при необходимости мешающие старые пакеты.
- apt full-upgrade (apt-get full-upgrade) — то же самое что и apt dist-upgrade.
- apt do-release-upgrade (apt-get do-release-upgrade, do-release-upgrade) — обновление релиза.
Команды из разных пакетов, но там везде алиасы прописаны, так что вызов работает.
Обращаем внимание на строку:
Следующие пакеты будут оставлены в неизменном виде:
jellyfin
Это означает, что имеется пакет, который надо бы обновить, но он не хочет обновляться сам, понадобится ручная доработка.
Нам предлагают снести jellyfin-ffmpeg5, вместо него поставить jellyfin-ffmpeg6, я не против. Устанавливаем обновления.
Апгрейд до Ubintu Server 22.04 LTS
do-release-upgrade
Обновление релиза не рекомендуют запускать по SSH, а если запускать, то дополнительная служба появится на порту 1022. Продолжаем.
Обновление может занять несколько часов. Продолжаем.
Начинается апгрейд. В процессе апгрейда нам будут задавать вопросы.
Например, какой ставить fuse.conf? Я там кое что менял, поправлю потом, ставлю из пакета: "Y".
Аналогичный вопрос про minidlna.conf, ответ тоже аналогичный.
Продолжаем апгрейд.
Удалить устаревшие пакеты? Соглашаюсь.
Обновление системы завершено. Продолжаем для перезагрузки.
Сервер перезагружается. Welcome to Ubuntu 22.04.4 LTS. Даже чуть более новая версия поставилась, чем предлагалось ранее. Проверим текущую версию ОС:
cat /etc/*release*
У нас Ubuntu Server 22.04.4 LTS. Апгрейд Ubuntu Server 12.04 до версии 22.04 успешно завершён.
Останется только убедиться, что наше ПО работает на этом сервере, починить при необходимости. Если всё в порядке, снапшот можно удалить и считать что мы молодцы.