Перейти к основному содержанию

Ubuntu Server 18.04 — апгрейд до версии 20.04

Ubuntu

Всем доброй ночи. Ночи, потому что системные администраторы чаще всего занимаются апгрейдом операционный систем по ночам, потому как днём на серверах работают юзеры.

Сегодня апгрейдим Ubuntu Server 18.04 до версии 20.04. На самом деле апгрейд версии Ubuntu обычный запланированный процесс, скорее, проблем может доставить несовместимость работы вашего софта. Поэтому, перед апгрейдом нужно подготовиться.

  • Если у вас есть возможность сделать бэкап сервера — сделайте бэкап. Проверьте что бэкап восстанавливается.
  • Если у вас виртуальная среда — сделайте снапшот сервера, чтобы откатиться обратно в случае сбоя.
  • Проведите тестирования вашего ПО на той версии ОС, на которую собираетесь обновляться.
  • Убедитесь что на сервере есть доступ в Интернет для загрузки новых пакетов.
  • Рассчитывайте время, апгрейд может занять несколько часов. Я обновлял 2.5 часа, плюс 30 мин допиливал напильником моё ПО, которое не хотело сразу запускаться.
  • Ну чего я вас учу, соломки надо подстелить, пивас взять.

У меня всё не так страшно, я буду обновлять домашний сервер, так что обойдусь снапшотом.

linux

Каждый раз при логине по SSH видим:

New release '20.04.6 LTS' available.
Run 'do-release-upgrade'

Посмотрим текущую версию:

uname -a
lsb_release -a

linux

У нас с вами ядро 4.15, Ubintu 18.04.6 LTS.

Подготовка к апгрейду

Работаем далее под root.

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

do-release-upgrade

linux

Please install all available updates for your release before upgrading.

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

apt update

linux

apt upgrade

linux

Обновляем всё. Обращаем внимание на строку:

Следующие пакеты будут оставлены в неизменном виде:
jellyfin

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

linux

Устанавливаются обновления.

linux

Мне нужно убедиться, что после обновления ничего не сломалось, перезагружаю сервер:

reboot

После перезагрузки всё ПО работает нормально, но команда 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) — обновление релиза.

Команды из разных пакетов, но там везде алиасы прописаны, так что вызов работает.

linux

Нам предлагают снести jellyfin-ffmpeg, вместо него поставить jellyfin-ffmpeg5, я не против.

do-release-upgrade

linux

Обновление релиза не рекомендуют запускать по SSH, а если запускать, то дополнительная служба появится на порту 1022. У меня есть возможность запустить обновление из консоли, отменяю апгрейд и отключаюсь от SSH.

ВНИМАНИЕ! Дальше пока не действуйте, дочитайте до момента, когда я отказался от консоли.

Вхожу через консоль.

linux

do-release-upgrade

linux

И попадаю в неприятную ситуацию. Для продолжения мне нужно ввести на кириллице "д", но консоль отказывается мне переключать язык, ерунда какая-то, всё перепробовал, но на русский язик переключиться так и не смог. А скрипт не принимает английскую "y".

linux

Отменяю установку, решаю вернуться к SSH. Попадаю в ещё одну неприятную ситуацию, инсталлятор уже накатил кучу пакетов, которые требуется снова обновить.

Так не пойдёт, откатываю сервер на сделанный снапшот, захожу через SSH, устанавливаю обновления.

Апгрейд до Ubintu Server 20.04.6 LTS

Добрались до нормального апгрейда по SSH.

do-release-upgrade

Теперь кириллица работает, соглашаюсь продолжить.

linux

Нам сообщают, что некоторые сторонние репозитории будут отключены. Потом проверю что там было, обновлю при необходимости.

linux

Опять почему-то жалобы на jellyfin-ffmpeg, я ж удалял его, видимо не до когда. Продолжаем.

linux

Начинается апгрейд.

linux

В процессе апгрейда нам будут задавать вопросы. Например, просят перезагрузить сервис. Соглашаюсь.

linux

Спрашивают какую версию lxd ставить. Выбираю рекомендованную.

linux

Продолжаем апгрейд.

linux

Какой ставить sysctl.comf? Я там не менял ничего, ставлю из пакета: "Y".

linux

Что делаем с sshd_conf? Там я тоже ничего не менял, выбираю "Установить версию из пакета". OK.

linux

Удалить устаревшие пакеты? Соглашаюсь.

linux

Обновление системы завершено. Продолжаем для перезагрузки.

linux

Сервер перезагружается. Welcome to Ubuntu 20.06.6 LTS.

linux

Апгрейд Ubuntu Server 18.04 до версии 20.04 успешно завершён.

linux

Останется только убедиться, что наше ПО работает на этом сервере, починить при необходимости. Если всё в порядке, снапшот можно удалить и считать что мы молодцы.

На самом деле после перезагрузки напишут:

New release '22.04.3 LTS' available.
Run 'do-release-upgrade'

Но это уже совсем другая история...

Теги

 

Похожие материалы