Ich setze vorraus, dass der Leser einen Webserver einrichten, konfigurieren sowie einen GPG schlüssel erstellen und nutzen kann.

Vorarbeit

GPG Schlüssel

Wir brauchen einen armored gpg key den wir später verbreiten.

gpg --armor --export sluh@axxeo.de --output /home/sluh/sluh@axxeo.de.gpg.key

Installing reprepro

apt-get install reprepro

Webserver

Zuerst brauchen wir einen laufenden Apache2 oder Nginx.

Im Beispiel verwende ich einen Apache2.

Jetzt erstellt man die nötigen Ordner

mkdir -p /var/www/repo/apt/debian/conf mkdir -p /var/www/repo/apt/debian/incoming

Wichtig ist, dass in der Konfiguration für den Webserver sichergestellt wird, dass der User keinen zugriff auf die /db/, /conf/ und /incoming/ ordner in dem repository hat.


Konfiguration

Als nächstes erstellen wir die Konfiguration für das Repository:

vim /var/www/repo/apt/debian/conf/distributions

Diese sollte folgendes beinhalten:

Origin: Repo name Label: apt repository Suite: unstable Codename: wheezy Architectures: i386 amd64 source Components: main non-free contrib Description: sluh's private apt repo SignWith: yes Pull: wheezy

Für Suite: kann man zb auch stable oder testing einsetzen.

Codename: steht für den Debian codename.

SignWith: yes/no sagt aus ob die Pakete signiert werden sollen.

Zum repository root navigieren:

cd /var/www/repo/apt/debian

 

Ein Paket in das Repository laden

Wir müssen zunächst erst einmal ein Paket in das Repository laden damit Reprepro die nötigen Ordner anlegt.

reprepro --ask-passphrase -Vb . include wheezy /var/www/packages/amd64/gitmaintainer_0.5.5_amd64.changes

–ask-passphrase = Es wird zum Signieren nach der Passphrase für den zu verwendenden GPG Key gefragt.

-Vb . = Verbose + base directory . (also dieser Ordner)

include wheezy *.changes = es handelt sich um ein wheezy Paket und der Pfad zu der .changes Datei.

Folgender Output ist zu erwarten:

Created directory "./db" Created directory "./pool" Created directory "./pool/main" Created directory "./pool/main/g" Created directory "./pool/main/g/gitmaintainer" Exporting indices... Created directory "./dists" Created directory "./dists/wheezy" Created directory "./dists/wheezy/main" Created directory "./dists/wheezy/main/binary-i386" Created directory "./dists/wheezy/main/binary-amd64" Created directory "./dists/wheezy/main/source" Created directory "./dists/wheezy/non-free" Created directory "./dists/wheezy/non-free/binary-i386" Created directory "./dists/wheezy/non-free/binary-amd64" Created directory "./dists/wheezy/non-free/source" Created directory "./dists/wheezy/contrib" Created directory "./dists/wheezy/contrib/binary-i386" Created directory "./dists/wheezy/contrib/binary-amd64" Created directory "./dists/wheezy/contrib/source" 484C305FBA8FC7E3 Steffen Luh (personal apt repo) <sluh@axxeo.de> needs a passphrase Please enter passphrase: Successfully created './dists/wheezy/Release.gpg.new' 484C305FBA8FC7E3 Steffen Luh (personal apt repo) <sluh@axxeo.de> needs a passphrase Please enter passphrase: Successfully created './dists/wheezy/InRelease.new'

Wie wir sehen legt reprepro alle weiteren benötigten Ordner selbst an.

Falls man ein signiertes Paket importieren möchte, kann es zu Fehlermeldungen kommen wenn man den Publickey der Paketsignatur nicht kennt


Verbreitung

 

Den GPG schlüssel kopieren wir in ein Verzeichnis im Apache2/Nginx z.B:

cp /home/sluh/sluh@axxeo.gpg.key /var/www/repo/apt/debian/

Jetzt können wir den Key auf unserer remote Maschiene wie folgt eintragen:

wget -O - dhc-sluh/repo/apt/debian/sluh@axxeo.gpg.key | sudo apt-key add -

Nun müssen wir nur noch die sources.list anpassen, ein apt-get update ausführen und los geht der Spaß mit dem eigenen Apt Repository!

Creating apt repository