Comment fournir les paramètres de configuration de dpkg à aptitude ou apt-get?

8

Lors de l'installation de gitolite, je trouve 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.

La dernière ligne m'intéresse. Si je cours, dpkg-reconfigure -plow gitoliteune boîte de dialogue s'affiche et je peux modifier:

  • le nom d'utilisateur du système pour gitolite,
  • l'emplacement des dépôts de gitolite et
  • fournir la clé de pub d'administration.

Je préférerais utiliser l' gitutilisateur système et fournir la clé de publication admin lors de l'installation, dites quelque chose du genre:

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

Bien sûr, cela ne fonctionne pas. Peut-on faire quelque chose de similaire? Comment déterminer à l'avance les paramètres de configuration? Cela serait remarquablement utile, par exemple, lors de l'installation automatique de gitolite, via une marionnette ou un chef.

vin de truite
la source

Réponses:

14

Je n'ai pas testé cela, mais je crois qu'après avoir exécuté votre dpkg-reconfiguresur un exemple de machine, vous pouvez exécuter debconf-get-selections | egrep "^gitolite\s"pour obtenir ce qui a été défini. (c'est dans le debconf-utilspaquet si vous ne l'avez pas).

Puis sur la CLI, debconf-set-selections $FILENAMEavant d'exécuter apt.

Avec une marionnette, ce serait quelque chose comme:

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

Plus d'infos sur le site de la marionnette:

Je soupçonne Chef d'avoir un mécanisme similaire pour spécifier un fichier de réponses ou un fichier prédéfini ou quelque chose comme ça, mais je ne suis pas un utilisateur Chef.

freiheit
la source
5

Vous devez fournir un pré - requis pour contourner ce problème . Découvrez comment cela se fait pour Java dans ce module . Je trouve que le moyen le plus simple d'obtenir un fichier prédéfini est de faire d'abord une installation et une configuration manuelles, puis d'obtenir la graine à partir de cela. Ce blog en a un bon exemple.

Daniel C. Sobral
la source