当前位置: 首页>>技术教程>>正文


upstart – 为什么服务在安装时不启动?

, , ,

问题描述

我现在已经看到了这个,但是在 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

最佳回答

此 “script” 包含在 sysv-rc 包中。这是 Debian 政策的一部分,该政策允许系统管理员在安装/升级/卸载软件包时控制启动/重新启动/停止哪些服务:

POLICY-RC.D Policy layer (/usr/sbin/policy-rc.d) interface:

Most Debian systems will not have this script as the need for a policy layer is not very common. Most people using chroot jails just need an one-line script which returns an exit status of 101 as the jailed /usr/sbin/policy-rc.d script.

The /usr/sbin/policy-rc.d file must be managed through the alternatives system (/usr/sbin/update-alternatives) by any packages providing it.

/usr/sbin/policy-rc.d [options] []

/usr/sbin/policy-rc.d [options] –list […]

( Source )

那么,这里会发生什么?好吧,只要这个脚本出现,它就会返回一个代码,说明本地系统的当前策略(默认情况下 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 并完成。每当您安装/删除/升级服务时,这些服务都会(重新)启动/停止。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/12167.html,未经允许,请勿转载。