Ich setze vorraus, dass der Leser einen Webserver einrichten, konfigurieren sowie einen GPG schlüssel erstellen und nutzen kann.
Vorarbeit
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!