我使用debootstrap
和systemd-nspawn
引导一个包含Debian不稳定的容器。主机系统是Debian Jessie。
systemctl
显示容器有一个失败的服务,cgproxy
。(尽管运行了一个cgmanager
守护进程,但在主机上安装cgmanager
并没有帮助)。
如果我问apt-get
从容器中删除cgmanager
,它说要删除systemd-shim
并安装systemd-sysv
。但aptitude
认为,systemd-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
的描述只说它有“取代sysvinit所需的手册页和链接”。libpam-systemd
包更喜欢systemd-shim
而不是systemd-sysv
?systemd-shim
,从而cgmanager
,我会失去任何预期的功能吗?发布于 2017-05-09 14:58:00
libpam-systemd所依赖的具体内容是什么,它可以由systemd或systemd提供?对systemd的描述只表示它有“取代sysvinit所需的手册页和链接”。
我想这是systemd-
的部分:-P。
libpam-systemd
设计用于使用systemd
引导的系统。或者,如果它使用不同的init系统启动,它将与systemd-希姆希姆一起工作。
你被systemd-sysv
这个名字误导了。它不仅为用户程序提供了向后兼容性。它还通过创建从systemd
到/lib/systemd/systemd
的符号链接,将/sbin/init
设置为内核加载的默认init系统。
libpam-systemd
包依赖项假设操作系统是用systemd
引导的当且仅当systemd是默认init系统。
结论:当您想在Debian中安装systemd时,通常需要安装systemd包。
您感到困惑的真正原因是您使用systemd-nspawn
引导了容器。我认为systemd-nspawn
在通常的位置搜索init系统,然后返回到/lib/systemd/systemd
。
如果您试图使用Linux内核(例如在虚拟机中)引导此安装,您就会注意到您没有设置默认init系统
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,如果它没有被标记为依赖项的话。这样做会改变您的init系统!相反,它倾向于安装兼容性垫片。
如果我切换它,使我没有间接安装systemd和因此cgmanager,我会失去任何预期的功能吗?
不是的。
https://unix.stackexchange.com/questions/363935
复制相似问题