Почему сервисы не запускаются при установке?

23

Я видел это когда-то сейчас, но ничего не нашел в man ubuntu по поводу этого своеобразного 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
Braiam
источник

Ответы:

31

Этот «скрипт» входит в sysv-rcкомплект. Это часть политики Debian, которая позволяет системным администраторам контролировать, какие службы запускаются / перезапускаются / останавливаются при установке / обновлении / удалении пакетов:

POLICY-RC.D Интерфейс уровня политики (/usr/sbin/policy-rc.d):

В большинстве систем Debian этот сценарий отсутствует, поскольку необходимость в уровне политики встречается не очень часто. Большинству людей, использующих chroot-тюрьмы, просто нужен однострочный сценарий, который возвращает состояние выхода 101 как скрипт /usr/sbin/policy-rc.d.

Файл /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и сделано. Всякий раз, когда вы устанавливаете / удаляете / обновляете службу, она будет (пере) запускаться / останавливаться.

Braiam
источник
6
Исправлена exit 101 # For most Docker users, "apt-get install" only happens during "docker build", # where starting services doesn't work and often fails in humorous ways. This # prevents those failures by stopping the services from attempting to start.
ошибка с
2
@Tjorriemorrie, пожалуйста, вы можете уточнить? У меня возникла эта проблема при создании образа докера, и мне кажется, что я не могу ее исправить
Джонни Флауэрс
возможное решение: monblocnotes.com/node/2057
Дэвид
@JonnyFlowers Он ссылается на эти строки в источнике докера
Bigood
@Bigood: номер строки изменился в последней masterветке. Вот [постоянная ссылка на строки в источнике докера ( github.com/moby/moby/blob/v17.05.0-ce/contrib/mkimage/… ).
Хосам Али