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.

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.


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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.