Bagaimana cara saya memberikan parameter konfigurasi dpkg ke aptitude atau apt-get?

8

Saat memasang gitolite, saya menemukan bahwa:

# 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.

Baris terakhir menarik bagi saya. Jika saya menjalankan dpkg-reconfigure -plow gitolitesaya disajikan dengan dialog dan dapat memodifikasi:

  • nama pengguna sistem untuk gitolite,
  • lokasi repositori gitolit dan
  • berikan pubkey admin.

Saya lebih suka menggunakan gitpengguna sistem dan memberikan admin pubkey saat instalasi, katakan sesuatu seperti itu:

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

Tentu saja itu tidak berhasil. Bisakah hal serupa dilakukan? Bagaimana cara menentukan parameter konfigurasi sebelumnya? Ini akan sangat berguna, misalnya, ketika memasang gitolite secara otomatis, melalui boneka atau koki.

ikan troutwine
sumber

Jawaban:

14

Saya belum menguji ini, tetapi saya percaya bahwa setelah Anda menjalankan dpkg-reconfiguremesin contoh, Anda dapat menjalankan debconf-get-selections | egrep "^gitolite\s"untuk mendapatkan apa yang telah ditetapkan. (ada dalam debconf-utilspaket jika Anda tidak memilikinya).

Kemudian pada CLI, debconf-set-selections $FILENAMEsebelum menjalankan apt.

Maka dengan boneka itu akan menjadi seperti:

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";
}

Info lebih lanjut tentang situs boneka:

Saya menduga Chef memiliki mekanisme yang sama untuk menentukan file responsefile atau preseed atau sesuatu seperti itu, tapi saya bukan pengguna Chef.

freiheit
sumber
5

Anda perlu menyediakan pelatihan untuk mengatasi hal ini. Lihat bagaimana hal itu dilakukan untuk Java dalam modul ini . Saya menemukan bahwa cara termudah untuk mendapatkan file preseed adalah dengan melakukan instalasi dan konfigurasi manual terlebih dahulu, dan kemudian mendapatkan seed dari itu. Blog ini memiliki contoh yang bagus tentang ini.

Daniel C. Sobral
sumber