====== 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.