J'essaie d'installer Docker sur mon Ubuntu 18.04, mais je reçois cette erreur:
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.
Que dois-je faire pour le réparer?
Vous devez installer le package containerd, voici comment je l'ai résolu.
$ 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
Sudo snap install docker
Ubuntu 18.04, cela a fonctionné pour moi.
Les liens suivants ne fonctionnaient pas
Y a-t-il un problème ouvert dans github pour cela https://github.com/docker/for-linux/issues/832 et quelques solutions de contournement là-bas. Il n'y a pas encore de paquets stables pour Eoan. Certaines solutions de contournement sont les suivantes:
Il existe une version disponible dans snap mais elle est trop ancienne (18.x) et il y a le package docker.io dans les référentiels d'univers (19.03, pas le dernier, mais plus récent que snap).
Éditer /etc/apt/sources.list
Sur cette ligne:
deb [Arch=AMD64] https://download.docker.com/linux/ubuntu eoan stable
Remplacez eoan
par bionic
Courir Sudo apt update
, puis réessayez d'installer docker-ce
Dans Ubuntu 19.10, vous pouvez installer docker en installant le package docker.io
, qui a containerd
et runc
comme dépendances. Vous pouvez également installer docker-ce
, docker-ce-cli
directement depuis le référentiel docker comme expliqué ici https://docs.docker.com/install/linux/docker-ce/ubuntu/ . Dans cette approche alternative, les dépendances containerd
et runc
sont remplacées par une seule dépendance containerd.io
. Le problème est que, pour une raison étrange, containerd.io
n'est pas dans le référentiel docker. Vous devez donc l'installer manuellement comme suggéré dans https://askubuntu.com/a/1190896/456438 .
Notez que containerd.io
est dit (dans le package lui-même) comme un remplacement valide pour containerd
et runc
. L'inverse n'est pas confirmé, mais si vous modifiez les packages docker-ce et remplacez la dépendance pour containerd.io
avec containerd
, ça marche: j'ai suivi les instructions dans https://fabianlee.org/2018/09/28/ubuntu-customizing-and-repacking-a-deb-file/ pour changer la dépendance dans le package (sans 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
La première commande crée uniquement un répertoire temporaire et un CD dans celui-ci. Le reste extrait 5 fichiers du package dans le sous-répertoire DEBIAN. J'ai édité le fichier DEBIAN/control
changer containerd.io
à containerd
et enregistré le fichier. J'ai continué avec les instructions pour reconstruire le paquet:
tar -C DEBIAN -cJf control.tar.xz .
ar rcs docker-ce.deb debian-binary control.tar.xz data.tar.xz
Cela crée un nouveau fichier deb docker-ce.deb
dans le répertoire temporaire. J'ai suivi les instructions ici https://docs.docker.com/install/linux/docker-ce/ubuntu/ mais dans Sudo apt install ...
commandes que j'ai remplacées containerd.io
avec containerd
et docker-ce
avec ./docker-ce.deb
. Ça a marché ! Testé avec docker run hello-world
.