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


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

Ответы:


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


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/… ).
Хосам Али
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.