docker-ce: 依赖于libseccomp2(>= 2.3.0),但要安装的是2.2.3-3ubuntu3。

32

我正在我的Ubuntu机器上安装Docker,并遵循这个教程在Ubuntu上安装Docker引擎

当我运行sudo apt-get install -y docker-ce时,它没有在我的机器上安装Docker,并且出现以下错误:

$ sudo apt-get install -y docker-ce
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 docker-ce : Depends: libseccomp2 (>= 2.3.0) but 2.2.3-3ubuntu3 is to be installed
E: Unable to correct problems, you have held broken packages.

当我运行sudo apt-get install libseccomp2时,它已经安装在我的系统中,但当我尝试在我的机器上安装Docker时仍然遇到相同的错误。

这是我的Ubuntu操作系统信息:

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.2 LTS"
NAME="Ubuntu"
VERSION="16.04.2 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.2 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
VERSION_CODENAME=xenial
UBUNTU_CODENAME=xenial

这是一个Ubuntu相关的问题,最好在https://askubuntu.com/上提问...当你在谷歌上搜索“you have held broken packages”时...执行以下命令...sudo apt-get -f install - Scott Stensland
13个回答

20

我在安装Docker-ce版本18时遇到了同样的问题。我不会使用 aptitude 安装旧版本,因为nvidia-docker只支持18以上的Docker版本!

解决方案非常简单:

sudo add-apt-repository ppa:ubuntu-sdk-team/ppa
sudo apt-get update

你可以使用命令sudo apt-get install docker-ce来解决 libseccomp2 版本冲突的问题。

参考:https://gist.github.com/mingrui/187f0e629007443268ce8c1414012ed5


这适用于在安装docker 18.06.3/stable版本时的ubuntu14.04,谢谢。 - zqcolor
我被困在一个旧的16.04安装中,这正是我所需要的。 - Jeffrey Van Alstine

19

我在Ubuntu 16上遇到了同样的问题。我尝试了几乎所有的解决方案。以下命令适用于我。

sudo apt install docker.io

但我注意到现在最新版本是使用docker-ce安装的,docker.io是一个较旧的版本。但是为了解决问题,你需要找到兼容的版本。

对于我来说,可以通过指定版本名称来运行以下命令。

apt install docker-ce=17.12.0~ce-0~ubuntu
下面的命令将列出可用的版本列表。您可以从上到下依次尝试。
apt-cache madison docker-ce

1
我有Docker 1.x版本,每次安装都是1.x版本。在按照这个步骤后,我得到了Docker 17.x版本,谢谢。 - Kiran

13

我正在使用Linux MintUbuntu 16.04 (Xenial Xerus))。

我遇到了完全相同的错误。

解决方案在这里:https://docs.docker.com/install/linux/docker-ce/ubuntu/#install-docker-ce-1

我认为你需要像这样选择特定版本(我选择了xenial版本 - 最新版本):

patrikx3@workstation:~$ sudo -i
[sudo] password for patrikx3:
root@workstation:~# apt-cache madison docker-ce
 docker-ce | 17.12.1~ce-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
 docker-ce | 17.12.0~ce-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
 docker-ce | 17.09.1~ce-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
 docker-ce | 17.09.0~ce-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
 docker-ce | 17.06.2~ce-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
 docker-ce | 17.06.1~ce-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
 docker-ce | 17.06.0~ce-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
 docker-ce | 17.03.2~ce-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
 docker-ce | 17.03.1~ce-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
 docker-ce | 17.03.0~ce-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
root@workstation:~# apt install docker-ce=17.03.2~ce-0~ubuntu-xenial
Reading package lists... Done
Building dependency tree
Reading state information... Done
docker-ce is already the newest version (17.03.2~ce-0~ubuntu-xenial).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
root@workstation:~#

对于纯的ubuntu,它没有起作用。


我认为Ubuntu不是基于Linux Mint(而是基于Debian)。 - Peter Mortensen

9
我最好的解决方案是自己添加libseccomp2的存储库并更新软件包,然后我就不必更改Docker网站教程上的步骤了。
我使用了Debian软件包的链接(https://packages.debian.org/pt-br/sid/libseccomp2)。
在我的情况下,我需要2.4版本,因此在下载部分中,我点击了amd64并按照指示简单地将deb http://ftp.de.debian.org/debian sid main 添加到/etc/apt/sources.list 文件中。
之后我运行了: $ sudo apt-get install libseccomp2 库被更新,我成功安装了Docker。

8

我发现codersquirrel的回答很有帮助。

补充一下:

请执行以下步骤:

运行以下命令以添加libseccomp2存储库:

add-apt-repository "deb http://ftp.de.debian.org/debian sid main"

更新您的apt软件源:

apt-get update

安装 libseccomp2:

apt-get install libseccomp2

这就是全部。

我希望这有所帮助。


5

4

对于Ubuntu 16.04.1(Xenial Xerus)或更新版本,libseccomp2在Xenial更新中存在版本2.3。要安装它,请检查是否已选中以下选项:

系统设置软件和更新 → *更新:建议的更新

然后:

sudo apt update
sudo apt upgrade

这对于18.04也是有效的,不需要进行升级,但添加推荐更新(Ubuntu Updates Main amd64)会添加包含docker所需的最新版本libseccomp2的列表。 - Arruda

4

我有类似的问题。我使用 aptitude 而不是 apt 解决了它:

$ sudo aptitude install docker-ce

跳过任何解决方案并接受声称解决任何冲突依赖项的解决方案。
The following actions will resolve these dependencies:

     Install the following packages:                    
1)     docker-ce [17.04.0~ce-0~debian-stretch (stretch)]



Accept this solution? [Y/n/q/?] y

aptitude 自行安装 docker-ce
$ docker --version
Docker version 17.04.0-ce, build 4845c56

root@workstation:~# aptitude install docker-ce 将安装以下新软件包: docker-ce{b} 接受此解决方案?[Y/n/q/?] y 不会安装、升级或删除任何软件包。 0 个软件包升级,新安装了 0 个软件包,要移除 0 个软件包,有 0 个软件包未被升级。 需要下载 0 B 的归档文件。解包后将使用 0 B。 - Patrik Laszlo

3

我从我们的运维人员那里得到了一台Ubuntu服务器,并遇到了同样的问题。

当我开始进行调查时,发现在文件/etc/apt/sources.list中,软件包仓库的URL已经失效。

在我的情况下,它是:

deb http://ubuntu-mirror/ubuntu/ xenial universe

将每行中的 ubuntu-mirror 改为 de.archive.ubuntu.com,即可得到一个有效的包含 URL 的 /etc/apt/sources.list 文件。

deb http://de.archive.ubuntu.com/ubuntu/ xenial universe

那么

sudo apt update
sudo apt upgrade
sudo apt install -y docker-ce

PS:运维人员将旧版的Ubuntu 10.04(Lucid Lynx)升级到Ubuntu 16.04(Xenial Xerus),但更新后软件源出现了问题。


事实上,我不得不更换镜像,现在我可以更新Docker到Docker-CE 18了。很奇怪,在此之前我只使用17.03.2ce-0ubuntu-xenial,并且通过apt-cache madison docker-ce命令来工作于Ubuntu Xenial,但是我更新了镜像后就出现了问题!!! - Patrik Laszlo

1

您可以运行apt --fix-broken install,无需任何软件包,或者您可以指定它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接