Như bạn có thể biết, theo mặc định khi bạn cài đặt gói trên hệ thống dựa trên Debian hoặc Ubuntu, nếu gói chứa dịch vụ, dịch vụ đó thường sẽ được bật và bắt đầu tự động khi bạn cài đặt gói.
Đây là một vấn đề đối với tôi.
Tôi thấy mình cần quản lý các mẫu để xây dựng các container LXC. Có một số container, mỗi container tương ứng với bản phát hành Debian hoặc Ubuntu. (Ngoài ra còn có các container dựa trên Red Hat, nhưng chúng không liên quan ở đây.)
/var/lib/libvirt/filesystems/debian6_template
/var/lib/libvirt/filesystems/debian7_template
/var/lib/libvirt/filesystems/ubuntu1004_template
/var/lib/libvirt/filesystems/ubuntu1204_template
Thỉnh thoảng tôi sẽ thấy rằng các mẫu có một gói bị thiếu hoặc cần một số thay đổi khác, vì vậy tôi sẽ chroot vào chúng để cài đặt gói. Thật không may khi tôi làm điều đó, tôi kết thúc với một vài bản sao của dịch vụ của gói đang chạy!
Ví dụ, tôi thấy các mẫu không có trình nền syslog, vì vậy tôi đã cài đặt một mẫu:
for template in /var/lib/libvirt/filesystems/{debian,ubuntu}*_template; do
chroot $template apt-get install rsyslog
done
Và kịp thời xử lý với bốn bản sao của rsyslog đang chạy. Chưa kể hai bản exim4. Giáo sư!
Tôi đã đọc ở đâu đó (mặc dù bây giờ tôi không thể tìm thấy nó nữa) rằng nó không được phép bắt đầu dịch vụ khi chạy trong một chroot, nhưng điều đó rõ ràng không xảy ra ở đây.
Một cuộc gọi hack khó chịu tiềm tàng có thể thay thế tạm thời các lệnh khác nhau thực sự bắt đầu các dịch vụ, chẳng hạn như start-stop-daemon
, và initctl
mặc dù đây là công việc nhiều hơn tôi thực sự muốn làm. Nếu tôi không có lựa chọn nào khác, mặc dù ...
Giải pháp lý tưởng ở đây sẽ là cho các hệ thống dựa trên Debian ngừng thực hiện công việc tào lao này, nhưng không thành công, có lẽ là một tùy chọn dòng lệnh tối nghĩa hoặc không có giấy tờ cho apt-get
?
Trong trường hợp không rõ ràng, tôi thực sự muốn giữ bất cứ điều gì liên quan đến việc quản lý các mẫu bên ngoài các mẫu, nếu có thể.