Como eu forneço parâmetros de configuração do dpkg para aptitude ou apt-get?

8

Ao instalar o gitolite, descubro que:

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

A última linha é de interesse para mim. Se eu executar dpkg-reconfigure -plow gitolite , será apresentada uma caixa de diálogo e poderá ser modificada:

  • o nome de usuário do sistema para gitolite,
  • a localização dos repositórios gitolite e
  • forneça o pubkey de administrador.

Eu prefiro usar o usuário do sistema git e fornecer o pubkey de administração na instalação, diga algo do tipo:

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

Isso, claro, não funciona. Pode algo similar ser feito? Como faço para determinar os parâmetros de configuração antes do tempo? Isso seria notavelmente útil, por exemplo, ao instalar o gitolito automaticamente, via fantoche ou chef.

    
por troutwine 13.11.2011 / 00:45

2 respostas

14

Eu não testei isso, mas acredito que depois de executar o dpkg-reconfigure em uma máquina de exemplo, você pode executar debconf-get-selections | egrep "^gitolite\s" para obter o que foi definido. (está no pacote debconf-utils se você não tiver).

Em seguida, na CLI, debconf-set-selections $FILENAME antes de executar o apt.

Então, com fantoche, seria algo como:

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

Mais informações no site de fantoches:

Eu suspeito que o Chef tenha um mecanismo similar para especificar um arquivo de resposta ou preseed ou algo assim, mas eu não sou um usuário Chef.

    
por 13.11.2011 / 02:03
5

Você precisa fornecer um preseed para contornar isso. Veja como é feito para o Java em este módulo . Eu acho que a maneira mais fácil de obter um arquivo preseed é fazer uma instalação manual e configuração primeiro, e depois obter a semente disso. Este blog tem um bom exemplo disso.

    
por 13.11.2011 / 01:59