[Eisfair] Spiegelserver Einrichtung im Heimnetz
Ansgar Püster
ansgar.puester at netcologne.de
Mi Mär 16 15:53:08 CET 2016
Hallo,
um deine Wünsche zu realisieren müsste man schon ein
umfangreicheres Skript erstellen.
Offen:
- Wie findet man die Pakete, die zur letzten
InstallationsCD "passen". Was ist "passen?"
- Zu ausgewählten Paketen müsste man die
require-package und require-lib Einträge der
.info-Dateien analysieren und dann natürlich die
so gefundenen Pakete ...
- Bei Updates müsste man zu jedem Paket schauen,
ob dazu eine neuere Version existiert
In Summe wären alle eis-list*.txt zu analysieren
und natürlich die index.txt.
Nach meiner Erfahrung, und ich habe früher ein recht
komplexes Spiegel-Skript benutzt und betreut, wäre das
doch ein nicht unerheblicher Aufwand.
Ich gehe inzwischen nach der "Brutal-Methode" vor.
1.) Skript: Erstellen Spiegel (mk_mirror.sh)
#
# Packages at http-server
#
HTTPDIR="http://download.eisfair.org/pack-eis/download/"
CUTDIRS=2
# Local Directory
LOCDIR="hier muss dein lokales Zielverzeichnis stehen"
# Protocol
DATE=$(date +%Y%m%d-%H%M%S)
PROT=Prot.$0.$DATE
# Get-eis-files
wget -N \
-r \
--force-directories \
-nH \
-P $LOCDIR \
--cut-dirs=$CUTDIRS \
-l 2 \
-R 'html,gif,index.html*' \
$HTTPDIR \
> $PROT 2>&1
cd $LOCDIR
# adjust directory and file modes
# handle files with spaces!
find . -type f -printf '"%p"\n' | xargs chmod 644
find . -type d -printf '"%p"\n' | xargs chmod 755
1.) Skript: Spiegel für lokale Nutzung aufbereiten (cv_mirror.sh)
#
# Packages at http-server
#
LOCDIR="hier muss dein lokales Zielverzeichnis stehen"
HTTP_PACKEIS="http://www.pack-eis.de"
HTTP_LOCAL="Hier muss die http-Adresse deines lokalen Spiegels stehen"
find $LOCDIR -name '*.txt' -print | while read FNAME
do
echo "FNAME=$FNAME"
# save file
if [ ! -f ${FNAME}.ori ]; then
cp -p $FNAME ${FNAME}.ori
fi
# convert index entries
cp -p $FNAME ${FNAME}.tmp
sed "s|^#<index> $HTTP_PACKEIS|#<index> $HTTP_LOCAL|" < ${FNAME}.tmp
> $FNAME
# convert pack eis entries
cp -p $FNAME ${FNAME}.tmp
sed "s|^#<info \([^>]*\)> $HTTP_PACKEIS/dl.php?l=\([0-9]*\)|#<info
\1> $HTTP_LOCAL/\2|" < ${FNAME}.tmp > $FNAME
rm -f ${FNAME}.tmp
done
find $LOCDIR -name 'index.txt' -print | while read FNAME
do
echo "FNAME=$FNAME"
# save file
if [ ! -f ${FNAME}.ori ]; then
cp -p $FNAME ${FNAME}.ori
fi
# convert index file
cp -p $FNAME ${FNAME}.tmp
sed "s|^\(.*\)$HTTP_PACKEIS/dl.php?l=\([0-9]*\)|\1$HTTP_LOCAL/\2|" <
${FNAME}.tmp > $FNAME
rm -f ${FNAME}.tmp
done
Achtung einige Zeilen (sed ...) sind in der Mail umgebrochen.
Beim ersten Aufruf wird in der Tat das komplette Quellverzeichnis
gespiegel. Das sind ca. 3-4 GByte. Bei Folgeaufrufen werden nur
noch die neuen/geänderten Dateien gespiegelt.
Ja es sind natürlich auch "überflüssige" Dateien dabei.
Das ist aber bei mir so jahrelang erfolgreich gelaufen.
So ein Spiegel ermöglicht es den Standard-Eisfair-1 Skripten
alle Abhängigkeiten etc. herauszufinden und die Pakete sauber
zu installieren. Neue Pakete erscheinen so, wie man es bei
direkter Nutzung von Pack-Eis gewohnt ist.
Gruß,
Ansgar
Am 16.03.2016 um 10:33 schrieb Andreas Schmied:
> Hallo zusammen,
>
> wg 'SchneckenDSL' und häufigen Testinstallationen würde ich mir gerne
> einen Spiegelserver im Heimnetz einrichten. In der Docu ist das ja im
> Anhang kurz angerissen, ich kann mir aber nicht vorstellen, dass ich den
> kompletten Verzeichnisbaum unter:
> http://download.eisfair.org/packages/
> herunterladen muss. Das geht ja bei 2004 los.
>
> Ich vermute einmal, dass ich die ganzen .txt Dateien unter
> http://download.eisfair.org/packages/
> brauche, ist ja nicht viel.
>
> Wie aber muss ich aber vorgehen, dass ich
> 1. nur Pakete herunterlade, die zur letzten InstallationsCD passen und
> Updates dazu?
> 2. nur Pakete, die zur ausgewählten Software gehören, also z.B. Apache
> und die abhängigen Pakete hierzu?
> 3. Wie muss ich vorgehen wenn Updates da sind.
>
> Ich hoffe ich habe mich einigermaßen verständlich ausgedrückt.
> Leider habe ich keine Ahnung, wie der Vorgang abläuft, wie welche Pakete
> bei der Installation heraus gefiltert werden.
> Gibt es dazu etwas schriftliches zum Lesen? Ich würde das gerne verstehen.
>
> Danke!
>
Mehr Informationen über die Mailingliste Eisfair