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.
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:
# This file was automatically generated by eisman # Last synchronization: 2023-11-25 21:39:24 7zip 3.4.0 stable http://eis.local.net/packeismirror/eisfair-1/7zip/3.4.0/7zip.tar.bz2.info eisfair-1 [...]
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.:
CRON_x_NAME='Synchronize Packeis 64bit' CRON_x_ACTIVE='yes' CRON_x_TIMES='0 1 * * *' CRON_x_USER='root' CRON_x_COMMAND='/pfad/zum/miror/script'
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.:
URL_x_NAME='Mein 64bit eisfair-Mirror' URL_x_PATH='http://eis.local.net/packeismirror/eisfair-64/index.txt' URL_x_SEARCH='yes' URL_x_PRIORITY='normal' URL_x_SECTION='no'
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.