Reposerver

Aus Arktur
Wechseln zu: Navigation, Suche

Ein Repositorium ist der Lagerplatz des jeweiligen Distributors für alle von ihm betreuten Software-Pakete.

Wenn viele Clients zu betreuen sind, dann ist es sinnvoll, das zugehörige Repositorium auf dem Server zu spiegeln.

Inhaltsverzeichnis


SuSE

Das Verfahren wurde von David Haigermoser in der OSS-Mailingliste beschrieben und anschliessend ein wenig verschlankt und verallgemeinert.

Server

Per Cronjob wird das Skript SuSE-update.sh aufgerufen, es aktualisiert im FTP-Bereich das Verzeichnis unterhalb von "pub/linux/suse".

Skript:

# !/bin/sh
# ehem.Skript "auto-update.sh"
# aktualisiert ein lokales SuSE-Repositorium
# David Haigermoser, Mailingliste OSS Mai 2011
# Helmut Hullen, Pfingsten 2011

Version=$1
test "$1" || Version=11.4

Quelle=ftp5.gwdg.de
YOU_DIR=/srv/ftp

case $Version in
  10.[2-3]|11.[0-2])
    UPDATEPATH=pub/linux/suse/opensuse/discontinued/update/$Version
    REPOPATH=pub/linux/suse/opensuse/discontinued/distribution/$Version/repo
    ;;
  11.[3-4])
    UPDATEPATH=pub/linux/suse/opensuse/update/$Version
    REPOPATH=pub/linux/suse/opensuse/distribution/$Version/repo
    ;;
    *)
    echo "Sorry - mit der Version kann ich nichts anfangen."
    exit 1
    ;;
 esac


for Job in $UPDATEPATH $REPOPATH 
  do
DESTINATIONPATH=$YOU_DIR"/"$Job
SOURCEPATH=$Quelle::${Job}/.
mkdir -p $DESTINATIONPATH
echo -e "Syncing patches from $SOURCEPATH \n"
rsync -auz --stats --delete --delete-excluded \
    --exclude "ppc/" \
    --exclude "ppc64/" \
    --exclude "x86_64/" \
    --exclude "debug/" \
    --exclude "src/" \
    --exclude "src-non-oss/" \
    --exclude "src-oss/" \
    $SOURCEPATH $DESTINATIONPATH
  chown -R a+r $DESTINATIONPATH
  logger -t patch-download-cronjob[$$] Updating of SuSE $Version from $SOURCEPATH finished.
  done

#
exit 0

# ----------------------------------

Cronjob:

crontab -e

und einen weiteren Job einfügen, z.B.

20 15 * * 5  /root/bin/SuSE-update.sh 11.4

wenn das obige Skript unter diesem Namen im Verzeichnis "/root/bin" liegt. Dann wird freitags um 15:20 updgedatet.


Weil beim Skript als Quelle der GWDG-Server genommen wurde, wurde auch dessen Pfadangabe übernommen. Bei "opensuse.org" werden die älteren ("discontinued") Versionen nicht mehr angeboten.

Client

Bei jedem Client wird mit dem Skript "zypper-ar" das Repositorium eingebunden; das Ergebnis kann im Verzeichnis "/etc/zypp/repos.d" und per "yast" im Menupunkt "Software" betrachtet werden.

Skript:

#! /bin/bash
# ergaenzt SuSE-Repo
# Helmut Hullen

Version=11.4
Quelle=Arktur
UPDATEPATH=pub/linux/suse/opensuse/update/$Version
REPOPATH=pub/linux/suse/opensuse/distribution/$Version/repo

zypper ar ftp://${Quelle}/${REPOPATH}/non-oss ${Quelle}-${Version}-non-oss
zypper ar ftp://${Quelle}/${REPOPATH}/oss ${Quelle}-${Version}-oss
zypper ar ftp://${Quelle}/${UPDATEPATH} ${Quelle}-${Version}-up

#

Erfolgskontrolle:

zypper lu

muss ohne Fehlermeldung durchlaufen.

Anschliessend werden (am sichersten per "yast", am einfachsten per Editor in den Dateien unterhalb von "/etc/zypper/repo.d") die "fernen" Repositorien auf "disabled" gesetzt.

Installation per PXE

Die Netzboot-*.iso-Datei (z.B. "openSUSE-11.4-NET-i586.iso") wird von einem der üblichen Repositorien geholt und beim PXE-Server z.B. ins Verzeichnis "/tftpboot/iso" kopiert. Es erhöht die Übersicht, wenn sie über einen Symlink aufgerufen werden kann, z.B. "SUSE-NET.iso".

Im PXE-Menu (bei Arktur z.B. in der Datei "/tftpboot/conf/livecd.conf") wird sie über den Block

Label SuSEnet
    MENU LABEL SuSE uebers Netz
    KERNEL memdisk
    APPEND iso raw
    INITRD iso/SUSE-NET.iso

eingebunden.

Bei der Installation sollte zuerst der HTTP-Proxy eingetragen werden; das lokale Repositorium kann per NFS, HTTP oder FTP adressiert werden (je nach Konfiguration des Servers).

Ubuntu

und weitere Links

Server

Client

Installation per PXE

Wenn der Client per PXE-Boot aus dem Repositorium installiert werden soll, dann geht das recht einfach mit Hilfe des Pakets "netboot.tar.gz", das (angepasst für die jeweilige Ubuntu-Version) bei den üblichen Ubuntu-Quellen liegt.

Es reicht, aus diesem Paket das Verzeichnis "ubuntu-installer" ins "/tftpboot"-Verzeichnis zu kopieren und ins PXE-Menu (bei Arktur z.B. in "/tftpboot/conf/livecd.conf") den Block

Label Ubuntunet
    MENU LABEL Ubuntu uebers Netz
    Kernel ubuntu-installer/i386/linux
    append initrd=ubuntu-installer/i386/initrd.gz

aufzunehmen.

Bei der Frage nach dem Repositorium ist dann das lokale Repositorium anzugeben.

Debian

Server