Вопрос или проблема
Я пытаюсь выполнить команду
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?
Решение:
В вашем 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
.
Причины проблемы
-
Окончание поддержки Debian Jessie: Debian Jessie достиг конца своего срока службы, что делает её репозитории менее доступными. Многие из них могут быть удалены или перемещены.
-
Ошибки в
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 заканчивается, и рекомендуется как можно скорее перейти на более новые версии для предотвращения подобного рода проблем в будущем.