安装 docker 时出现错误:“docker-ce:依赖:containerd.io(>= 1.2.2-3)但是它不会被安装”

安装 docker 时出现错误:“docker-ce:依赖:containerd.io(>= 1.2.2-3)但是它不会被安装”

我正在尝试在我的 Ubuntu 18.04 上安装 Docker,但是出现了以下错误:

The following packages have unmet dependencies:
  docker-ce : Depends: containerd.io (>= 1.2.2-3) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

我该怎么做才能修复它?

答案1

您必须安装 containerd 包,这就是我解决问题的方法。

$ curl -O https://download.docker.com/linux/ubuntu/dists/bionic/pool/edge/amd64/containerd.io_1.2.2-3_amd64.deb

$ sudo apt install ./containerd.io_1.2.2-3_amd64.deb 

答案2

答案3

在 Ubuntu 19.10 中,您可以通过安装软件包来安装 docker docker.io,该软件包具有 containerdrunc作为依赖项。或者,您可以直接从 docker 存储库安装,docker-ce如此docker-ce-cli处所述 https://docs.docker.com/install/linux/docker-ce/ubuntu/。在此替代方法中,依赖项containerdrunc被单个依赖项替换containerd.io。问题是,出于某种奇怪的原因,containerd.io不在docker存储库中。因此您需要按照建议手动安装它https://askubuntu.com/a/1190896/456438

请注意,containerd.io在软件包本身中, 被认为是containerd和的有效替代runc。 反过来则不成立,但如果你修改软件包 docker-ce 并将 的依赖项替换为containerd.iocontainerd它就可以正常工作:我按照https://fabianlee.org/2018/09/28/ubuntu-customizing-and-repacking-a-deb-file/更改包中的依赖项(无需 sudo):

cd $(mktemp -d -t docker-XXX)
apt download docker-ce 
ar xf docker-ce_*.deb
mkdir DEBIAN
tar xf control.tar.xz -C DEBIAN

第一个命令仅创建一个临时目录并进入该目录。其余命令从 DEBIAN 子目录中的软件包中提取 5 个文件。我编辑了DEBIAN/control要更改containerd.io为的文件containerd并保存了该文件。我继续按照说明重建软件包:

tar -C DEBIAN -cJf control.tar.xz .
ar rcs docker-ce.deb debian-binary control.tar.xz data.tar.xz

docker-ce.deb这会在临时目录中创建一个新的 deb 文件。我按照这里的说明进行操作https://docs.docker.com/install/linux/docker-ce/ubuntu/但在sudo apt install ...命令中我把 和 替换containerd.iocontainerddocker-ce成功 ./docker-ce.deb了!用 测试过docker run hello-world

答案4

github 上是否有针对此问题打开的 issuehttps://github.com/docker/for-linux/issues/832以及一些解决方法。目前还没有稳定的 Eoan 软件包。一些解决方法如下:

  • 从 Ubuntu bionic 手动安装 containerd(并在需要时手动升级)
  • 改用 bionic 存储库
  • 使用测试或夜间存储库而不是稳定存储库。

snap 中有一个可用的版本但是太旧了(18.x),而 universe 存储库中有 docker.io 包(19.03,不是最新的,但比 snap 更新)。

相关内容