Por que os serviços não iniciam na instalação?

23

Eu já vi isso em algum momento agora, mas não encontrei nada no homem do Ubuntu sobre esse policy-rc.dbinário peculiar que impede que os serviços sejam iniciados / reiniciados / interrompidos quando chamados pelo dpkg / apt, então eu gostaria de saber qual é o motivo disso.

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.

Aparentemente, nenhum pacote possui este binário:

dpkg -S /usr/sbin/policy-rc.d
dpkg-query: no path found matching pattern /usr/sbin/policy-rc.d
Braiam
fonte

Respostas:

31

Este "script" está incluído no sysv-rcpacote. Isso faz parte de uma política Debian que permite aos administradores de sistema controlar quais serviços são iniciados / reiniciados / interrompidos sempre que instalam / atualizam / desinstalam pacotes:

Interface da camada de política POLICY-RC.D (/usr/sbin/policy-rc.d):

A maioria dos sistemas Debian não terá esse script, pois a necessidade de uma camada de política não é muito comum. A maioria das pessoas que usa cadeias de chroot só precisa de um script de uma linha que retorne um status de saída 101 como o script /usr/sbin/policy-rc.d preso.

O arquivo /usr/sbin/policy-rc.d deve ser gerenciado através do sistema de alternativas (/ usr / sbin / update-alternative) por qualquer pacote que o forneça.

/usr/sbin/policy-rc.d [opções] []

/usr/sbin/policy-rc.d [opções] - lista [...]

( Fonte )

Então, o que acontece aqui? Bem, sempre que esse script estiver presente, ele retornará um código que indica a política atual do sistema local (que é por padrão 101= ação proibida pela política). Se você deseja alterar a política, basta modificar o arquivo como raiz para qualquer um destes valores:

  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. 

O script ainda é um espaço reservado, mas quando concluído, todos esses valores podem ser retornados. Se você quiser permitir que qualquer mudança apenas mudar exit 101para exit 0e feito. Sempre que você instalar / remover / atualizar um serviço, este será (re) iniciado / interrompido.

Braiam
fonte
6
As imagens do Docker foram corrigidasexit 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.
Tjorriemorrie
2
@Tjorriemorrie, por favor, você pode elaborar? Eu estou tendo esse problema ao construir uma imagem de estivador e eu parecem ser incapazes de corrigi-lo
Jonny Flores
solução possível: monblocnotes.com/node/2057
David Portabella
@JonnyFlowers Ele se refere a estas linhas, em fonte de estivador
Bigood
@ Big: o número da linha mudou no masterramo recente . Aqui está [um link permanente para as linhas na fonte do docker ( github.com/moby/moby/blob/v17.05.0-ce/contrib/mkimage/… ).
Hosam Aly