Вопрос или проблема
Недавно я пытался установить Docker с помощью следующего метода:
curl -fsSL get.docker.com -o get-docker.sh
sh get-docker.sh
Но это не сработало, возможно, из-за сломанных пакетов или чего-то другого. После этого я установил Docker и Docker Compose с помощью метода apt, и это хорошо заработало. Но когда я пытаюсь обновить или обновить свою систему, я вижу следующие сообщения. Я не знаю, в чем проблема, пожалуйста, дайте мне решение, спасибо.
$ sudo apt-get update
Hit:1 http://ppa.launchpad.net/daniruiz/flat-remix/ubuntu bionic InRelease
Hit:2 https://dl.winehq.org/wine-builds/ubuntu bionic InRelease
Hit:3 http://security.ubuntu.com/ubuntu bionic-security InRelease
Ign:4 http://dl.google.com/linux/chrome/deb stable InRelease
Hit:5 http://dl.google.com/linux/chrome/deb stable Release
Hit:6 http://ppa.launchpad.net/ondrej/php/ubuntu bionic InRelease
Hit:7 http://lk.archive.ubuntu.com/ubuntu bionic InRelease
Ign:9 https://download.docker.com/linux/debian bionic InRelease
Hit:10 http://lk.archive.ubuntu.com/ubuntu bionic-updates InRelease
Err:11 https://download.docker.com/linux/debian bionic Release
404 Not Found [IP: 13.35.8.98 443]
Hit:13 http://lk.archive.ubuntu.com/ubuntu bionic-backports InRelease
Hit:12 https://packagecloud.io/slacktechnologies/slack/debian jessie InRelease
Reading package lists… Done
E: Репозиторий ‘https://download.docker.com/linux/debian bionic Release’ не имеет файла Release.
N: Обновление из такого репозитория не может быть выполнено безопасно, и поэтому оно отключено по умолчанию.
N: Смотрите man-страницу apt-secure(8) для деталей создания репозиториев и настройки пользователя.
$ sudo apt-get upgrade
Reading package lists… Done
Building dependency tree
Reading state information… Done
Calculating upgrade… Done
Следующие пакеты были отложены:
libxml2 libxml2:i386
0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded.
Как я могу удалить из своего списка источников, потому что мне это больше не нужно?
Согласно странице Docker для Ubuntu, проблема в том, что должно быть https://download.docker.com/linux/ubuntu вместо https://download.docker.com/linux/debian.
Выполните следующую команду, чтобы это исправить:
sudo sed -i ‘s/debian/ubuntu/g’ /etc/apt/sources.list.d/docker.list
sudo apt update
Однако, если это не решит проблему, выполните следующую команду:
sudo sed -i ‘s|docker.com/linux/debian|docker.com/linux/ubuntu|g’ /etc/apt/sources.list
sudo apt update
Я использовал следующее в Linux Mint:
Определите кодовое имя Ubuntu, используя команду ниже (а НЕ кодовое имя версии):
$ cat /etc/os-release | grep -i codename
VERSION_CODENAME=una
UBUNTU_CODENAME=focal
Замените кодовое имя Ubuntu в /etc/apt/sources.list.d/docker.list:
https://download.docker.com/linux/ubuntu
В моем случае команда на сайте Docker установила кодовое имя на una (Docker определяет его с помощью lsb_release -cs), но мне пришлось изменить его на focal.
Если вы используете Parrot OS, вам нужно заменить parrotos в /etc/apt/sources.list.d/docker.list на актуальную версию Debian для вашей версии ОС (bullseye, buster и так далее).
sudo nano /etc/apt/sources.list.d/docker.list
Вышеуказанная команда откроет файл docker.list, где вы можете изменить ссылку так, чтобы она выглядела следующим образом:
deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian bullseye stable
Просто замените bullseye на ваше кодовое имя Debian и снова выполните sudo apt-get update.
Я пытался следовать советам моих коллег в других ответах здесь, но когда я выполнил команду apt update, был создан новый файл docker.list, всегда с версией trixie. После небольшого изучения и с помощью LLM я обнаружил, что проблема в выводе команды lsb_release -cs, которая возвращает Trixie, экспериментальную версию Ubuntu, или неподдерживаемую версию Debian для Docker.
Docker поддерживает некоторые конкретные версии Debian, такие как bullseye и bookworm. В вашем случае, поскольку вы используете Pistachio Linux, который, похоже, настроен для Debian Testing, вы можете принудить репозиторий использовать поддерживаемую версию.
Его можно исправить вручную, следуя этим шагам:
Шаг 1: Принудительно использовать версию bullseye или bookworm
Замените команду lsb_release -cs на bullseye (или bookworm, если вы используете последнюю версию Debian Testing):
echo “deb [arch=$( dpkg –print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian bullseye stable” | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Шаг 2: Обновите пакеты и установите Docker
Теперь попробуйте снова обновить и установить пакеты Docker:
sudo apt update
sudo apt install -e docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
В заключение:
Команда lsb_release -cs возвращала Trixie, которая в данный момент не является официально поддерживаемой версией Docker. Принуждая использование bullseye или bookworm (версии Debian, официально поддерживаемые Docker), вы сможете установить и использовать Docker без каких-либо проблем.
Ответ или решение
Судя по описанию вашей проблемы, вы столкнулись с ошибкой 404 при обновлении репозитория Docker. Эта ошибка возникает, когда вы пытаетесь получить доступ к несуществующему URL. Причина в том, что вы используете неправильный URL для вашей операционной системы.
Давайте рассмотрим, как можно решить эту проблему шаг за шагом.
Шаг 1: Проверка правильности репозитория
Вы упомянули, что Docker пытается получить доступ к репозиторию https://download.docker.com/linux/debian
, однако для Ubuntu вам нужен другой URL: https://download.docker.com/linux/ubuntu
. Вам нужно будет отредактировать файл репозитория, чтобы он указывал на правильный адрес.
-
Откройте файл списка источников Docker с помощью текстового редактора. Используйте команду:
sudo nano /etc/apt/sources.list.d/docker.list
-
Измените строку, которая начинается с
deb
, так чтобы она выглядела следующим образом:deb [arch=amd64] https://download.docker.com/linux/ubuntu <ваш_кодовое_имя_версии_ubuntu> stable
Замените
<ваш_кодовое_имя_версии_ubuntu>
на ваше фактическое кодовое имя, напримерbionic
,focal
илиjammy
. Чтобы получить кодовое имя, выполните команду:cat /etc/os-release | grep VERSION_CODENAME
-
Сохраните изменения и закройте редактор.
Шаг 2: Обновите списки пакетов
Теперь, когда вы исправили URL-адрес репозитория, обновите списки пакетов:
sudo apt-get update
Шаг 3: Установка и обновление Docker
После успешного обновления, вы можете установить или обновить Docker и Docker Compose с помощью команды:
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose
Шаг 4: Решение проблемы с apt upgrade
Если вы видите сообщения о "held back" (удерживаемые пакеты) для libxml2
, вы можете попытаться вручную обновить их:
sudo apt-get install libxml2 libxml2:i386
Если эти пакеты не обновляются, вы можете попробовать:
sudo apt-get dist-upgrade
Это поможет установить, удалить или обновить пакеты, если требуется изменение зависимостей.
Резюме
Вы успешно изменили URL репозитория и теперь должны быть в состоянии обновлять и устанавливать пакеты Docker без ошибок. Следуя описанным шагам, вы исправите конфигурации репозиториев и избежите проблем, связанных с 404 ошибкой в будущем. Если у вас остались вопросы или возникли другие проблемы, не стесняйтесь задавать их.