¿Cómo proporciono los parámetros de configuración de dpkg a aptitude o apt-get?

8

Al instalar gitolite, encuentro 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 última línea me interesa. Si ejecuto dpkg-reconfigure -plow gitolite, se me presenta un cuadro de diálogo y puedo modificar:

  • el nombre de usuario del sistema para gitolita,
  • la ubicación de los depósitos de gitolita y
  • proporcione la clave pública de administración.

Prefiero usar el gitusuario del sistema y proporcionar la clave pública de administración en la instalación, digamos algo por el estilo:

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

Eso, por supuesto, no funciona. ¿Se puede hacer algo similar? ¿Cómo determino los parámetros de configuración con anticipación? Esto sería notablemente útil, por ejemplo, al instalar gitolite automáticamente, a través de títeres o chef.

trucha
fuente

Respuestas:

14

No he probado esto, pero creo que después de ejecutar su dpkg-reconfigureen una máquina de ejemplo, puede ejecutar debconf-get-selections | egrep "^gitolite\s"para obtener lo que se configuró. (está en el debconf-utilspaquete si no lo tiene).

Luego en la CLI, debconf-set-selections $FILENAMEantes de ejecutar apt.

Luego con la marioneta sería algo así 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";
}

Más información en el sitio de la marioneta:

Sospecho que Chef tiene un mecanismo similar para especificar un archivo de respuesta o un archivo preestablecido o algo así, pero no soy un usuario de Chef.

freiheit
fuente
5

Debe proporcionar una preselección para solucionar esto. Vea cómo se hace para Java en este módulo . Creo que la forma más fácil de obtener un archivo preestablecido es hacer primero una instalación y configuración manual, y luego obtener la semilla de eso. Este blog tiene un buen ejemplo de esto.

Daniel C. Sobral
fuente