m4_dnl -*-html-*- m4_include(`template.m4') m4_dnl $Id$ m4_define(`DE') m4_define(`EN_FILE', `build-installer.html') PAGE_START

Installationspaket herstellen

Der Bau eines neuen Gpg4win Installationspaketes ist weitestgehend automatisiert.

Was man benötigt: Ein Debian GNU/Linux 3.1 'sarge' system. Dafür ist die nachfolgende Anleitung getestet. Prinzipiell sind auch andere Systeme, ggf. mit ein bischen Anpassungsarbeit, möglich.
Desweiteren mindestens 200 MByte Platz auf der Festplatte und eine halbwegs schnelle Internetanbindung da ca. 40 MByte heruntergeladen werden müssen.

Typische Aufgaben:

Ein neues Installationspaket herstellen

Das Zeichen '#' steht für Kommandos die als Administrator (root) durchgeführt werden müssen, '$' für einen normalen Benutzer.
  1. Notwendige Pakete auf dem Debian GNU/Linux 3.1 installieren:
    # apt-get install mingw32 nsis stow unzip texinfo imagemagick
    # apt-get install tetex-bin gs-common hyperlatex
  2. Die Quellen anonym (also ohne Schreibrechte) holen:
    $ svn checkout https://svn.wald.intevation.org/gpg4win/trunk/
    oder das Quelltextpaket gpg4win-n.n.n.tar.gz herunterladen, auspacken und in das Verzeichnis gpg4win-n.n.n wechseln. Wir empfehlen, mit der SVN version zu arbeiten wenn Sie mehr als nur ein Modul aktualisieren wollen.
  3. Alle notwendigen Gpg4win-Module aus dem Internet herunterladen:
    $ cd packages
    $ sh download.sh
    (dauert nun eine Weile, besonders beim ersten mal)
    $ cd ..
  4. Falls Sie mit der SVN-Version arbeiten:
    $ AUTOMAKE_SUFFIX=-1.9 ./autogen.sh
    $ ./configure --enable-maintainer-mode --host=i586-mingw32msvc
    ansonsten:
    $ ./configure --host=i586-mingw32msvc
  5. Nun das Gpg4win Installationpaket bauen:
    $ make

Das war es schon. Das fertige Installationspaket liegt unter:
src/gpg4win-n.n.n.exe
Das zugehörige Quelltextpaket (mit den Quelltexten sämtlicher Module, sehr gross!) unter:
src/gpg4win-src-n.n.n.exe

Ein einzelnes Modul für Gpg4win aktualisieren

Hierfür sollte man schon einmal ein Installationspaket wie oben beschrieben hergestellt haben. Im Folgenden nehmen wir an, sie möchten das Modul gnupg aktualisieren.
  1. Zuerst ist die alte Version zu löschen:
    $ cd packages
    $ rm gnupg-*
  2. Danach laden Sie die gewünschte Version herunter; z.B:
    $ wget ftp://ftp.gnupg.org/gnupg/gnupg-1.4.3.tar.bz2
    $ wget ftp://ftp.gnupg.org/gnupg/gnupg-1.4.3.tar.bz2.sig
    $ gpg --verify gnupg-1.4.3.tar.bz2.sig
    Nur wenn das letzte Kommando eine gültige Signatur anzeigt, dürfen Sie fortfahren. Weitere Erklärungen finden Sie auf GnuPG Webseite. Falls das Modul keine Signatur bereitstellt, sollten Sie sich auf eine andere Art der Authentizität des Moduls vergewissern.
  3. Bauen Sie eine neuen Installer:
    $ cd ..
    $ make clean
    $ ./configure --host=i586-mingw32msvc
    $ make

Achtung: Sie dürfen das Skript download.sh jetzt nicht mehr aufrufen, da es die aktuelle Standardversion des Moduls wieder installieren würde. Für eine dauerhafte Aktivierung der neuen Modul-Version des offiziellen Gpg4win Installationspaketes sind folgende Schritte zu erledigen.

Voraussetzung dabei ist, dass man Schreibrechten auf das SVN Verzeichnis besitzt (also ein Benutzerkonto auf wald.intevation.de mit Entwickler-Status für Gpg4win).

  1. Anpassen der Datei
    packages.current
    für die neue Modulversion (lesen Sie für die Syntax den Kopf dieser Datei) und laden Sie sie in das Subversion repository hoch:
    $ svn commit packages.current
  2. Erstellen Sie eine Signatur für diese Datei:
    $ gpg -sb packages.current
  3. Falls Sie bisher noch nie eine Aktualisierung der Paketliste autorisiert haben, müssen Sie zunächst Ihren PGP-Schlüssel an den Schlüsselbund
    packages.keys
    anhängen:
    $ gpg --export --armor YOUR-KEY-ID > gpg_pub_key.asc
    $ gpg --no-default-keyring --keyring ./packages.keys --import gpg_pub_key.asc
    Eine Liste der bisher eingetragenen Schlüssel erhalten Sie so:
    $ gpg packages.keys
  4. Laden Sie die beiden Dateien auf die Website von Gpg4win hoch:
    $ make update

Ein neues Modul in Gpg4win einbauen

Hierfür sollte man schon einmal ein Installationspaket wie oben beschrieben hergestellt haben und dabei die Version aus SVN benutzt haben.
  1. Für Ihr neues Modul 'MYMOD' erstellen Sie zunächst Konstanten in der Datei include/config.nsi.in indem Sie folgende drei Zeilen hinzufügen:
    @HAVE_PKG_MYMOD@
    !define gpg4win_pkg_mymod @gpg4win_pkg_mymod@
    !define gpg4win_pkg_mymod_version @gpg4win_pkg_mymod_version@
    Sie finden in der Datei genügend Beispiele, z.B. 'HAVE_PKG_WINPT'.
  2. Das NSIS Installations-Skript
    src/inst-mymod.nsi
    schreiben. Im selben Verzeichnis liegen viele Beispiele an denen man sich orientieren kann.
  3. Das NSIS Deinstallations-Skript
    src/uninst-mymod.nsi
    schreiben. Im selben Verzeichnis liegen viele Beispiele an denen man sich orientieren kann.
  4. Das NSIS Haupt-Skript
    src/inst-sections.nsi
    um MYMOD erweitern. Orientieren Sie sich einfach an den schon existierenden Einträgen und den Hilfe-Kommentaren.
  5. Nun tragen Sie in die Datei
    configure.ac
    Vorschriften zur Integration in den Bauprozess ein. Dafür können Sie die Makros aus der Datei
    m4/gpg4win.m4
    verwenden. Durch die bereits integrierten Module sind bereits zahlreiche Beispiele gegeben. Hauptsächlich muss unterschieden werden ob das Modul Cross-Compiliert oder als einfaches bereits andersweitig für Windows kompiliertes Binärobjekt integriert werden soll.
  6. Jetzt noch die Datei
    packages/packages.current
    wie weiter oben beschrieben aktualisieren.
  7. Gpg4win muss für das neue Modul erneut konfiguriert werden:
    $ AUTOMAKE_SUFFIX=-1.9 ./autogen.sh
    $ ./configure --enable-maintainer-mode --host=i586-mingw32msvc
  8. Der letzte Schritt ist der Bau des Installationpaketes:
    $ make

Das fertige Installationspaket liegt unter:
src/gpg4win-n.n.n.exe
Das zugehörige Quelltextpaket (mit den Quelltexten sämtlicher Module, sehr gross!) unter:
src/gpg4win-src-n.n.n.exe