====== 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 (disabled) ===== 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@:~$ 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 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 [[http://ekaia.org/blog/2009/05/10/creating-new-gpgkey/|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@:~$ gpg --search bjp@informatik.uni-kiel.de gpg: searching for "bjp@informatik.uni-kiel.de" from hkp server keys.gnupg.net (1) Bjoern Peemoeller 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 " imported gpg: Total number processed: 1 gpg: imported: 1 repos-admin@:~$ ===== Paket-Upload ===== Vor dem Paketupload sollte man sich mit dem [[admin:debian:packaging|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 [[admin:debian:packaging|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 (disabled) ===== 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@:~$ REPREPRO_BASE_DIR=/srv/sites/ps.informatik.uni-kiel.de/packages/debian reprepro pull wheezy