Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

The CentOS RPM package conflicts with the runc package from the OS #5417

Closed
goeranu opened this issue Apr 23, 2021 · 3 comments
Closed

The CentOS RPM package conflicts with the runc package from the OS #5417

goeranu opened this issue Apr 23, 2021 · 3 comments
Labels
kind/external Issue in external component being tracked by containerd

Comments

@goeranu
Copy link

goeranu commented Apr 23, 2021

Is this the correct place to report an issue with the RPM packaging of containerd for CentOS 8 provided at https://download.docker.com/linux/centos/8/x86_64/stable/? If not, anyone who knows better please give me a pointer

Description
The RPM packaging does not allow simultaneous installation of podman and docker on a CentOS host. The docker-ce package requires containerd.io. The latter package includes the file /usr/bin/runc, and it also obsoletes and conflicts with the package runc. It does not, however, provide runc.

The package podman in the OS however requires the package runc of version 1.0.0-57 or later.

So to install docker-ce, one needs to uninstall runc and thus also podman, and vice versa.

I can't claim to understand how those different pieces of the container runtimes connect together. From what I can tell, there is no technical problem with installing both packages. If I install docker-ce, then force install the runc package from the OS, and after that do a regular install of podman, also from the OS, both seem to work just fine. I can simultaneously have a container running in docker and another in podman. None of them has the runc binary as its parent in the process tree.

I see a couple of potential ways to solve this problem.

  • If /usr/bin/runc isn't actually used by docker-ce, but rather included since it is built from the containerd sources, then maybe one could consider placing it in an optional subpackage. Docker-ce would require only the base containerd package while the runc binary could be installed from another package, perhaps called containerd-runc. That would be similar to how podman packages its docker compatibility script, where a separate package podman-docker contains this script. It is not needed to run podman, and it can of course not be installed at the same time as the docker-ce package, but it is not a problem.
  • Another option would be for for the package to take the role of providing runc. According to the Fedora Packaging Guidelines which seems to be one of the more developed guidelines, if a package is compatible enough to replace another package it should obsolete and provide that package name with proper versions (but not conflict). The runc package in the OS is based on the Opencontainers version of runc. It is beyond me to understand if the “compatible enough” requirement applies here.
@AkihiroSuda AkihiroSuda added kind/external Issue in external component being tracked by containerd and removed kind/bug labels Apr 24, 2021
@AkihiroSuda
Copy link
Member

The rpm is maintained by Docker, Inc., not by containerd maintainers https://github.com/docker/containerd-packaging

@AkihiroSuda
Copy link
Member

Relevant : docker/containerd-packaging#210

@goeranu
Copy link
Author

goeranu commented Apr 25, 2021

Thank you for that pointer! I've added a comment to that report instead.

@goeranu goeranu closed this as completed Apr 25, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind/external Issue in external component being tracked by containerd
Projects
None yet
Development

No branches or pull requests

2 participants