아시다시피, Debian 또는 Ubuntu 기반 시스템에 패키지를 설치할 때 기본적으로 패키지에 서비스가 포함되어 있으면 패키지를 설치할 때 해당 서비스가 일반적으로 활성화되고 자동으로 시작됩니다.
이것은 나에게 문제가된다.
LXC 컨테이너 빌드를위한 템플릿을 관리해야한다는 것을 알게되었습니다. 각각 데비안 또는 우분투 릴리스에 해당하는 여러 컨테이너가 있습니다. (Red Hat 기반 컨테이너도 있지만 여기서는 관련이 없습니다.)
/var/lib/libvirt/filesystems/debian6_template
/var/lib/libvirt/filesystems/debian7_template
/var/lib/libvirt/filesystems/ubuntu1004_template
/var/lib/libvirt/filesystems/ubuntu1204_template
때로는 템플릿에 누락 된 패키지가 있거나 다른 변경이 필요하다는 것을 알기 때문에 패키지를 설치하기 위해 chroot 할 것입니다. 불행히도 그렇게 할 때 패키지 서비스의 여러 사본이 실행됩니다!
예를 들어, 템플릿에 syslog 데몬이없는 것을 발견하여 하나를 설치했습니다.
for template in /var/lib/libvirt/filesystems/{debian,ubuntu}*_template; do
chroot $template apt-get install rsyslog
done
그리고 rsyslog의 사본 4 개가 즉시 실행됩니다. exim4의 두 사본은 말할 것도 없습니다. 죄송합니다!
chroot에서 실행할 때 서비스를 시작하지 않아야하지만 여기서는 분명히 일어나지 않는다는 것을 어딘가에서 읽습니다 (지금은 다시 찾을 수는 없지만).
한 잠재적으로 가능한 불쾌한 해킹 일시적으로 실제와 같은 서비스를 시작, 다양한 명령 대체 통화 start-stop-daemon
및 initctl
이 정말하고 싶었던 것보다 훨씬 더 많은 작업이 비록을. 그래도 다른 선택이 없다면 ...
여기서 이상적인 해결책은 데비안 기반 시스템이이 헛소리를 멈추는 것이지만 실패하거나 문서화되지 않은 apt-get
?
명확하지 않은 경우 가능한 경우 템플릿 외부 에서 템플릿 관리와 관련된 것을 유지하고 싶습니다 .