为什么 debian stable 优先安装 cgmanager?

为什么 debian stable 优先安装 cgmanager?

我使用debootstrapsystemd-nspawn来启动 Debian Unstable 的容器。主机系统是 Debian Jessie。

systemctl显示容器有一个失败的服务,cgproxy。 (cgmanager尽管运行了守护进程,但在主机上安装没有帮助cgmanager)。

如果我询问如何从容器中apt-get删除,它会说删除并安装.但建议是首选的选择。cgmanagersystemd-shimsystemd-sysvaptitudesystemd-shim

$ aptitude why cgmanager
i   systemd        Recommends libpam-systemd                        
i A libpam-systemd Depends    systemd-shim (>= 10-3~) | systemd-sysv
i A systemd-shim   Depends    cgmanager (>= 0.32)
  • 具体取决于什么libpam-systemd,可以由 或 之一systemd-shim提供systemd-sysv?的描述systemd-sysv只说它有“systemd 替换 sysvinit 所需的手册页和链接”。
  • 为什么包裹更libpam-systemd喜欢?systemd-shimsystemd-sysv
  • 如果我切换它,这样我就没有间接安装systemd-shim,因此cgmanager,我是否会失去任何预期的功能?

答案1

libpam-systemd 具体依赖什么,可以由 systemd-shim 或 systemd-sysv 之一提供? systemd-sysv 的描述只说它有“systemd 替换 sysvinit 所需的手册页和链接”。

我认为这是systemd-部分:-P。

libpam-systemd设计用于在使用systemd.或者,如果它使用不同的 init 系统启动,它将与 systemd 一起使用 -垫片

你有点被这个名字误导了systemd-sysv。它不仅仅为用户程序提供向后兼容性。它还通过创建从到 的systemd符号链接将其设置为内核加载的默认 init 系统。/sbin/init/lib/systemd/systemd

包依赖项假设当且仅当 systemd 是默认 init 系统时libpam-systemd操作系统才会启动。systemd

结论:当你想在 Debian 中安装 systemd 时,通常需要安装 systemd-sysv 软件包。

您感到困惑的真正原因是您使用 启动了容器systemd-nspawn。我认为systemd-nspawn在通常的地方搜索init系统,然后回落到/lib/systemd/systemd

如果您尝试使用 Linux 内核(例如在虚拟机中)启动此安装,您会注意到您没有设置默认初始化系统

    if (!try_to_run_init_process("/sbin/init") ||
        !try_to_run_init_process("/etc/init") ||
        !try_to_run_init_process("/bin/init") ||
        !try_to_run_init_process("/bin/sh"))
        return 0;

    panic("No working init found.  Try passing init= option to kernel. "
"See Linux Documentation/admin-guide/init.rst for guidance.");

https://github.com/torvalds/linux/blob/v4.11/init/main.c#L990

为什么 libpam-systemd 软件包更喜欢 systemd-shim 而不是 systemd-sysv?

大概有些软件包依赖于 libpam-systemd。当它作为依赖项引入时,如果尚未将其标记为这样,则假定您不希望安装 systemd-sysv。这样做会改变你的初始化系统!相反,最好安装兼容性垫片。

如果我切换它,这样我就没有间接安装 systemd-shim 和 cgmanager,我是否会失去任何预期的功能?

没有。

相关内容