Debian
如何向 aptitude 或 apt-get 提供 dpkg 配置參數?
安裝 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 網站的資訊:
- https://projects.puppetlabs.com/projects/1/wiki/Debian_Preseed_Patterns
- https://projects.puppetlabs.com/projects/1/wiki/Debian_Patterns
- https://puppet.com/docs/puppet/7/types/package.html
我懷疑 Chef 有類似的機制來指定響應文件或預置文件或類似的東西,但我不是 Chef 使用者。