Mengapa layanan tidak dimulai saat instalasi?

23

Saya pernah melihat ini kadang-kadang sekarang, tetapi tidak menemukan apa pun di ubuntu man tentang policy-rc.dbinary aneh ini yang mencegah layanan dari mulai / restart / dihentikan ketika dipanggil oleh dpkg / apt, jadi saya ingin tahu apa alasannya.

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.

Rupanya, tidak ada paket yang memiliki biner ini:

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

Jawaban:

31

"Script" ini termasuk dalam sysv-rcpaket. Ini adalah bagian dari kebijakan Debian yang memungkinkan sysadmin untuk mengontrol layanan apa yang dimulai / dimulai ulang / berhenti setiap kali mereka menginstal / meningkatkan / menghapus paket:

Antarmuka POLICY-RC.D Policy layer (/usr/sbin/policy-rc.d):

Sebagian besar sistem Debian tidak akan memiliki skrip ini karena kebutuhan untuk lapisan kebijakan tidak terlalu umum. Kebanyakan orang yang menggunakan chroot jails hanya membutuhkan skrip satu baris yang mengembalikan status keluar 101 sebagai skrip /usr/sbin/policy-rc.d yang dipenjara.

File /usr/sbin/policy-rc.d harus dikelola melalui sistem alternatif (/ usr / sbin / update-alternative) oleh setiap paket yang menyediakannya.

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

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

( Sumber )

Jadi, apa yang terjadi di sini? Nah, setiap kali skrip ini hadir, ia akan mengembalikan kode yang menyatakan kebijakan sistem lokal saat ini (yang secara default 101= tindakan dilarang oleh kebijakan). Jika Anda ingin mengubah kebijakan, cukup modifikasi file sebagai root untuk semua nilai ini:

  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. 

Script masih merupakan tempat penampung, tetapi ketika selesai semua nilai ini dapat dikembalikan. Jika Anda ingin mengizinkan perubahan hanya mengubah exit 101untuk exit 0dan dilakukan. Setiap kali Anda menginstal / menghapus / meningkatkan layanan, ini akan (kembali) dimulai / dihentikan.

Braiam
sumber
6
Gambar Docker telah diperbaikiexit 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, bisakah Anda menjelaskan? Saya mengalami masalah ini ketika membangun gambar buruh pelabuhan dan saya tampaknya tidak dapat memperbaikinya
Jonny Flowers
solusi yang memungkinkan: monblocnotes.com/node/2057
David Portabella
@JonnyFlowers Ia merujuk pada baris-baris ini, dalam sumber buruh pelabuhan
Bigood
@Bigood: nomor baris berubah di mastercabang terakhir . Ini adalah [tautan permanen ke baris-baris dalam sumber buruh pelabuhan ( github.com/moby/moby/blob/v17.05.0-ce/contrib/mkimage/… ).
Hosam Aly