我已经看到过这种情况,但是在 ubuntu man 中没有找到有关这个特殊policy-rc.d
二进制文件的任何信息,该二进制文件会阻止服务在被 dpkg/apt 调用时启动/重新启动/停止,所以我想知道这是什么原因造成的。
Setting up lxc (0.9.0-0ubuntu3.6) ...
invoke-rc.d: policy-rc.d denied execution of start.
invoke-rc.d: policy-rc.d denied execution of start.
invoke-rc.d: policy-rc.d denied execution of start.
显然,没有包拥有这个二进制文件:
dpkg -S /usr/sbin/policy-rc.d
dpkg-query: no path found matching pattern /usr/sbin/policy-rc.d
答案1
此“脚本”包含在sysv-rc
软件包中。这是 Debian 策略的一部分,允许系统管理员控制在安装/升级/卸载软件包时启动/重新启动/停止哪些服务:
POLICY-RC.D 策略层(/usr/sbin/policy-rc.d)接口:
大多数 Debian 系统不会有此脚本,因为对策略层的需求并不常见。大多数使用 chroot jails 的人只需要一行脚本,该脚本作为被监禁的 /usr/sbin/policy-rc.d 脚本返回退出状态 101。
/usr/sbin/policy-rc.d 文件必须可以通过任何提供替代系统 (/usr/sbin/update-alternatives) 的软件包进行管理。
/usr/sbin/policy-rc.d [选项] []
/usr/sbin/policy-rc.d [选项] --列表 [...]
(来源)
那么,这里发生了什么?好吧,只要这个脚本存在,它就会返回一个代码,该代码表明本地系统的当前策略(默认情况下101
= 策略禁止的操作)。如果您想更改策略,只需以 root 身份将文件修改为以下任何值:
0 - action allowed
1 - unknown action (therefore, undefined policy)
100 - unknown initscript id
101 - action forbidden by policy
102 - subsystem error
103 - syntax error
104 - [reserved]
105 - behaviour uncertain, policy undefined.
106 - action not allowed. Use the returned fallback actions
(which are implied to be "allowed") instead.
脚本仍是一个占位符,但完成后所有这些值都可以返回。如果您想允许任何更改,只需更改exit 101
为exit 0
并完成。每当您安装/删除/升级服务时,这些服务都会(重新)启动/停止。