Проблема с получением http://deb.debian.org/debian/dists/jessie-updates/InRelease с помощью docker

Вопрос или проблема

Я пытаюсь выполнить команду
docker-compose build

Я получаю следующий вывод:

Шаг 4/8 : RUN apt-get update && apt-get install -y google-chrome-stable
 ---> Выполняется в ee9551cd38b9
Игнорирование http://dl.google.com stable InRelease

Получение:1 http://security.debian.org jessie/updates InRelease [44.9 kB]

.....

Получение:9 http://deb.debian.org jessie/main amd64 Packages [9098 kB]

W: Получено 10.1 MB за 6с (1519 kB/s)
Не удалось получить http://deb.debian.org/debian/dists/jessie-updates/InRelease  Не удается найти ожидаемую запись 'main/binary-amd64/Packages' в файле Release (Неправильная запись в sources.list или поврежденный файл)

E: Некоторые файлы индекса не удалось загрузить. Они были проигнорированы или вместо них использовались старые.
ERROR: Сервис 'webpack' не удалось собрать: Команда '/bin/sh -c apt-get update && apt-get install -y google-chrome-stable' вернула ненулевой код: 100

Кто-нибудь имеет понятие?

Я столкнулся с этой проблемой тоже сегодня утром. Я смог решить это, объединив советы из следующих двух тикетов:

Как решить ошибку 404 в AWS apg-get для debian jessie fetch?

https://stackoverflow.com/questions/46406847/docker-how-to-add-backports-to-sources-list-via-dockerfile

Решение:

В вашем Dockerfile, перед выполнением любых команд apt, добавьте следующую строку:

RUN printf "deb http://archive.debian.org/debian/ jessie main\ndeb-src http://archive.debian.org/debian/ jessie main\ndeb http://security.debian.org jessie/updates main\ndeb-src http://security.debian.org jessie/updates main" > /etc/apt/sources.list

Это позволяет apt работать из новых источников.

Возможно, Docker-образ debian:jesse будет обновлен для корректной работы в ближайшем будущем, но до тех пор это позволит вам продолжать работу.

Команда Debian это исправила. Повторное получение образа, чтобы он обновился, решило проблему для меня:

docker pull debian:jessie

Предостережение из связанного тикета:

Также, пожалуйста, мигрируйте с Jessie как можно скорее — время идет!!

Мое решение

Быстрое обходное решение

Перезапись sources.list — не то, что я хочу:

sed '/jessie-updates/s/^/# /' -i /etc/apt/sources.list

просто закомментирует строки, содержащие jessie-updates, и сохранит все остальное!

deb http://ftp.ch.debian.org/debian/ jessie main contrib
deb-src http://ftp.ch.debian.org/debian/ jessie main contrib

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

# # jessie-updates, ранее известное как 'volatile'
# deb http://ftp.ch.debian.org/debian/ jessie-updates main contrib
# deb-src http://ftp.ch.debian.org/debian/ jessie-updates main contrib

Так что я продолжаю использовать локальные зеркала, пока Debian jessie поддерживается.

Обновление до stretch

Затем для обновления до stretch, я просто

sed 's/jessie/stretch/' -i.jessie /etc/apt/sources.list

Это создаст source.list.jessie

теперь я могу раскомментировать строки stretch-updates:

sed '/stretch-updates/s/^# //' -i /etc/apt/sources.list

Лучшее решение заключалось бы в использовании образов build-pack в ваших контейнерах docker для jessie, чтобы вы могли делать что-то вроде:

FROM buildpack-deps:jessie

Вы можете получить их здесь

В OS M3 это работает отлично, если вы столкнетесь с той же проблемой, измените первую строку в Dockerfile на:

FROM --platform=linux/amd64 python:3.12

Ответ или решение

Проблема с получение http://deb.debian.org/debian/dists/jessie-updates/InRelease в Docker

Случающиеся ошибки во время работы с Docker, особенно при выполнении команд apt-get update или apt-get install, могут стать серьёзным препятствием в процессе разработки. Одной из распространённых проблем является ошибка при попытке загрузить InRelease файл для обновлений Debian Jessie из репозитория jessie-updates. Рассмотрим шаг за шагом, как справиться с данной проблемой.

Описание проблемы

При выполнении команды docker-compose build пользователь сталкивается с выводом ошибок, среди которых:

Failed to fetch http://deb.debian.org/debian/dists/jessie-updates/InRelease
Unable to find expected entry 'main/binary-amd64/Packages' in Release file (Wrong sources.list entry or malformed file)

Это указывает на то, что Docker не может загрузить необходимые метаданные для указанных репозиториев Debian, из-за чего некорректно работает пакетный менеджер apt.

Причины проблемы

  1. Окончание поддержки Debian Jessie: Debian Jessie достиг конца своего срока службы, что делает её репозитории менее доступными. Многие из них могут быть удалены или перемещены.

  2. Ошибки в sources.list: Отсутствие обновлённых ссылок на репозитории может привести к 404 ошибкам.

Решения

1. Обновление sources.list

Одним из основных решений является обновление вашего файла sources.list. Это можно сделать, добавив в ваш Dockerfile следующую строку:

RUN printf "deb http://archive.debian.org/debian/ jessie main\ndeb-src http://archive.debian.org/debian/ jessie main\ndeb http://security.debian.org jessie/updates main\ndeb-src http://security.debian.org jessie/updates main" > /etc/apt/sources.list

Это обеспечит корректный доступ к старым репозиториям Debian, пока они доступны в архиве.

2. Переход на более новую версию Debian

Если это возможно, рекомендуется обновить ваш проект до более новой версии Debian, такой как Stretch или Buster. Например, вы можете заменить все вхождения jessie на stretch с помощью команды:

sed -i 's/jessie/stretch/g' /etc/apt/sources.list
3. Использование образа buildpack-deps

Для обеспечения в дальнейшем более стабильного и поддерживаемого окружения, использование образа buildpack-deps будет наилучшим решением:

FROM buildpack-deps:jessie

Это предоставляет уже предустановленные зависимости и уменьшает вероятность появления ошибок.

4. Временные обходные пути

Если пересмотр sources.list не подходит вам, вы можете временно закомментировать строки, относящиеся к jessie-updates, используя:

sed '/jessie-updates/s/^/# /' -i /etc/apt/sources.list

Это поможет сохранить доступ к другим репозиториям, не вызывая при этом проблем с jessie-updates.

Заключение

Ошибки, связанные с пакетным менеджером apt в Docker, могут быть вызваны различными причинами, но с помощью предложенных решений вы сможете эффективно справиться с этой ситуацией. Обратите внимание, что поддержка Debian Jessie заканчивается, и рекомендуется как можно скорее перейти на более новые версии для предотвращения подобного рода проблем в будущем.

Оцените материал
Добавить комментарий

Капча загружается...