[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