Einrichten eines eisfair-Spiegelservers
Grundsätzlich kann auf einem beliebigen Webserver ein Spiegelserver für den offiziellen eisfair-Paketserver Packeis eingerichtet werden. Dieser Artikel beschreibt dessen Einrichtung auf einem eisfair-Seerver, da dessen Paketmanager eisman ein Kommando zur Synchronisierung mit dem Datenbestand eines anderen Paketservers enthält:
# eisman mirror --help
Create / synchronize a local package mirror
usage:
eisman mirror [OPTIONS] /path/to/package/mirror
options:
--help show this help screen
--url <url> package index download url
--system <system> force eisfair-1 oder eisfair-64
--relocate <url> relocate package urls to 'url'
--quiet don't show additional text
--no-progress don't show progress information
--keep keep old files (even if no longer listed)
if not specified, old files are removed when
not listed for more than 90 days.
Mit der Option --url kann die Adresse des Paketservers angegeben werden, den man spiegeln möchte und ist auf https://www.pack-eis.de/index.txt voreingestellt. Möchte man mehrere Paketserver spiegeln, ist für jeden ein eigenes lokales Zielverzeichnis vorzusehen.
Die --system Option erzwingt explizit die Spiegelung der eisfair-1 oder eisfair-64-Pakete, jeweils immer unter Einschluss der auf beiden Systemtypen nutzbaren eisfair-noarch-Pakete. Ohne Angabe dieses Parameters wird automatisch das eisfair-System gespiegelt, auf dem das eisman-Kommando ausgeführt wird.
Neben den eigentlichen Paketdateien, wird bei der Spiegelung auch die Indexdatei downgeloadet und die Pfade zu den Paketen auf das angegebene lokale Zielverzeichnis gesetzt:
# eisman mirror --system eisfair-1 /data/packeismirror/eisfair-1
#
# ergibt dann folgende lokale Indexdatei:
#
# This file was automatically generated by eisman
# Last synchronization: 2023-11-25 21:39:24
7zip 3.4.0 stable /data/packeismirror/eisfair-1/7zip/3.4.0/7zip.tar.bz2.info eisfair-1
[...]
Die Verwendung der Option --relocate erlaubt eine Umschreibung des Pfades, was wir im folgenden nutzen werden.
Um nun den Spiegelserver aufzubauen, benötigen wir zudem einen Webserver, z. B. ein installiertes und konfiguriertes Apache2-Paket. Zudem legen wir folgende Verzeichnisse im Docroot des Apachen als Verzeichnisse für die Spiegelung der eisfair-Pakete an:
eisfair-1: /var/www/htdocs/packeismirror/eisfair-1
eisfair-64: /var/www/htdocs/packeismirror/eisfair-64
Das folgende Skript synchronisiert nun Packeis mit den lokalen Datenverzeichnissen unter Verwendung der eben erwähnten relocate-Option, um in der lokalen Indexdatei die korrekten http-URLs zu den Paketen zu setzen:
#!/bin/sh
echo "Mirroring eisfair-1"
eisman mirror --relocate http://eis.local.net/packeismirror/eisfair-1 --system eisfair-1 /var/www/htdocs/packeismirror/eisfair-1
echo "Mirroring eisfair-64"
eisman mirror --relocate http://eis.local.net/packeismirror/eisfair-64 --system eisfair-64 /var/www/htdocs/packeismirror/eisfair-64
Die lokale Indexdatei erhält dadurch folgenden Inhalt:
Statt eis.local.net kann auch die IP des Server, der F(ull)Q(ualified)D(omain)N(ame), ein Dyn-DNS-Name oder localhost angegeben werden, wobei bei der Angabe localhost die Nutzung des Spiegelservers als Paketquelle nur für das System selbst möglich ist. Mittels cron-Job kann die Synchroniserung automatisiert werden, z. B.:
Um diesen Spiegelserver nun für ein eisfair-System als Paketserver nutzen zu können, ist dieser, wie andere Paketquellen auch, in der Paketkonfiguration als Quelle zu definieren, z. B.:
Die Standard-Paketquelle Packeis sollte auf die PRIORITY normal oder low gestellt werden, damit sie dem eigenen Spiegelserver nicht vorgezogen wird. Zudem ist nun noch mit dem Befehl “eisman update” die lokale Paketdatenbank neu aufzubauen, damit die Download-URL nun sofort auf den eigenen Spiegelserver verweisen:
Soll ein “eisman search <package>” nur noch Treffer des lokalen Spiegelservers anzeigen, ist für die originale Paketquelle SEARCH auf no zu setzen.
Hinweis: eisman löscht bei einem Synchronisierungslauf Pakete, die nicht mehr in der Indexdatei aufgeführt sind, nicht sofort auch vom lokalen Spiegel sondern nach 90 Tagen. Mit der Option --keep kann diese Bereinigung auch komplett unterbunden werden, so dass ein dauerhaftes Paketarchiv aufbauen kann.