У старых релизов Ubuntu есть типичная проблема: система ещё работает, но apt update начинает возвращать 404. Чаще всего релиз сняли с поддержки, а его репозитории переехали из обычного зеркала в архив old-releases.ubuntu.com.
Используйте этот способ как временный мост к поддерживаемой версии, а не как повод годами держать EOL-сервер в продакшене.
Как выглядит проблема
sudo apt update # 404 Not Found # The repository does not have a Release file
Проверяем кодовое имя релиза
lsb_release -a cat /etc/os-release
Запомните VERSION_CODENAME: xenial, bionic, focal или другое имя вашей Ubuntu.
Делаем резервную копию sources.list
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup.$(date +%F)
Меняем репозитории на old-releases
sudo sed -i 's|http://archive.ubuntu.com/ubuntu|http://old-releases.ubuntu.com/ubuntu|g' /etc/apt/sources.list sudo sed -i 's|http://security.ubuntu.com/ubuntu|http://old-releases.ubuntu.com/ubuntu|g' /etc/apt/sources.list sudo sed -i 's|http://[a-z][a-z].archive.ubuntu.com/ubuntu|http://old-releases.ubuntu.com/ubuntu|g' /etc/apt/sources.list
Если использовались HTTPS-зеркала, зеркало провайдера или локальный mirror, проверьте файл вручную.
grep -nE 'ubuntu|old-releases' /etc/apt/sources.list
Обновляем индексы пакетов
sudo apt clean sudo apt update
Если ошибка осталась, проверьте сторонние репозитории в /etc/apt/sources.list.d/. Старые PPA часто ломают обновление не хуже основного зеркала Ubuntu.
ls /etc/apt/sources.list.d/ grep -R "deb " /etc/apt/sources.list.d/
Готовим систему к upgrade
sudo apt upgrade sudo apt full-upgrade sudo apt autoremove sudo do-release-upgrade
Если система очень старая, иногда приходится идти по цепочке релизов, а не прыгать сразу на последнюю LTS.
Что сделать перед обновлением сервера
- сделайте snapshot или бэкап;
- убедитесь, что есть консоль провайдера на случай потери SSH;
- проверьте свободное место на
/и/boot; - отключите ненужные сторонние репозитории;
- после перехода на поддерживаемую Ubuntu верните нормальные репозитории.
Если do-release-upgrade не видит новый релиз
На EOL-системах do-release-upgrade иногда ругается, что новый выпуск не найден. Проверьте файл /etc/update-manager/release-upgrades. Для LTS-серверов обычно нужен режим Prompt=lts, для перехода на любой следующий релиз — Prompt=normal.
grep -n "^Prompt" /etc/update-manager/release-upgrades sudo nano /etc/update-manager/release-upgrades
Если система пропустила несколько поколений Ubuntu, не пытайтесь перескочить через всю историю одним движением. Сначала поднимите её до ближайшего поддерживаемого пути обновления, затем повторите процесс.
Что проверить после обновления
- версию Ubuntu через
lsb_release -a; - активные репозитории в
/etc/apt/sources.listиsources.list.d; - службы, которые не поднялись после reboot;
- версии PHP, Python, MySQL/PostgreSQL и другого прикладного стека;
- логи
journalctl -p warning..alert.
Главная цель этой операции — уйти с неподдерживаемого релиза. После успешного upgrade уберите временные ссылки на old-releases, иначе через несколько месяцев вы снова получите ту же проблему.
FAQ
Можно ли оставить old-releases навсегда? Можно, но это плохой вариант для сервера. Архивные репозитории не дают нормальной безопасности. Их задача — помочь обновить старую систему, а не обслуживать её годами.
Почему apt update ругается на PPA? PPA привязан к конкретному кодовому имени Ubuntu. Если релиз старый, автор PPA мог удалить пакеты или никогда их не собирать. На время upgrade такие источники лучше отключить.
Что делать, если обновление идёт по SSH? Используйте tmux или screen и заранее проверьте консоль провайдера. При обновлении сетевых пакетов SSH-сессия может оборваться, и без консоли будет нервно.




Спасибо, почти сработало….
[…] Ubuntu после окончания поддержки: old-releases и sources.list […]