我正在尝试根据官方的CentOS7图像更新Docker镜像。它用作Node.js项目的构建器。
我需要添加systemd-devel
包来编译一些依赖项,但是这会失败并出现以下错误:
fakesystemd-1-17.el7.centos.noarch has installed conflicts systemd: fakesystemd-1-17.el7.centos.noarch
由于
答案 0 :(得分:7)
fakesystemd
是CentOS Docker镜像中的一个特殊包,它满足了对Systemd的依赖,而没有实际安装Systemd(毕竟,你通常不需要容器中的init系统)。 yum info fakesystemd
告诉我们更多信息:
最小的docker特定包,以满足systemd
Provides:
而无需在Docker镜像中安装systemd。它主要用于Docker镜像/容器。它不提供systemd包的任何功能 - 它只包含很少的重要目录和文件。 fakesystemd绝对不适用于完全可启动的操作系统!要在映像中安装real systemd,您需要以这种形式运行yum swap命令:
yum swap -- remove fakesystemd -- install systemd systemd-libs
您需要将fakesystemd
包与“真正的”systemd
包交换,然后还可以安装systemd-devel
:
RUN yum swap -y fakesystemd systemd && \
yum install -y systemd-devel