Pourquoi les services ne démarrent-ils pas lors de l'installation?

23

J'ai vu cela quelque temps maintenant, mais ne trouvant rien dans l'homme ubuntu à propos de ce policy-rc.dbinaire particulier qui empêche les services d'être démarrés / redémarrés / arrêtés lorsqu'il est appelé par dpkg / apt, donc je voudrais savoir quelle est la raison de cela.

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.

Apparemment, aucun paquet ne possède ce binaire:

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

Réponses:

31

Ce "script" est inclus dans le sysv-rcpackage. Cela fait partie d'une politique Debian qui permet aux administrateurs système de contrôler quels services démarrent / redémarrent / s'arrêtent chaque fois qu'ils installent / mettent à niveau / désinstallent des paquets:

Interface POLICY-RC.D de la couche de stratégie (/usr/sbin/policy-rc.d):

La plupart des systèmes Debian n'auront pas ce script car le besoin d'une couche de politique n'est pas très courant. La plupart des personnes utilisant des prisons chroot ont juste besoin d'un script d'une ligne qui renvoie un état de sortie de 101 comme script /usr/sbin/policy-rc.d emprisonné.

Le fichier /usr/sbin/policy-rc.d doit être géré via le système alternatif (/ usr / sbin / update-alternatives) par tous les packages qui le fournissent.

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

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

( Source )

Alors, que se passe-t-il ici? Eh bien, chaque fois que ce script est présent, il retournera un code qui énonce la politique actuelle du système local (qui est par défaut 101= action interdite par la politique). Si vous souhaitez modifier la stratégie, modifiez simplement le fichier en tant que root à l'une de ces valeurs:

  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. 

Le script est toujours un espace réservé, mais une fois terminé, toutes ces valeurs pourraient être retournées. Si vous souhaitez autoriser tout changement, changez simplement exit 101pour exit 0et c'est fait. Chaque fois que vous installez / supprimez / mettez à niveau un service, ceux-ci seront (re) démarrés / arrêtés.

Braiam
la source
6
Docker images has a fixedexit 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, pouvez-vous élaborer? Je rencontre ce problème lors de la création d'une image Docker et je semble incapable de le résoudre
Jonny Flowers
solution possible: monblocnotes.com/node/2057
David Portabella
@JonnyFlowers Il fait référence à ces lignes, dans la source de docker
Bigood
@Bigood: le numéro de ligne a changé dans la masterbranche récente . Voici [un permalien vers les lignes de la source de docker ( github.com/moby/moby/blob/v17.05.0-ce/contrib/mkimage/… ).
Hosam Aly