Debian Paket-Archiv der Arbeitsgruppe

Auf dem Webserver der Abteilung befindet sich im Ordner /debian ein APT-Paketrepository für Pakete, die abteilungsintern bereit gestellt werden: http://packages.ps.informatik.uni-kiel.de/debian

Repository-Software

Das APT-Repository der AG wird mit dem Tool reprepro gepflegt und verwaltet. Das Tool ist im Netz gut dokumentiert und besitzt eine ausführliche man Page.

Eigener Benutzer für Änderungen am Repository

Der auf dem Webserver lokal angelegt Benutzer repos-admin hat Schreibzugriff auf alle Bereiche des Paket-Repository's. Jede Person in der AG, die Pakete in das Archiv hochladen/einstellen will, muss in der Datei ~repos-admin/.ssh/authorized_keys seinen öffentlichen SSH-Schlüssel hinterlegt haben.

Vorsicht: Ein Benutzer der sich als repos-admin auf dem Webserver anmelden kann, hat dadurch automatisch Zugriff auf den GnuPG-Schlüssel des Archivs. Den Kreis der Benutzer/innen, die Pakete hochladen dürfen, sind mit bedacht auszuwählen.

Schlüsselbund des Paketarchivs

Nachdem ein Paket ins Archiv hochgeladen wurde, wird die Paketliste des Archivs aktualisiert. Die Paketliste des Archivs wird hierbei mit einem GnuPG-Schlüssel signiert. Die Fingerprint-Information des Schlüssels lautet:

repos-admin@<webserver>:~$ gpg --fingerprint 79376A62
pub   4096R/79376A62 2012-07-23
      Key fingerprint = 1D06 ECB4 B040 4737 F38E  9C77 C270 DAF7 7937 6A62
uid                  PS-IfI Packaging <ps-admin@informatik.uni-kiel.de>
sub   4096R/8F403E38 2012-07-23

Der öffentliche Schlüsselanteil ist auch im Paket psifi-keyring enthalten. Eine Installation des Pakets registriert den Archivschlüssel in der APT Software des Client Systems, so dass die Vertraulichkeit des PS-IfI Paketarchivs dem Client bekannt gemacht werden kann.

Entwickler-Schlüssel müssen dem Archiv bekannt sein

Jeder Paketentwickler muss sein Pakete signieren (s.u.). Beim Hochladen und Überführen eines Pakets ins Paketarchiv wird die GnuPG-Signatur des Pakets überprüft und im Falle einer nicht-bekannten Signatur gewarnt.

Wer noch keinen GnuPG-Schlüssel besitzt oder diesen noch nicht auf die im Netz verteilt-verfügbaren Schlüsselserver exportiert hat, möge sich diesen Blogeintrag von Ana Guerrero durchlesen und die darin beschriebenen Schritte befolgen.

Nachdem man dann seinen öffentlichen Schlüssel ins Netz gestellt hat (d.h. auch einen Keyserver hochgeladen hat), kann man ihn auf dem Webserver (unter der Uid repos-admin) importieren:

repos-admin@<webserver>:~$ gpg --search bjp@informatik.uni-kiel.de
gpg: searching for "bjp@informatik.uni-kiel.de" from hkp server keys.gnupg.net
(1)     Bjoern Peemoeller <bjp@informatik.uni-kiel.de>
          1024 bit DSA key B9F4AF3B, created: 2010-10-01
Keys 1-1 of 1 for "bjp@informatik.uni-kiel.de".  Enter number(s), N)ext, or Q)uit > 1
gpg: requesting key B9F4AF3B from hkp server keys.gnupg.net
gpg: key B9F4AF3B: public key "Bjoern Peemoeller <bjp@informatik.uni-kiel.de>" imported
gpg: Total number processed: 1
gpg:               imported: 1
repos-admin@<webserver>:~$

Paket-Upload

Vor dem Paketupload sollte man sich mit dem Paketbau vertraut gemacht haben.

Für den Paket-Upload ins Repository können die Tools dput oder dupload verwendet werden. Empfohlen wird dupload, eine Beispielkonfiguration (~/.dupload.conf) sieht so aus:

package config;

###
### PS-IfI Archive
###

$cfg{"psifi-debian-production"} = {
        fqdn => "packages.ps.informatik.uni-kiel.de",
        login => "repos-admin",
        method => "scpb",
        incoming => "/srv/sites/ps.informatik.uni-kiel.de/packages/debian/incoming/production",
        queuedir => "/srv/sites/ps.informatik.uni-kiel.de/packages/debian/upload/production",
        dinstall_runs => 1,
};

$cfg{"psifi-debian-test"} = {
        fqdn => "packages.ps.informatik.uni-kiel.de",
        login => "repos-admin",
        method => "scpb",
        incoming => "/srv/sites/ps.informatik.uni-kiel.de/packages/debian/incoming/test",
        queuedir => "/srv/sites/ps.informatik.uni-kiel.de/packages/debian/upload/test",
        dinstall_runs => 1,
};

# [... weitere Upload Server ...]

1;

Pakete, die mit dupload ins APT-Repository der Arbeitsgruppe hochgeladen werden, müssen mit GnuPG signiert sein. Der Paketbau und das Signieren von .deb-Paketen wird auf einer anderen Seite in diesem Wiki erklärt.

Hochgeladen wird im Allgemeinen eine .changes Datei, die beim Debian-Paketbau als eine resultierende Datei erzeugt wird. Diese Datei (welche mit GnuPG signiert sein muss, s.o.) wird jetzt mit dem Befehl dupload ins Produktionsarchiv der AG hochgeladen:

myself@localmachine:~$ dupload -t psifi-debian-production <.changes-Datei>

Der Befehl

myself@localmachine:~$ dupload -t psifi-debian-test <.changes-Datei>

lädt das Paket stattdessen in das Test-Repository der AG hoch. Ist man sich bezüglich der Stabilität eines Paket nicht ganz sicher, sollte es zunächst in das Test-Repository hochgeladen werden.

Eingehende Paket im Archiv

Nach Upload eines Pakets wird es in das Paketarchiv überführt.

Dies geschieht über CRON Jobs :

# m h  dom mon dow   command
0,15,30,45 *  * * * REPREPRO_BASE_DIR=/srv/sites/ps.informatik.uni-kiel.de/packages/debian reprepro processincoming production 1>/dev/null
1,16,31,46 *  * * * REPREPRO_BASE_DIR=/srv/sites/ps.informatik.uni-kiel.de/packages/debian reprepro processincoming test 1>/dev/null

Um die CRON Jobs zu bearbeiten, muss man als Benutzer repos-admin auf dem Webserver den Befehl crontab -e ausführen.

Pakete vom Testarchiv ins Produktionsarchiv überführen

Pakete, die vorsichtshalber erst in eines der Testarchive (wheezy-test, wheezy-backports-test, …) hochgeladen wurden, müssen nicht neu gebaut werden, um Sie in das Produktionsarchiv zu bekommen.

Dieser Aufruf überführt ein Paket aus dem Testbereich des Paketarchivs in den Produktionsbereich (in diesem Beispiel für ein Paket der Version wheezy):

repos-admin@<webserver>:~$ REPREPRO_BASE_DIR=/srv/sites/ps.informatik.uni-kiel.de/packages/debian reprepro pull wheezy
/srv/dokuwiki/adminwiki/data/pages/admin/debian/archive.txt · Zuletzt geändert: 2019-07-08 11:35 von hbs
CC Attribution-Noncommercial-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0