Как исправить ошибку «404 Not Found» в Debian при обновлении apt-get

Ошибка «404 Not Found» во время обновления возникает, когда ваша система пытается загрузить пакеты из репозиториев, которые больше не существуют или были перемещены. Обычно это происходит со старыми версиями Debian, срок поддержки которых истёк и пакеты которых были перемещены на архивные серверы.
Поскольку Debian придерживается строгих циклов выпуска, старые версии со временем перемещаются с активных зеркал в выделенное архивное хранилище. Когда это происходит, ваша текущая конфигурация репозитория устаревает и операции менеджера пакетов завершаются ошибкой.
Понимание ошибок 404 при обновлении
Когда вы запускаете apt-get update или apt-get upgrade, система считывает список источников из /etc/apt/sources.list и пытается получить информацию о пакете по указанным там URL-адресам. Если эти URL-адреса ведут на репозитории, которые были перемещены или удалены, вы получите ошибку 404.
Решение заключается в обновлении списка источников, чтобы он указывал на правильные расположения репозиториев. Поскольку для разных версий Debian требуются разные URL-адреса репозиториев, мы сначала определим вашу текущую версию, а затем соответствующим образом изменим конфигурацию.
Проверка версии Debian
Прежде чем вносить какие-либо изменения, необходимо определить, какая версия Debian у вас установлена.
lsb_release -a
Приведенная выше команда отображает информацию о вашем дистрибутиве, включая номер версии и кодовое название.
- Bookworm → Debian 12
- Bullseye → Debian 11
- Buster → Debian 10
Запишите своё кодовое имя, оно понадобится вам на следующих этапах.
Резервное копирование конфигурации исходного файла
Поскольку вы будете изменять системные файлы, создание резервной копии позволит вам при необходимости восстановить исходную конфигурацию.
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
Это создаст копию вашего списка источников в том же каталоге. Если что-то пойдёт не так, вы сможете восстановить его, поменяв местами источник и место назначения в приведённой выше команде.
Обновление источников репозитория
Далее вам нужно отредактировать список источников, чтобы он указывал на правильные репозитории. Для более старых выпусков Debian, срок поддержки которых истек, необходимо переключиться на архивные серверы.
Откройте файл в текстовом редакторе:
sudo nano /etc/apt/sources.list
Для устаревших версий Debian
Если ваша версия Debian больше не поддерживается (например, Jessie, Stretch или более ранняя), замените содержимое файла на следующее:
deb http://archive.debian.org/debian/ CODENAME main contrib non-free deb http://archive.debian.org/debian-security/ CODENAME/updates main contrib non-free
Замените CODENAME на кодовое название вашего дистрибутива Debian (например, stretch для Debian 9).
Для поддерживаемых в настоящее время версий
Если ваша версия Debian все еще поддерживается, но вы получаете ошибки 404 (проблемы с зеркалами), используйте вместо этого основные репозитории Debian:
deb http://deb.debian.org/debian/ CODENAME main contrib non-free deb http://deb.debian.org/debian/ CODENAME-updates main contrib non-free deb http://security.debian.org/debian-security CODENAME-security main contrib non-free
Замените CODENAME на свою версию:
- Debian 12 → книжный червь
- Debian 11 → яблочко
- Debian 10 → сокрушитель
После внесения этих изменений сохраните файл, нажав Ctrl+O, затем Enter, и выйдите, нажав Ctrl+X.
Обработка проверки архивных репозиториев
Архивные репозитории для устаревших версий Debian не получают обновлений безопасности, а это значит, что их файлы релизов больше не подписаны действительными ключами. Чтобы команда apt не выдавала ошибку из-за просроченных подписей, необходимо отключить проверку этих репозиториев.
Откройте или создайте следующий файл конфигурации:
sudo nano /etc/apt/apt.conf.d/99allow-unauthenticated
Добавьте эту единственную строку:
Acquire::Check-Valid-Until "false";
Этот параметр указывает apt игнорировать срок действия файлов релиза, что необходимо для архивных репозиториев, которые больше не получают обновлений.
Обновление информации о пакете
Теперь, когда источники репозитория настроены правильно, обновите списки пакетов, чтобы получить последнюю информацию о пакетах из новых репозиториев. Если всё настроено правильно, обновление должно пройти без ошибок 404.
sudo apt-get update
После обновления списков пакетов вы можете обновить установленные пакеты, загрузив и установив доступные обновления для вашей текущей системы. Для архивных версий может оказаться, что некоторые пакеты или все пакеты не будут обновлены, так как они больше не получают обновлений.
sudo apt-get upgrade
Рассмотрите возможность обновления дистрибутива
Хотя исправление ошибок 404 позволяет вашей текущей системе работать, использование устаревшей версии Debian означает, что вы больше не будете получать обновления безопасности, что создает значительные риски в производственных средах или средах, подключенных к интернету.
Вам следует рассмотреть возможность обновления до поддерживаемой в настоящее время версии Debian.
sudo apt-get dist-upgrade
Однако переход с одной основной версии Debian на другую требует тщательного планирования и не должен осуществляться наобум, так как это может привести к нарушению существующих конфигураций или сбоям в работе установленного программного обеспечения. Прежде чем приступать к переходу на новую основную версию, ознакомьтесь с официальными примечаниями к выпуску Debian для вашей целевой версии.
Выводы
Ошибки 404 при apt-get upgrade возникают из-за устаревших URL-адресов репозиториев в вашей конфигурации источников. Определив версию Debian, обновив список источников, чтобы он указывал на соответствующие репозитории, и настроив параметры проверки, вы сможете восстановить функциональность управления пакетами.
Поскольку использование неподдерживаемых версий сопряжено с рисками для безопасности, рекомендуется в долгосрочной перспективе перейти на текущую версию Debian.
Редактор: AndreyEx