Tại sao các dịch vụ không bắt đầu lúc cài đặt?


23

Tôi đã thấy điều này đôi khi, nhưng không tìm thấy bất cứ điều gì ở người đàn ông Ubuntu về policy-rc.dnhị phân đặc biệt này ngăn chặn các dịch vụ được khởi động / khởi động lại / dừng khi được gọi bởi dpkg / apt, vì vậy tôi muốn biết lý do của việc này là gì.

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.

Rõ ràng, không có gói nào sở hữu nhị phân này:

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

Câu trả lời:


31

"Kịch bản" này được bao gồm trong sysv-rcgói. Đây là một phần của chính sách Debian cho phép các hệ thống quản lý các dịch vụ bắt đầu / khởi động lại / dừng bất cứ khi nào chúng cài đặt / nâng cấp / gỡ cài đặt gói:

Giao diện lớp chính sách POLICY-RC.D (/usr/sbin/policy-rc.d):

Hầu hết các hệ thống Debian sẽ không có tập lệnh này vì nhu cầu về lớp chính sách không phổ biến lắm. Hầu hết mọi người sử dụng chroot jails chỉ cần một tập lệnh một dòng sẽ trả về trạng thái thoát 101 là tập lệnh /usr/sbin/policy-rc.d.

Tệp /usr/sbin/policy-rc.d phải được quản lý thông qua hệ thống thay thế (/ usr / sbin / update-thay thế) bởi bất kỳ gói nào cung cấp nó.

/usr/sbin/policy-rc.d [tùy chọn] []

/usr/sbin/policy-rc.d [tùy chọn] --list [...]

( Nguồn )

Vì vậy, những gì xảy ra ở đây? Chà, bất cứ khi nào tập lệnh này xuất hiện, nó sẽ trả về một mã cho biết chính sách hiện tại của hệ thống cục bộ (theo mặc định 101= hành động bị cấm bởi chính sách). Nếu bạn muốn thay đổi chính sách, chỉ cần sửa đổi tệp dưới dạng root thành bất kỳ giá trị nào trong số này:

  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. 

Kịch bản vẫn là một người giữ chỗ, nhưng khi hoàn thành tất cả các giá trị này có thể được trả về. Nếu bạn muốn cho phép bất kỳ sự thay đổi chỉ cần thay đổi exit 101cho exit 0và thực hiện. Bất cứ khi nào bạn cài đặt / gỡ bỏ / nâng cấp một dịch vụ, những dịch vụ này sẽ được bắt đầu / dừng lại.


6
Hình ảnh Docker đã được sửaexit 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 bạn có thể giải thích rõ hơn không? Tôi đang gặp vấn đề này khi xây dựng hình ảnh docker và dường như tôi không thể khắc phục nó
Jonny Flowers


@JonnyFlowers Anh ấy đề cập đến những dòng này, trong nguồn của
docker

@Bigood: số dòng thay đổi trong masterchi nhánh gần đây . Đây là [một permalink cho các dòng trong nguồn của docker ( github.com/moby/moby/blob/v17.05.0-ce/contrib/mkimage/ít ).
Hosam Aly
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.