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

Как я Debian 11 до 12 и 13 версии обновлял

Вот и появилось настроение сделать очередную статью ни о чём.

Вот у вас было такое, что вы вот нашли себе на голову хостинг-провайдера с дешевыми VPS, а там мало того, что свою ОС не поставишь, дак еще и дистрибутивы старых версий для установки предложены? Дак вот…

Ладно, не буду все же указывать пальцем на провайдера, это в целом распространенный случай.

Если проанализировать предложенные дистрибутивы, то из всего списка самые универсальные для чего угодно, от VPN до сайтов – это Debian и Ubuntu. Экосистема CentOS уже чуть менее удобна. Fedora и Arch Linux вроде норм, но из-за более агрессивной модели обновлений с более высоким шансом что-то поломать уже менее предпочтительны.

Debian, как и Ubuntu, как и CentOS, допускают только поэтапные обновления. Т.е. не получится сразу обновить Debian с 11 до 13. Нужно сначала обновиться с 11 до 12, а потом с 12 до 13. По поводу Ubuntu и CentOS нейронка исходя из списка выше подсказывает следующие этапы:

  • Ubuntu: 22.04 24.04 26.04

  • CentOS: 9 10

У CentOS 9, кстати, поддержка еще есть аж до мая 2027 года. Но увы, у меня в одном случае Debian обязателен, причем именно 12 версия, а во втором случае просто уже нет времени познавать что-то новое и я просто обновляю уже привычный мне Debian до последней 13-й версии, мол чем новее – тем лучше.

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

А порядок такой

Этап 0: Обновление Debian 11 (Bullseye)

Если нейронку просить в лоб как обновить Debian с 11 до 12, она выдаст, мол сначала надо обновить пакеты, вот тебе команда. А уже потом в ходе ошибок придется выяснять дополнительно, что случилось и как это исправлять.

Исключим ошибки сразу: в старых версиях Debian старые источники пакетов. Уж не знаю, пригодится ли копия источников, но сделаем на всякий:

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

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

Проверьте на всякий файлы в /etc/apt/sources.list.d/ и удалите там все нахрен если вдруг что-то есть.

Создаем минимальный sources.list для архива:

sudo tee /etc/apt/sources.list <<EOF
deb http://archive.debian.org/debian bullseye main contrib non-free
deb http://archive.debian.org/debian bullseye-updates main contrib non-free
deb http://archive.debian.org/debian-security bullseye-security main contrib non-free
EOF

Может случиться и так, что security-репозиторий для Debian 11 так и не перебрался полностью в архив и сыпет ошибками. В таком случае в строчке с debian-security вместо архивного источника указываем снапшот с обязательной опцией check-valid-until=no:

deb [check-valid-until=no] http://snapshot.debian.org/archive/debian-security/20260903T220410Z bullseye-security main contrib non-free

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

Затем просто поэтапно обновляем пакеты:

sudo apt update
sudo apt upgrade
sudo apt full-upgrade
sudo apt --purge autoremove
sudo apt clean

Обновление не требуется. Если всё прошло гладко, переходим к следующему этапу.

Этап 1: Переход с Debian 11 (Bullseye) на Debian 12 (Bookworm)

Если вам не пришлось пользоваться снапшотом, то просто замените bullseye на bookworm во всех источниках командой:

sudo sed -i 's/bullseye/bookworm/g' /etc/apt/sources.list

Ну либо/в ином случае можете просто ручками вставить в sources.list следующее:

deb http://deb.debian.org/debian bookworm main contrib non-free non-free-firmware
deb http://deb.debian.org/debian bookworm-updates main contrib non-free non-free-firmware
deb http://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware

Обновление пакетов в этот раз двухэтапное:

sudo apt update
sudo apt upgrade --without-new-pkgs
sudo apt full-upgrade

На вопросах по конфигурационным файлам я отвечал в пользу новых версий и конфигураций с перезапуском сервисов. Особенно важно для ssh: со старой конфигурацией ломался…

После завершения чистимся и перезагружаемся:

sudo apt --purge autoremove
sudo reboot

После загрузки можно посмотреть файлы /etc/debian_version и /etc/os-release, чтобы убедиться, что это действительно Debian 12.

Коварная ошибка после обновления до Debian 12

Если попытаться выполнить команду sudo apt update, то вы можете получить несколько строк с ошибками:

Err:1 http://security.debian.org/debian-security bookworm-security InRelease
  Temporary failure resolving 'security.debian.org'
Err:2 http://deb.debian.org/debian bookworm InRelease
  Temporary failure resolving 'deb.debian.org'
Err:3 http://deb.debian.org/debian bookworm-updates InRelease
  Temporary failure resolving 'deb.debian.org'

Вот что-то не так с DNS, но что? Хорошо, если с нейронкой все же можно будет рано или поздно прийти к удалению resolv.conf и даже узнать причины, почему так, но кажись нет.

Я уже не воспроизведу эту проблему, но в общем при проверке ls -l /etc/resolv.conf обнаруживается, что файл resolv.conf является символической ссылкой на несуществующий файл. Если я правильно понял какой-то из процессов systemd должен был рулить значениями файла в своей директории, но вот что-то пошло не так. В любом случае файл просто удаляем:

sudo rm /etc/resolv.conf

И просто создаём новый, уже нормальный файл /etc/resolv.conf с популярными DNS серверами:

sudo tee /etc/resolv.conf <<EOF
nameserver 8.8.8.8
nameserver 1.1.1.1
nameserver 8.8.4.4
EOF

Или впишите другие DNS сервера, которые вы предпочитаете.

После этого снова пробуем выполнить команду sudo apt update и всё должно работать.

Этап 2: Переход с Debian 12 (Bookworm) на Debian 13 (Trixie)

Если всё прошло гладко, переходим к следующему этапу. Снова сделайте бэкап sources.list:

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

И замените bookworm на trixie во всех источниках командой:

sudo sed -i 's/bookworm/trixie/g' /etc/apt/sources.list

И можем сразу поэтапно обновить систему до 13-й версии:

sudo apt update
sudo apt upgrade --without-new-pkgs
sudo apt full-upgrade

После завершения чистимся и перезагружаемся:

sudo apt --purge autoremove
sudo reboot

Ну и, как обычно, после загрузки можно посмотреть файлы /etc/debian_version и /etc/os-release, чтобы убедиться, что это действительно Debian 13.

А что, если дистрибутив еще старше или статья уже не актуальна?

Если дистрибутив еще старше или уже успели устареть описываемые здесь версии Debian, то в общем и целом алгоритм действий остается примерно таким же, как описан для Debian 11. Однако на примере обновления с Debian 10 на Debian 11 нейронка уже подсказывает отличительную особенность.

В случае с Debian 10 до обновления списка пакетов следует добавить игнорирование срока действия:

echo 'Acquire::Check-Valid-Until "false";' | sudo tee /etc/apt/apt.conf.d/99no-check-valid-until

И затем после обновления пакетов и перед обновлением до Debian 11 нужно удалить этот файл:

sudo rm /etc/apt/apt.conf.d/99no-check-valid-until

В остальном пакеты также берутся из архива:

deb http://archive.debian.org/debian buster main contrib non-free
deb http://archive.debian.org/debian buster-updates main contrib non-free
deb http://archive.debian.org/debian-security buster/updates main contrib non-free

Вот и всё.

 12.10.2026