Назад | Перейти на главную страницу

Как передать параметры конфигурации dpkg в aptitude или apt-get?

При установке гитолита обнаружил, что:

# 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 Мне предоставляется диалоговое окно, и я могу изменить:

Я бы предпочел использовать git системного пользователя и укажите при установке ключ администратора, скажите что-нибудь в этом роде:

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

Это, конечно, не работает. Можно ли сделать что-то подобное? Как мне заранее определить параметры конфигурации? Это было бы очень полезно, например, при автоматической установке гитолита через puppet или chef.

Я не тестировал это, но считаю, что после запуска dpkg-reconfigure на примере машины вы можете запустить debconf-get-selections | egrep "^gitolite\s" чтобы получить то, что было установлено. (это в debconf-utils пакет, если у вас его нет).

Затем в интерфейсе командной строки 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";
}

Больше информации на сайте марионетки:

Я подозреваю, что у Chef есть аналогичный механизм для указания файла ответов или файла preseed или чего-то подобного, но я не являюсь пользователем Chef.

Вам необходимо предоставить предпосев чтобы обойти это. Посмотрите, как это сделано для Java в этот модуль. Я считаю, что самый простой способ получить файл preseed - это сначала выполнить ручную установку и настройку, а затем получить оттуда исходную информацию. Этот блог есть хороший пример этого.