In einem Testnetzwerk werden sehr viele Rechner mit dem Betriebssystem Linux eingesetzt. Dies wirkt sich bei den regelmäßigen Updates und Neuinstallationen der Maschinen sehr stark auf die geringe Bandbreite des Netzwerkanschlusses aus. Um andere Benutzer im Netzwerk weniger zu beeinträchtigen soll darum in regelmäßigen Abständen ein Abgleich der öffentlichen Updateserver (Repository) durchgeführt werden und die Updates und Installationsquellen lokal vorgehalten werden.
- Vorüberlegungen
Im Netzwerk wird auf den Rechnern überwiegen Debian in der Version 10 (Buster) und von der Architektur 64 Bit eingesetzt (amd64). Die einzelnen Rechner haben dabei neben bestimmten Standardpaketen durch den individuellen Einsatz bedingt diverse weitere Pakete installiert. Dadurch ist der Einsatz eines Proxys zwar möglich, aber weniger sinnvoll. Es soll darum in dieser Anleitung kein „Cache-Mirror“ sondern ein Teil-Mirror installiert werden. Dieser benötigt allerdings auch mehr Speicherplatz, welcher ausreichend vorhanden ist.
- Einrichtung
Zunächst wird eine Standardinstallation von Debian 10 ohne grafische Oberfläche durchgeführt, anschließend werden die folgenden Pakete installiert.
- netselect-apt Um den schnellsten Mirror zu finden.
- apache2 Ein Webserver, welcher später die Pakete via HTTP bereitstellt
- debmirror Dieses Paket stellt die Funktion zur Synchronisation mit den öffentlichen Repository bereit
Nach der Installation der Pakete werden zunächst mittels
1 | netselect-apt -t 5 -c germany -a amd64 -n stable |
die 5 schnellsten Spiegelserver ermittelt und der schnellste von ihnen im Betriebssystem in der sources.list automatisch als Paketquelle hinterlegt.
Danach wird im Verzeichnis des Webservers ( /var/www/html) ein neuer Pfad angelegt.
1 | mkdir -p /var/www/html/debian/buster/amd64 |
Der Parameter „-p“ sorgt dafür, dass übergeordnete Verzeichnisse, welche nicht existieren angelegt werden.
Man wechselt in das soeben erstellte Verzeichnis und prüft den benötigten Festplattenplatz (aktuell etwa 67GB)
1 | debmirror --dry-run --postcleanup --verbose --method=http -- host=mirror.united-gameserver.de --root=debian --dist=buster --arch=amd64 --section=main --nosource --no-check-gpg | grep "Files" |
anschließend startet man den Download mit:
1 | debmirror --postcleanup --verbose --method=http --host mirror.united-gameserver.de --root=debian --dist=buster --arch=amd64 --section=main --i18n --nosource --no-check-gpg --progress /var/www/html/debian/buster/amd64 |
Dies dauert je nach Internetverbindung eine Weile, nach Abschluss des Abgleichs mit dem öffentlichen Spiegelserver muss den Linux Clients im Netzwerk noch mitgeteilt werden, das diese zukünftig Updates von einer lokalen Adresse beziehen. Nachdem ersten Download erfolgen die Updates inkrementell, bei mir hat das erste Update mit einer 10Mbit Verbindung etwa 14 Stunden gedauert.
Damit man obigen debmirror Befehl nicht immer manuell in der Bash eingeben muss sollte man einen Cronjob dazu anlegen (crontab -e).
1 | * */6 * * * debmirror --postcleanup --verbose --method=http --host mirror.united-gameserver.de --root=debian --dist=buster --arch=amd64 --section=main --i18n --nosource --no-check-gpg --progress /var/www/html/debian/buster/amd64 > /var/www/html/Log.txt |
Dies prüft den öffentlichen Server alle 6 Stunden auf neue beziehungsweise aktualisierte Pakete und gleicht diese mit dem lokalen Server ab, bei jeder Ausführung wird ein Log im Wurzelverzeichnis des Webservers abgelegt.
- Einrichtung auf den Clients
Dazu editiert man die /etc/apt/sources.list
1 2 3 4 5 6 7 8 9 10 11 | # deb [trusted=yes] http://192.168.2.155/debian/buster/amd64 buster main deb http://ftp.uni-siegen.de/debian/debian-security/ buster/updates main deb-src http://ftp.uni-siegen.de/debian/debian-security/ buster/updates main # This system was installed using small removable media # (e.g. netinst, live or single CD). The matching "deb cdrom" # entries were disabled at the end of the installation process. # For information about how to configure apt package sources, # see the sources.list(5) manual. |
Da wir aktuell die Pakete, welche vom lokalen Mirror ausgeliefert werden nicht signieren, ist der Eintrag mit [trusted=yes] zu versehen, da es sonst zu Fehlermeldung beim ausführen von apt-get update kommt. Ferner ist anzumerken, dass ich für die Security-Pakete weiterhin auf einen öffentlichen-in meiner Nähe existierenden Server setze, damit Security-Updates immer direkt verfügbar sind.
Weitere Informationen:
https://www.debian.org/mirror/ftpmirror.de.html
https://www.debian.org/mirror/size
https://wiki.debianforum.de/Lokales_Repository
https://www.tobanet.de/dokuwiki/debian:debmirror