Warum starten die Dienste nicht bei der Installation?

23

Ich habe dies schon einmal gesehen, aber im Ubuntu-Man nichts über diese eigenartige policy-rc.dBinärdatei gefunden, das verhindert, dass Dienste gestartet / neu gestartet / gestoppt werden, wenn sie von dpkg / apt aufgerufen werden. Deshalb möchte ich wissen, woran das liegt.

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.

Anscheinend besitzt kein Paket diese Binärdatei:

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

Antworten:

31

Dieses "Skript" ist im sysv-rcPaket enthalten. Dies ist Teil einer Debian-Richtlinie, mit der Sysadmins steuern können, welche Dienste gestartet / neu gestartet / gestoppt werden, wenn sie Pakete installieren / aktualisieren / deinstallieren:

Schnittstelle der Richtlinienschicht POLICY-RC.D (/usr/sbin/policy-rc.d):

Die meisten Debian-Systeme werden dieses Skript nicht haben, da die Notwendigkeit einer Richtlinienschicht nicht sehr verbreitet ist. Die meisten Benutzer von chroot-Jails benötigen nur ein einzeiliges Skript, das den Exit-Status 101 als inhaftiertes Skript /usr/sbin/policy-rc.d zurückgibt.

Die Datei /usr/sbin/policy-rc.d muss von allen Paketen, die sie bereitstellen, über das Alternativensystem (/ usr / sbin / update-alternatives) verwaltet werden.

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

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

( Quelle )

Also, was passiert hier? Wann immer dieses Skript vorhanden ist, wird ein Code zurückgegeben, der die aktuelle Richtlinie des lokalen Systems angibt (standardmäßig 101= Aktion durch Richtlinie verboten). Wenn Sie die Richtlinie ändern möchten, ändern Sie einfach die Datei als root auf einen dieser Werte:

  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. 

Das Skript ist immer noch ein Platzhalter, aber wenn es fertig ist, können alle diese Werte zurückgegeben werden. Wenn Sie eine Änderung zulassen möchten, ändern Sie einfach exit 101für exit 0und fertig. Wann immer Sie einen Dienst installieren / entfernen / aktualisieren, werden diese (neu) gestartet / gestoppt.

Braiam
quelle
6
Docker Bilder hat eine festeexit 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 können Sie bitte näher erläutern? Ich habe dieses Problem beim Erstellen eines Docker-Images und kann es anscheinend nicht beheben
Jonny Flowers
Mögliche Lösung: monblocnotes.com/node/2057
David Portabella
@JonnyFlowers Er bezieht sich auf diese Zeilen, in Docker Quelle
Bigood
@Bigood: Die Zeilennummer hat sich im letzten masterZweig geändert . Hier ist [ein Permalink zu den Zeilen in Dockers Quelle ( github.com/moby/moby/blob/v17.05.0-ce/contrib/mkimage/… ).
Hosam Aly