Я использую образ докера в качестве основы для моей собственной разработки, которая добавляет репозиторий jessie backports в свой Dockerfile и использует его для установки зависимости. Этот образ использует следующую команду для добавления хранилища:
echo "deb http://ftp.debian.org/debian jessie-backports main" >> /etc/apt/sources.list
Проблема в том, что загрузка пакетов из репозитория backports теперь завершается ошибкой со следующей ошибкой (раньше это работало):
W: Failed to fetch
http://ftp.debian.org/debian/dists/jessie-backports/main/binary-amd64/Packages
404 Not Found
W: Failed to fetch
http://deb.debian.org/debian/dists/jessie-updates/main/binary-amd64/Packages
404 Not Found
Я посмотрел на этом сервере, и эти пути там действительно отсутствуют.
Я попытался выяснить на сайте бэкпортов Debian, должен ли этот конкретный репозиторий оставаться доступным, и я не нашел никаких признаков того, что это устарело или что-то в этом роде.
Это временная проблема с хранилищем, или хранилище jessie-backports больше не доступно? И если это не временная проблема, какие варианты у меня есть, чтобы использовать этот или эквивалентный репозиторий без обновления до более новой стабильной версии Debian?
источник
Ответы:
Wheezy и Jessie были недавно удалены из зеркальной сети , поэтому, если вы хотите продолжить получать бэкпорты Jessie , вам нужно использовать
archive.debian.org
вместо этого:(Проверки достоверности необходимо отключить, поскольку хранилище больше не обновляется. Jessie
apt
не поддерживаетcheck-valid-until
флаг, подробности см. В ответе inostia , а также в сводке конфигурации ниже в этом ответе.)jessie-updates
Хранилище было удалено: все обновления были объединены с основным репозиторием, и не будет никаких дополнительных обновлений не связанные с безопасностью. Поэтому любые ссылкиjessie-updates
наsources.list
илиsources.list.d
файлы должны быть удалены. Обновления безопасности будут по-прежнему предоставляться на архитектурах с поддержкой LTS в репозитории безопасности до 30 июня 2020 года.Поскольку вы создаете образ контейнера, я настоятельно рекомендую использовать его вместо Debian 9 (Stretch). Чтобы остаться на Debian 8 (Джесси), ваши репозитории должны выглядеть так
(без
jessie-updates
хранилища).Вам также необходимо отключить проверку достоверности
/etc/apt/apt.conf
(которая будет применяться ко всем репозиториям):источник
jessie-updates
больше не существует, так что вы должны полностью удалить его, и обновления безопасности Jessie все еще включеныsecurity.debian.org
.security.debian.org
не через бэкпорт или обновления. Больше не будет стабильных обновлений,jessie-updates
не относящихся к LTS, поэтому они больше не будут полезны в сети с главным зеркалом, и не будет больше обратных портов, поэтому то же самое относится и кjessie-backports
.apt
командам также требуется-o Acquire::Check-Valid-Until=false
(согласно unix.stackexchange.com/a/45973/186565 ), чтобы избежать ошибки истечения срока действия.apt.conf
должна работать тоже (см. мое обновление).После попытки решения, предложенного @inostia и @Stephen Kitt, я все еще получал следующую ошибку:
Я понял, что это можно решить, убрав строку
deb http://deb.debian.org/debian jessie-updates main
из/etc/apt/sources.list
.Я закончил со следующим фрагментом в моем Dockerfile:
источник
sed
команды, которая сделала мой трюк:sed -i '/deb http:\/\/\(deb\|httpredir\).debian.org\/debian jessie.* main/d' /etc/apt/sources.list
Это случилось со мной, когда я предоставлял Vagrant box, который использовал Debian "Jessie".
После ответа Стивена Китта переключение на archive.debian.org помогло мне, но я должен был добавить его к
/etc/apt/sources.list.d/jessie-backports.list
, а не к/etc/apt/sources.list
.Я добавил следующую строку
provision.sh
:Затем я также получил ошибку безопасности
apt-get update
.После того, как обойти проблему «Выпуск файла истек» на локальном зеркале , это исправило эту ошибку:
В качестве альтернативы, чтобы отключить проверки навсегда, добавьте это в
provision.sh
:Затем вы можете запустить все
apt
команды без-o
флага.источник
Для тех, кто использует NodeJS со старыми основами образов докеров. У меня были некоторые замороженные изображения, которые имели эти более старые источники для компиляции дополнительных библиотек.
Контекст: если вы хотели установить python во время сборки докера, вы столкнулись с этой проблемой во время сборки образа (в течение последних 24 часов), поскольку он не смог найти зависимости во время сборки докера.
Я попробовал рекомендации по пути к архиву в этом посте, но не смог пройти 404-е. (также поступивший с сайта archive.debian.org)
Решение: в итоге я переключился на последнюю контейнерную версию узла (в которой уже установлены библиотеки python, и обновления некоторых библиотек в пакете json (которые теперь также включают двоичные библиотеки, в которых раньше использовался pythyon), что сделало проблему устаревшей ,
В конце концов, обновление базового образа для стека контейнеров (узел: последний) казалось самым простым путем к разрешению.
Остерегайтесь устаревших стеков изображений с включенными бинарными зависимостями, вероятно, потребуется время для обновления уровня ядра ОС.
источник
-stretch
изображений:node:<version>-stretch