Не вдалося отримати сховище Джессі


155

Я використовую зображення докера як основу для власної розробки, яка додає сховище jessie backports у свій Dockerfile і використовує його для встановлення залежності. Це зображення використовує таку команду для додавання сховища:

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

Проблема полягає в тому, що вилучення пакетів із сховища заднього списку тепер не вдається зі наступною помилкою (це працювало раніше):

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 backports, чи повинен цей конкретний сховище все ще доступний, і я не знайшов жодних ознак того, що це застаріле або щось подібне.

Це тимчасова проблема із сховищем, або сховище jessie-backports вже недоступне? І якщо це не тимчасова проблема, то які параметри я повинен використовувати це чи еквівалентний сховище без оновлення до нової стабільної версії Debian?



Це по суті те саме питання, що не вдалося оновити apt-get в debian на Super User .
CVn

Відповіді:


180

Нещодавно Wheezy та Jessie були видалені з дзеркальної мережі , тому, якщо ви хочете продовжувати отримувати списки Джессі, вам потрібно скористатися archive.debian.org:

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

(Перевірки дійсності потрібно вимкнути, оскільки сховище більше не оновлюється. Джессі aptне підтримує check-valid-untilпрапор, детальну інформацію див. У відповіді inostia та підсумкові відомості про налаштування далі в цій відповіді.)

jessie-updatesСховище було видалено: всі оновлення були об'єднані з основним репозиторієм, і не буде ніяких додаткових оновлень не пов'язані з безпекою. Тому будь-які посилання на jessie-updatesв файли sources.listабо на sources.list.dфайли потрібно видалити. Оновлення безпеки надаватимуться в архітектурах, підтримуваних LTS, у сховищі безпеки до 30 червня 2020 року.

Оскільки ви будуєте зображення контейнера, настійно рекомендую на основі цього використовувати його Debian 9 (Stretch). Щоб залишитися на Debian 8 (Jessie), ваші сховища повинні виглядати так

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
Вибачте, моя відповідь, мабуть, не все так зрозуміла; Лінія, яку я дав, стосувалася лише заднього списку. jessie-updatesбільше не існує, тому ви повинні видалити це взагалі, і оновлення безпеки Джессі все ще ввімкнено security.debian.org.
Стівен Кітт

2
@Якщо ні, оновлення безпеки надаються ввімкнено security.debian.org, а не через списки або оновлення. Більше не буде стабільних оновлень, які не є LTS, тому jessie-updatesце вже не корисно для основної дзеркальної мережі, а також не буде більше ніяких опор, тому те саме стосується jessie-backports.
Стівен Кітт

4
Не працює для мене: `` E: Файл випуску для archive.debian.org/debian/dists/jessie-backports/InRelease закінчився (недійсний з 34d 20h 7min 12s). Оновлення цього сховища не застосовуватимуться. `` `
Avi Kivity

2
Виявили, що наступні aptкоманди також вимагають -o Acquire::Check-Valid-Until=false(per unix.stackexchange.com/a/45973/186565 ), щоб уникнути помилки закінчення.
sumitsu

2
@sumitsu спасибі, встановивши, що в apt.confроботі також слід працювати (див. моє оновлення).
Стівен Кітт

42

Спробувавши рішення, запропоновані @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

1
У мене була така сама проблема, як у вас, і ваш фрагмент працював на мене!
cafemike

1
Мені довелося просипати частину sed, оскільки у моєму випадку докерське зображення (postgres) використовувало httpredir.debian.org замість deb.debian.org.
harrybvp

1
Дякую!!! Я два дні намагаюся виправити свій Dockerfile після зміни Джесі Джебі, я вставив ваш фрагмент і все знову працює.
wpjmurray

вибачте, але все-таки питання ....
user1722245

5
Ось оновлена ​​версія вашої sedкоманди, яка зробила для мене трюк:sed -i '/deb http:\/\/\(deb\|httpredir\).debian.org\/debian jessie.* main/d' /etc/apt/sources.list
speedplane

26

Це сталося зі мною, надавши коробку Vagrant, яка використовувала 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прапора.


1
Чи не небезпечно відключати перевірки дійсності, які застосовуватимуться до всіх сховищ?
Максим Лафарі

4

Для тих, хто використовує NodeJS зі старими основами докерських зображень. У мене було кілька заморожених зображень, які мали ці старі джерела для складання зайвих ліб.

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

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

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

Зрештою, оновлення основного зображення для стека контейнерів (вузол: останній) здавалося найбільш прямим шляхом до розв’язання.

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


Привіт Глен, дякую за публікацію. Я думаю, що в докерфайлі я стикаюся з тією ж проблемою, як у мене "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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.