我之前问过(并回答过)一个关于如何在 Ubuntu 上预置 debconf 的问题:如何从以前安装的软件包中预置 debconf?
我发现只需附加到 config.dat 文件就可以了。然而,附加到passwords.dat 文件不起作用,因为它似乎创建了一个空白(或其他无法使用的密码)。 passwords.dat 预置看起来像这样:
Name: couchdb/adminpass
Template: couchdb/adminpass
Value:
Owners: couchdb
Flags: seen
Name: couchdb/adminpass_again
Template: couchdb/adminpass_again
Value:
Owners: couchdb
Flags: seen
我是否在值字段中添加了任何内容并不重要 - 当尝试输入管理员密码时,Couch 无论如何都会崩溃。
如何在 debconf 中预先配置密码信息?
答案1
不确定您是否找到了解决方案,但似乎没有很好或直观的方法来做到这一点。不过,有一些解决方案......
首先,你可以尝试debconf-set-selections
(手册页(并不是那么有用))来自debconf
包裹。这似乎是为了将配置从一台机器镜像到另一台机器。它接受带有逐行命令的文件(大概是用debconf-get-selections > my-conf.debconf
)或STDIN
输入(大概是从debconf-get-selections
另一台机器上通过管道传输的)。您还可以通过启动它sudo debconf-set-selections
并传递命令(用于ctrl-d
退出),或者您可以通过 echo 管道命令。
输入语法似乎是这样的
[package-name] [package-name]/[question-name] [type] [value]
例如,要将 openssh 服务器配置为在任何人通过 debconf 安装 sshd 时默认拒绝 root 密码,您可以运行
echo "openssh-server openssh-server/permit-root-login boolean false" | sudo debconf-set-selections
或者,您可以使用该debconf-communicate
程序,该程序类似于debconf-set-selections
,但它允许使用找到的命令进行更具交互性的会话这里。你可以像这样使用它:
$ sudo debconf-communicate
$ GET openssh-server/permit-root-login
$ 0 false
$ SET openssh-server/permit-root-login true
$ 0 value set
$ GET openssh-server/permit-root-login
$ 0 true
$ FSET openssh-server/permit-root-login seen true
$ 0 true
$ FGET openssh-server/permit-root-login seen
$ 0 true
$ SET openssh-server/permit-root-login false
$ 0 value set
对于某人来说,这似乎是一个成熟的领域,可以编写一个更好的 debconf 前端......
显然,如果您要编写此脚本,那么最好的选择就是路线debconf-set-selections
。
最后一点,不幸的是,找出软件包可用的选项更加困难。您的选择包括:
- 通过 下载包
sudo apt-get download [package-name] [dir]
,通过 解压dpkg-deb -R [filename] [unpacked-dirname]
,并检查[unpacked-dirname]/DEBIAN/templates
文件;或者 - 用于
sudo debconf-show [package-name]
查看已安装软件包的配置问题。 (请注意,包不必以自己的名义注册问题。)
无论如何,希望能有所帮助...
答案2
正如已接受的答案中提到的,debconf-set-selections
这是继续下去的方法。
基本上,您需要首先手动安装软件包,然后查看 debconf 数据库以查看创建了哪些条目(我不记得我是如何做到这一点的,抱歉)。
然后您可以创建一个.sh
脚本来为您预先播种这些条目。以下代码展示了如何预先播种 CouchDB 2.0 软件包安装程序:
HOST = aaa
USER = bbb
COUCH_PSWD = ccc
debconf-set-selections <<< 'couchdb couchdb/bindaddress string 0.0.0.0';
debconf-set-selections <<< 'couchdb couchdb/cookie string monster';
debconf-set-selections <<< 'couchdb couchdb/mode string clustered';
debconf-set-selections <<< 'couchdb couchdb/nodename string couchdb@#{HOST}';
debconf-set-selections <<< 'couchdb couchdb/adminpass password #{COUCH_PSWD}';
debconf-set-selections <<< 'couchdb couchdb/adminpass_again password #{COUCH_PSWD}';