Как мне предоставить параметры конфигурации 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
Мне предлагают диалог и я могу изменить:
- имя пользователя системы для gitolite,
- расположение репозиториев Gitolite и
- предоставьте админку pubkey.
Я бы предпочел использовать git
системный пользователь и предоставьте admin pubkey при установке, скажем что-то вроде:
# aptitude install gitolite --user git --admin-pubkey 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDAc7kCAi2WkvqpAL1fK1sIw6xjpatJ+Ms2nrwLJPhdovEY3MPZF7mtH+rv1CHFDn66fLGiWevOFp...'
Это, конечно, не работает. Можно ли сделать нечто подобное? Как определить параметры конфигурации заранее? Это было бы замечательно полезно, например, при автоматической установке гитолита через куклу или шеф-повара.
3 ответа
Я не проверял это, но я считаю, что после того, как вы запустите dpkg-reconfigure
на примере машины вы можете запустить debconf-get-selections | egrep "^gitolite\s"
чтобы получить то, что было установлено. (это в debconf-utils
пакет, если у вас его нет).
Затем на CLI, 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";
}
Больше информации на сайте кукол:
- http://projects.puppetlabs.com/projects/1/wiki/Debian_Preseed_Patterns
- http://projects.puppetlabs.com/projects/1/wiki/Debian_Patterns
- http://docs.puppetlabs.com/references/latest/type.html
Я подозреваю, что у Chef есть аналогичный механизм для указания файла ответов или файла preseed или чего-то подобного, но я не пользователь Chef.
Вы должны предоставить семена, чтобы обойти это. Посмотрите, как это делается для Java в этом модуле. Я считаю, что самый простой способ получить файл preseed - это сначала выполнить ручную установку и настройку, а затем получить начальное значение. Этот блог имеет хороший пример этого.
Я искал способ сделать это с помощью пакета ttf-mscorefonts-installer в Ubuntu. Используя приведенную выше инструкцию, придумал вот такой рецепт куклы:
# this is a preseed file which makes it answer the accept EULA when it asks
# got this content this way: apt install debconf-utils and then run this: debconf-get-selections | grep ttf-mscorefonts-installer
file {
"/var/cache/debconf/ttf-mscorefonts-installer.preseed":
content => "\
ttf-mscorefonts-installer msttcorefonts/baddldir error\n\
ttf-mscorefonts-installer msttcorefonts/dldir string\n\
ttf-mscorefonts-installer msttcorefonts/present-mscorefonts-eula note\n\
ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula boolean true\n\
ttf-mscorefonts-installer msttcorefonts/error-mscorefonts-eula error\n\
ttf-mscorefonts-installer msttcorefonts/dlurl string\n"
}
package { "ttf-mscorefonts-installer":
ensure => installed,
require => File["/var/cache/debconf/ttf-mscorefonts-installer.preseed"],
responsefile => "/var/cache/debconf/ttf-mscorefonts-installer.preseed"
}