我在 Ubuntu 20.04 中安装 docker 时遇到问题。
wolf@linux:~$ sudo apt install docker.io
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.io : Depends: containerd (>= 1.2.6-0ubuntu1~)
E: Unable to correct problems, you have held broken packages.
wolf@linux:~$
错误消息表明我需要containerd (>= 1.2.6-0ubuntu1~)
这很奇怪,因为我已经有了更新的版本1.2.13-2
wolf@linux:~$ dpkg -l containerd.io
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-==============-============-============-======================================
ii containerd.io 1.2.13-2 amd64 An open and reliable container runtime
wolf@linux:~$
系统已更新。我已经执行了sudo apt update && sudo apt upgrade
,不需要新的更新。
根据评论中的要求进行更新
wolf@linux:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.1 LTS
Release: 20.04
Codename: focal
wolf@linux:~$
答案1
containerd
并且containerd.io
是两个不同的包。
尝试一下dpkg -l containerd*
,你应该会看到这两个包。
$ dpkg -l containerd*
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-==============-==============-============-======================================
ii containerd 1.3.3-0ubuntu2 amd64 daemon to control runC
rc containerd.io 1.2.13-2 amd64 An open and reliable container runtime
$
如果containerd
没有的话,请继续使用 安装它sudo apt install containerd
。
如果这有帮助的话请告诉我。
答案2
我遇到了同样的错误,但情况更为复杂:
~# dpkg -l | grep containerd
ii containerd 1.3.3-0ubuntu2.3 amd64 daemon to control runC
~# apt-get install docker.io
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.io : Depends: containerd (>= 1.2.6-0ubuntu1~) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
显然,我在更新时忽略了一个明显的警告:
~# apt-get dist-upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following packages were automatically installed and are no longer required:
bridge-utils cgroupfs-mount dns-root-data dnsmasq-base git git-man iptables libcurl3-gnutls liberror-perl libip6tc2 libnetfilter-conntrack3 libnfnetlink0 libnftnl11 libnghttp2-14 librtmp1 libssh-4 patch pigz ubuntu-fan
Use 'apt autoremove' to remove them.
The following packages will be REMOVED:
docker.io ^^^^^^^ !!!
The following packages will be upgraded:
containerd
1 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
Need to get 27.8 MB of archives.
After this operation, 192 MB disk space will be freed.
Do you want to continue? [Y/n]
我没有深入研究,但有较新的安全软件包,它们不合适。但它没有解释为什么docker.io
不接受安装containerd
的版本1.3.3-0ubuntu2.3
,事实上>= 1.2.6-0ubuntu1~
~# apt-cache policy docker.io containerd
docker.io:
Installed: (none)
Candidate: 19.03.8-0ubuntu1.20.04.1
Version table:
19.03.8-0ubuntu1.20.04.1 500
500 http://ch.archive.ubuntu.com/ubuntu focal-security/universe amd64 Packages
100 /var/lib/dpkg/status
19.03.8-0ubuntu1 500
500 http://ch.archive.ubuntu.com/ubuntu focal/universe amd64 Packages
containerd:
Installed: 1.3.3-0ubuntu2.3
Candidate: 1.3.3-0ubuntu2.3
Version table:
*** 1.3.3-0ubuntu2.3 500
500 http://ch.archive.ubuntu.com/ubuntu focal-security/main amd64 Packages
100 /var/lib/dpkg/status
1.3.3-0ubuntu2 500
500 http://ch.archive.ubuntu.com/ubuntu focal/main amd64 Packages
解决方法
我可以通过降级containerd
到主池包然后重新安装来解决此问题docker.io
:
~# apt-get install containerd=1.3.3-0ubuntu2
The following packages will be DOWNGRADED:
containerd
~# apt-get install docker.io
错误报告
错误报告在这里:https://bugs.launchpad.net/ubuntu/+source/docker.io/+bug/1940920