docker.io : Зависит от: containerd (>= 1.2.6-0ubuntu1~)

docker.io : Зависит от: containerd (>= 1.2.6-0ubuntu1~)

У меня возникла проблема с установкой Docker в Ubuntu 20.04.

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представляют собой 2 разных пакета.

Попробуйте 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

Связанный контент