Inhaltsverzeichnis

lokales Repository

Um Debian-Pakete zu installieren, die sich in keinem Repository befinden, kann man ein einfaches eigenes Repository verwenden. Sofern man keine Ansprüche hat, funktioniert das so wunderbar.

lokales Repository erstellen

Zunächst erstellt man ein Verzeichnis, in dem man das Repository anlegen möchte. Z.B. /srv/packages.

Dort legt man alle .deb-Pakete ab, die das Repository enthalten soll.

Anschließend erstellt man mit folgendem Kommando die Indexdatei Packages.gz. Exakt diesen Namen verwenden! Dieses Kommando muss im Repository-Verzeichnis (/srv/packages/) ausgeführt werden.

dpkg-scanpackages . /dev/null | gzip -c >  Packages.gz

Falls das Kommando dpkg-scanpackages nicht vorhanden ist, muss das Paket dpkg-dev installiert werden.

Wenn man weitere .deb-Pakete hinzufügt und/oder alte entfernt, ist dieses Kommando erneut auszuführen. Hiermit ist bereits das supersimpel-Repository erstellt.

lokales Repository einbinden

Das eigene Repository muss natürlich noch eingebunden werden, damit es verwendet werden kann. Wenn das Repository so erstellt wurde, wie oben beschrieben, muss folgende Zeile in /etc/apt/sources.list hinzugefügt werden:

deb file:/srv/packages	./

Abschließend ein apt update, um die Paketlisten zu aktualisieren. Dann können die Pakete ganz normal mit apt installiert werden.

Eigenes zentrales Repository

Dies ist nützlich, wenn man das supersimpel-Repository auf mehreren Rechnern verwenden möchte. Man kann dann ein Repository z.B. über einen kleinen lokalen Server oder NAS zur Verfügung stellen.

Zunächst benötigt man einen funktionierenden Webserver. Ich verwende hierfür Apache.

Im Webroot (bei Debian standardmäßig /var/www/html/) erstelle ich ein Verzeichnis packages für die Debianpakete.

In dieses Verzeichnis (jetzt /var/www/html/packages/) speichere ich nun die .deb-Pakete, die das Repository enthalten soll.

Anschließend erstelle ich mit folgendem Kommando die Indexdatei Packages.gz. Exakt diesen Namen verwenden! Dieses Kommando muss im Repository-Verzeichnis (/var/www/html/packages/) ausgeführt werden.

dpkg-scanpackages . /dev/null | gzip -c >  Packages.gz

Falls das Kommando dpkg-scanpackages nicht vorhanden ist, muss das Paket dpkg-dev installiert werden.

Wenn man weitere .deb-Pakete hinzufügt und/oder alte entfernt, ist dieses Kommando erneut auszuführen. Hiermit ist bereits das supersimpel-Repository erstellt.

Repository einbinden

Das eigene Repository muss natürlich noch eingebunden werden, damit es verwendet werden kann. Wenn das Repository so erstellt wurde, wie oben beschrieben, muss folgende Zeile in /etc/apt/sources.list hinzugefügt werden:

deb http://IP_VOM_SERVER/packages	./

IP_VOM_SERVER durch die IP oder den Namen vom Webserver ersetzen, auf dem das Repository eingerichtet wurde. (localhost wenn es auf dem gleichen Rechner läuft)

Abschließend ein apt update, um die Paketlisten zu aktualisieren. Dann können die Pakete ganz normal mit apt installiert werden.

Repository signieren

Da neuere APT-Versionen sich weigern, Pakete aus unsignierten Repositorys herunterzuladen, sollte auch das eigene Repository signiert werden. Dadurch kann man weiterhin problemlos eigene Pakete installieren.

GPG vorbereiten

Das Repository wird mit einem GPG-Schlüssel signiert. Dazu muss zunächst ein Schlüsselpaar erzeugt werden. Dazu führt man folgendes Kommando aus und folgt den Anweisungen:

gpg --full-gen-key

Alle Schlüssel auflisten

gpg --list-secret-keys

Öffentlichen Schlüssel exportieren (Mailadresse durch die bei der Schlüsselerzeugung angegebene Mailadresse ersetzen):

gpg --output eigene_packages.gpg --export mailadresse@provider.com

Die erzeugte Datei eigene_packages.gpg enthält den öffentlichen Schlüssel des Repositorys und muss auf allen Rechnern, auf denen es eingebunden werden soll, installiert werden.

signiertes Repository erzeugen

Hierfür müssen folgende Kommandos ausgeführt werden, die sich wunderbar in ein kleines Bash-Script packen lassen. Dieses muss nach jeder Änderung des Repositorys ausgeführt werden! Ggf. den Pfad anpassen (/var/www/html/packages)

#!/bin/bash
rm /var/www/html/packages/Release.gpg
rm /var/www/html/packages/InRelease
cd /var/www/html/packages && dpkg-scanpackages . /dev/null > /var/www/html/packages/Packages && cd -
apt-ftparchive release /var/www/html/packages > /var/www/html/packages/Release
gpg --clearsign -o /var/www/html/packages/InRelease /var/www/html/packages/Release
gpg -abs -o /var/www/html/packages/Release.gpg /var/www/html/packages/Release

Schlüssel auf Clients installieren

apt-key add eigene_packages.pgp

Abschließend kann das Repository wie gewohnt verwendet werden.