是否有可能停止dpkg-reconfigure重新启动服务

我正在为基于Debian的系统构build安装密钥。 安装密钥基本上是将磁盘镜像复制到系统上,然后在chroot中安装一些在构build过程中复制到安装密钥上的软件包。

安装密钥所做的一件事是擦除现有的ssh密钥(所以我们不会创build一堆“完全相同”的ssh服务器)。 要尝试坚持debian的做事方式,我运行dpkg-reconfigure openssh-server来重新生成密钥,但是在重新configuration结束时,它会尝试重新启动服务器,这当然不会在安装密钥chroot中运行。

是否有可能告诉debconf重新configuration,但不要重新启动服务?

你所要求的不是直接用debconf或dpkg-reconfigure的函数。 如果您下载openssh-server的.deb文件,并从control.tar.gz中提取文件,则会看到'postinst'脚本执行invoke-rc.d或/etc/init.d/ssh:

418行:

setup_init() { if [ -x /etc/init.d/ssh ]; then update-rc.d ssh start 16 2 3 4 5 . stop 84 1 . >/dev/null if [ -x /usr/sbin/invoke-rc.d ]; then invoke-rc.d ssh restart else /etc/init.d/ssh restart fi fi } 

从这个文件说的,你应该在exit 101的chroot中创build一个/usr/sbin/policy-rc.d脚本。

值得注意的是:如果你不在一个不应该运行该服务的运行级别,那么服务将不会被invoke-rc.d启动。 所以有一个想法可能是说服chroot使用单用户模式。