如何向aptitude或apt-get提供dpkgconfiguration参数?

当安装gitolite时,我发现:

# aptitude install gitolite The following NEW packages will be installed: gitolite 0 packages upgraded, 1 newly installed, 0 to remove and 29 not upgraded. Need to get 114 kB of archives. After unpacking 348 kB will be used. Get:1 http://security.debian.org/ squeeze/updates/main gitolite all 1.5.4-2+squeeze1 [114 kB] Fetched 114 kB in 0s (202 kB/s) Preconfiguring packages ... Selecting previously deselected package gitolite. (Reading database ... 30593 files and directories currently installed.) Unpacking gitolite (from .../gitolite_1.5.4-2+squeeze1_all.deb) ... Setting up gitolite (1.5.4-2+squeeze1) ... No adminkey given - not initializing gitolite in /var/lib/gitolite. 

最后一行是我感兴趣的。 如果我运行dpkg-reconfigure -plow gitolite我会看到一个对话框,并可以修改:

  • gitolite的系统用户名,
  • gitolite存储库的位置和
  • 提供pipe理员的公钥。

我更喜欢使用git系统用户,并在安装时提供admin pubkey,可以这样说:

 # aptitude install gitolite --user git --admin-pubkey 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDAc7kCAi2WkvqpAL1fK1sIw6xjpatJ+Ms2nrwLJPhdovEY3MPZF7mtH+rv1CHFDn66fLGiWevOFp...' 

那当然是行不通的。 可以做类似的事情吗? 如何提前确定configuration参数? 这将非常有用,例如,通过木偶或厨师自动安装gitolite。

我没有testing过这个,但是我相信在你的示例机器上运行dpkg-reconfigure之后,你可以运行debconf-get-selections | egrep "^gitolite\s" debconf-get-selections | egrep "^gitolite\s"来获得设定。 (如果你没有的话,它在debconf-utils包中)。

然后在CLI上运行apt之前, debconf-set-selections $FILENAME

然后用傀​​儡,它会是这样的:

 file { "/var/cache/debconf/gitolite.preseed": source => '...'; # someplace with that output } package { "gitolite": require => File["/var/cache/debconf/gitolite.preseed"], responsefile => "/var/cache/debconf/gitolite.preseed"; } 

更多关于puppet网站的信息:

我怀疑厨师有一个类似的机制来指定一个响应文件或预先定义的文件或类似的东西,但我不是一个厨师用户。

你需要提供一个预先解决这个问题的方法。 看看这个模块是如何完成Java的。 我发现获取预先定义文件的最简单方法是首先进行手动安装和configuration,然后从中获取种子。 这个博客就是一个很好的例子。