Wie stelle ich dpkg-Konfigurationsparameter für aptitude oder apt-get bereit?

8

Bei der Installation von Capitolit finde ich Folgendes:

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

Die letzte Zeile interessiert mich. Wenn ich laufe, wird dpkg-reconfigure -plow gitolitemir ein Dialogfeld angezeigt und ich kann Folgendes ändern:

  • der Systembenutzername für Gitolite,
  • die Position der Gitolit-Repositories und
  • Geben Sie den Administrator-Pubkey an.

Ich würde es vorziehen, den gitSystembenutzer zu verwenden und den Administrator-Pubkey bei der Installation bereitzustellen. Sagen Sie etwas in der Art:

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

Das funktioniert natürlich nicht. Kann etwas Ähnliches getan werden? Wie bestimme ich die Konfigurationsparameter im Voraus? Dies wäre zum Beispiel bemerkenswert nützlich, wenn Gitolite automatisch über eine Puppe oder einen Koch installiert wird.

Forellenwein
quelle

Antworten:

14

Ich habe dies nicht getestet, aber ich glaube, dass Sie, nachdem Sie Ihre dpkg-reconfigureauf einem Beispielcomputer ausgeführt haben, ausführen können debconf-get-selections | egrep "^gitolite\s", um das zu erhalten, was eingestellt wurde. (Es ist im debconf-utilsPaket, wenn Sie es nicht haben).

Dann auf der CLI, debconf-set-selections $FILENAMEbevor apt ausgeführt wird.

Dann wäre es mit Puppe so etwas wie:

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

Weitere Infos auf der Puppenseite:

Ich vermute, Chef hat einen ähnlichen Mechanismus zum Angeben einer Antwortdatei oder einer vordefinierten Datei oder dergleichen, aber ich bin kein Chef-Benutzer.

freiheit
quelle
5

Sie müssen eine Voreinstellung bereitstellen , um dies zu umgehen . Sehen Sie in diesem Modul, wie es für Java gemacht wird . Ich finde, dass der einfachste Weg, eine vorab festgelegte Datei zu erhalten, darin besteht, zuerst eine manuelle Installation und Konfiguration durchzuführen und dann den Startwert daraus zu ziehen. Dieser Blog hat ein gutes Beispiel dafür.

Daniel C. Sobral
quelle