Debian

如何向 aptitude 或 apt-get 提供 dpkg 配置參數?

  • September 21, 2021

安裝 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 儲存庫的位置和
  • 提供管理員公鑰。

我更喜歡使用git系統使用者並在安裝時提供管理員公鑰,比如說:

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

這當然行不通。可以做類似的事情嗎?如何提前確定配置參數?例如,當通過 puppet 或 chef 自動安裝 gitolite 時,這將非常有用。

我沒有對此進行測試,但我相信在您dpkg-reconfigure在範例機器上執行之後,您可以執行debconf-get-selections | egrep "^gitolite\s"以獲取設置的內容。debconf-utils(如果你沒有它,它在包裡)。

然後在 CLI 上,debconf-set-selections $FILENAME在執行 apt 之前。

然後使用 puppet 它會是這樣的:

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 網站的資訊:

我懷疑 Chef 有類似的機制來指定響應文件或預置文件或類似的東西,但我不是 Chef 使用者。

引用自:https://serverfault.com/questions/330456