Как я 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)
- Этап 1: Переход с Debian 11 (Bullseye) на Debian 12 (Bookworm)
- Коварная ошибка после обновления до Debian 12
- Этап 2: Переход с Debian 12 (Bookworm) на Debian 13 (Trixie)
- А что, если дистрибутив еще старше или статья уже не актуальна?
Этап 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

