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.
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.
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.
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.
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.
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.
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.
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
apt-key add eigene_packages.pgp
Abschließend kann das Repository wie gewohnt verwendet werden.