Da aber mein lokales Debian Repository dauerhaft erreichbar sein soll, habe ich mir eine alternative überlegt und bin schlussendlich auf die FritzBox (funktioniert aber auch mit jedem anderen Router der USB und FTP Unterstützung hat) gekommen. Da diese ja eh 24/7/365 online ist und nie abgeschaltet wird, bot sich das Szenario als perfekt an. Auf der Box (6490 Cable) läuft jedoch kein Freetz oder dergleichen, so griff ich zu einer etwas anderen Methode.
Ich richtete auf dem Server ein lokales Debian Repository mit reprepro ein. Entsprechende Tutorials zu reprepro gibt es hier, hier und hier.
Die Verzeichnisse "dists" und "pool" sollten klar sein, unter "config" werden die reprepro spezifischen config Dateien abgelegt. Einmal die "options":
verbose basedir /srv/repository outdir /srv/repository/public dbdir /srv/repository/database logdir /srv/repository/log morguedir /srv/repository/deleted"basedir", "outdir", "logdir" sowie "dbdir" sollten bekannt sein. Zusätzlich habe ich noch "morguedir" angegeben, aus dem Repository entfernte Pakete werden dann nach "morguedir" verschoben anstatt direkt gelöscht. Die config Datei "distributions":
Origin: LocalRepositorySignWith sollte die ID eures Schlüssels haben, den ihr benötigt um euer Repository zu signieren. Wie man auf dem Bild erkennt, habe ich den Öffentlichen Teil des Schlüssels ebenfalls im "config" Verzeichnis. Die Dateien "incoming" und "expect_reprepro.ex" sind nur Überbleibsel aus vergangenen Experimenten, also zu vernachlässigen.Label: LocalRepository Suite: stable Codename: stretch Architectures: amd64 Components: main non-free contrib Description: LocalRepository Tracking: minimal SignWith: KeyID
Um dann ein Debian Paket hinzuzufügen, führe ich folgenden Befehl aus:
reprepro --confdir "/srv/repository/config" includedeb stretch "/Pfad/Zum/Debian/Paket"Und um es wieder zu entfernen:
reprepro --confdir "/srv/repository/config" remove stretch "Paketname"Anschließend synchronisiert das Programm lftp das lokale Repository über FTP mit dem USB Stick am Router.
lftp -c "set ftp:ssl-allow no set ftp:list-options -a; open 'ftp://BENUTZERNAME:PASSWORT@FTP-ADRESSE'; glob -f rm -r ./dists; lcd /srv/repository/public; mirror --reverse --delete --delete-first --verbose; bye" > "/srv/repository/log/last_sync.FTP.log" 2>&1Zu guter letzt, muss nur noch der frei gegebene USB Stick des Routers auf den Clients als Paketarchiv eingebunden werden. Die Datei "/etc/apt/sources.list.d/ownrepo.list
deb ftp://BENUTZERNAME:PASSWORT@IP-ADRESSE stretch main contrib non-free
Automatisiert sieht das nun wie folgt aus: Sobald ein Debian Paket im "incoming" Verzeichnis kopiert wird, fügt reprepro das Paket dem Repository zu. Anschließend synchronisiert lftp das lokale Paketarchiv mit dem USB Stick an dem Router. Sobald dann die Clients die Paketliste aktualisieren, ist das neu eingefügte Paket auf allen Clients verfügbar.
Dadurch das der Server auch regelmäßig nach aktuellen Kernel Versionen auf Kernel.org schaut, sofern er dann auch online ist, diese ggf. herunter lädt, anschließend kompiliert und dann im "incoming" Ordner schiebt, sind diese Pakete jederzeit lokal von meiner FritzBox abrufbar für alle Rechner im Netzwerk. Auch habe ich mit dieser Methode dann nicht das Problem, dass apt meckert weil das Repository nicht erreichbar ist, wenn der Server mal nicht läuft.
Keine Kommentare:
Kommentar veröffentlichen