Не удалось получить репозиторий jessie backports

158

Я использую образ докера в качестве основы для моей собственной разработки, которая добавляет репозиторий 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?

user12345
источник
2
Смотрите также unix.stackexchange.com/questions/2544/...
user343761
По сути, это тот же вопрос, что и при сбое обновления apt-get в Debian на Super User .
CVn

Ответы:

183

Wheezy и Jessie были недавно удалены из зеркальной сети , поэтому, если вы хотите продолжить получать бэкпорты Jessie , вам нужно использовать archive.debian.orgвместо этого:

deb [check-valid-until=no] http://archive.debian.org/debian jessie-backports main

(Проверки достоверности необходимо отключить, поскольку хранилище больше не обновляется. Jessie aptне поддерживает check-valid-untilфлаг, подробности см. В ответе inostia , а также в сводке конфигурации ниже в этом ответе.)

jessie-updatesХранилище было удалено: все обновления были объединены с основным репозиторием, и не будет никаких дополнительных обновлений не связанные с безопасностью. Поэтому любые ссылки jessie-updatesна sources.listили sources.list.dфайлы должны быть удалены. Обновления безопасности будут по-прежнему предоставляться на архитектурах с поддержкой LTS в репозитории безопасности до 30 июня 2020 года.

Поскольку вы создаете образ контейнера, я настоятельно рекомендую использовать его вместо Debian 9 (Stretch). Чтобы остаться на Debian 8 (Джесси), ваши репозитории должны выглядеть так

deb http://cdn-fastly.deb.debian.org/debian/ jessie main
deb-src http://cdn-fastly.deb.debian.org/debian/ jessie main

deb http://security.debian.org/ jessie/updates main
deb-src http://security.debian.org/ jessie/updates main

deb http://archive.debian.org/debian jessie-backports main
deb-src http://archive.debian.org/debian jessie-backports main

(без jessie-updatesхранилища).

Вам также необходимо отключить проверку достоверности /etc/apt/apt.conf(которая будет применяться ко всем репозиториям):

Acquire::Check-Valid-Until "false";
Стивен Китт
источник
1
Извините, мой ответ был, возможно, не настолько ясен; линия, которую я дал, была только для backports. jessie-updatesбольше не существует, так что вы должны полностью удалить его, и обновления безопасности Jessie все еще включены security.debian.org.
Стивен Китт
2
@ Нет, обновления безопасности предоставляются security.debian.orgне через бэкпорт или обновления. Больше не будет стабильных обновлений, jessie-updatesне относящихся к LTS, поэтому они больше не будут полезны в сети с главным зеркалом, и не будет больше обратных портов, поэтому то же самое относится и к jessie-backports.
Стивен Китт
5
Не работает для меня: `` `E: Выпуск файла для archive.debian.org/debian/dists/jessie-backports/InRelease истек (недействителен с 34d 20h 7min 12s). Обновления для этого хранилища не будут применяться. `` `
Ави Кивит
2
Обнаружили, что последующим aptкомандам также требуется -o Acquire::Check-Valid-Until=false(согласно unix.stackexchange.com/a/45973/186565 ), чтобы избежать ошибки истечения срока действия.
Сумицу
2
@Sumitsu спасибо, установка, которая apt.confдолжна работать тоже (см. мое обновление).
Стивен Китт
43

После попытки решения, предложенного @inostia и @Stephen Kitt, я все еще получал следующую ошибку:

W: Failed to fetch http://deb.debian.org/debian/dists/jessie-updates/main/binary-amd64/Packages  404  Not Found

E: Some index files failed to download. They have been ignored, or old ones used instead.

Я понял, что это можно решить, убрав строку deb http://deb.debian.org/debian jessie-updates mainиз /etc/apt/sources.list.

Я закончил со следующим фрагментом в моем Dockerfile:

RUN echo "deb [check-valid-until=no] http://cdn-fastly.deb.debian.org/debian jessie main" > /etc/apt/sources.list.d/jessie.list
RUN echo "deb [check-valid-until=no] http://archive.debian.org/debian jessie-backports main" > /etc/apt/sources.list.d/jessie-backports.list
RUN sed -i '/deb http:\/\/deb.debian.org\/debian jessie-updates main/d' /etc/apt/sources.list
RUN apt-get -o Acquire::Check-Valid-Until=false update
henadzit
источник
1
У меня была та же проблема, что и у вас, и ваш фрагмент работал на меня!
cafemike
1
Я должен был показать sed, так как в моем случае образ докера (postgres) использовал httpredir.debian.org вместо deb.debian.org.
harrybvp
1
Спасибо!!! Два дня я боролся за то, чтобы исправить свой Dockerfile после изменения в Джесси Debian, я вставил твой фрагмент, и он снова работает.
wpjmurray
извините, но все же проблема ....
user1722245
5
Вот обновленная версия вашей sedкоманды, которая сделала мой трюк:sed -i '/deb http:\/\/\(deb\|httpredir\).debian.org\/debian jessie.* main/d' /etc/apt/sources.list
Speedplane
26

Это случилось со мной, когда я предоставлял Vagrant box, который использовал Debian "Jessie".

После ответа Стивена Китта переключение на archive.debian.org помогло мне, но я должен был добавить его к /etc/apt/sources.list.d/jessie-backports.list, а не к /etc/apt/sources.list.

Я добавил следующую строку provision.sh:

echo "deb http://archive.debian.org/debian jessie-backports main" > /etc/apt/sources.list.d/jessie-backports.list

Затем я также получил ошибку безопасности apt-get update.

После того, как обойти проблему «Выпуск файла истек» на локальном зеркале , это исправило эту ошибку:

apt-get -o Acquire::Check-Valid-Until=false update

В качестве альтернативы, чтобы отключить проверки навсегда, добавьте это в provision.sh:

echo "Acquire::Check-Valid-Until \"false\";" > /etc/apt/apt.conf.d/100disablechecks

Затем вы можете запустить все aptкоманды без -oфлага.

inostia
источник
1
Не опасно ли отключать проверки достоверности, которые будут применяться ко всем репозиториям?
Максим Лафари
4

Для тех, кто использует NodeJS со старыми основами образов докеров. У меня были некоторые замороженные изображения, которые имели эти более старые источники для компиляции дополнительных библиотек.

Контекст: если вы хотели установить python во время сборки докера, вы столкнулись с этой проблемой во время сборки образа (в течение последних 24 часов), поскольку он не смог найти зависимости во время сборки докера.

Я попробовал рекомендации по пути к архиву в этом посте, но не смог пройти 404-е. (также поступивший с сайта archive.debian.org)

Решение: в итоге я переключился на последнюю контейнерную версию узла (в которой уже установлены библиотеки python, и обновления некоторых библиотек в пакете json (которые теперь также включают двоичные библиотеки, в которых раньше использовался pythyon), что сделало проблему устаревшей ,

В конце концов, обновление базового образа для стека контейнеров (узел: последний) казалось самым простым путем к разрешению.

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

Глен С.
источник
Привет Глен, спасибо за публикацию. Я думаю, что я сталкиваюсь с той же проблемой в dockerfile, что и у меня есть «RUN apt-get update -y && apt-get install supervisor python python-dev curl -y --force-yes». Я использую узел ОТ: 6.11.2, что я должен сделать, чтобы обойти это?
Аарон
1
Для изображений Docker Node альтернативой является использование -stretchизображений:node:<version>-stretch
lukeaus