debconf 是 Debian 使用的一种软件包配置方法。支持 debconf 的软件在安装时,会弹出对话框,要求用户输入一定配置参数。
在非交互式环境下安装这类软件,用户无法在线提供软件的配置项。因此用户需要通过 dpkg-preconfigure 预先指定软件配置。
目前 dpkg-preconfigure 的用法比较奇怪。没有非常完美的用法,总觉得怪怪的。下面这个方案应该是我从网上可以找到,综合比较靠谱的。
1. 导入 debconf 模板
debconf 模板包含软件的配置项的名称、说明、默认值等内容。一般来说 debconf 模板是包含在 deb 包中。由于需要在安装 deb 时自动提供软件配置,所以需要在安装 deb 包之前,提前导入 debconf 模板。过程如下。
apt-get clean (清除 apt/cache 中缓存的 Debian 包)
apt-get install -d mysql-server-5.0 (下载 mysql-server-5.0,不安装)
dpkg-preconfigure /var/cache/apt/archives/mysql-server-5.0*.deb (导入 debconf 模板)
不完美的地方就在这里:导入一个软件的配置项,竟然要用三个命令。总觉得应该一个命令搞定。。。
2. 指定 debconf 配置
模板导入之后,可以使用 debconf-set-selections 设置软件配置。用下面的命令:
# debconf-set-selections
debconf mysql-server-5.0/start_on_boot select true
debconf mysql-server-5.0/start_on_boot seen true
(ctrl+d)
上面命令将 mysql-server-5.0/start_on_boot 设置为 true,并且设置配置项已经显示(区分配置项的值是默认值,还是用户输入值)。一般来说,软件安装时,只会显示 seen 为 false 的那些配置参数。
如果不知道软件有哪些配置选项,可以用 debconf-show 看到:
# debconf-show mysql-server-5.0
mysql-server/root_password_again: (password omitted)
* mysql-server/root_password: (password omitted)
mysql-server-5.0/really_downgrade: false
mysql-server-5.0/need_sarge_compat: false
mysql-server-5.0/start_on_boot: true
mysql-server/error_setting_password:
mysql-server-5.0/nis_warning:
mysql-server-5.0/postrm_remove_databases: false
mysql-server-5.0/need_sarge_compat_done: true
mysql-server/password_mismatch:
上面每行输出中第一个 * 表示 seen 为 true,没有星号表示 seen 为 false;每行输出中,冒号前面配置项,冒号后是值。
3. 安装软件
如果所有的 debconf 选项都通过上面的方法设置完毕。用下面的方法安装
apt-get install mysql-server-5.0
此时应该不会显示 debconf 的对话框。