Spiegeln von Reops ohne Verzeichnisauflistung über http

Ich hab mal wieder meinen mrepo Server zu Hause neu eingerichtet. Eine Kleinigkeit die mich störte ist das einige Repository leider keinen Directorylisting haben (z.B. Google und Adobe).

Ich hab mal wieder meinen mrepo Server zu Hause neu eingerichtet. Eine Kleinigkeit die mich störte ist das einige Repository leider keinen Directorylisting haben (z.B. Google und Adobe). Dadürch kann mrepo diese Repos nicht einbinden. Naja, hie ein kleines Script das es ermöglicht die rpm-Dateien aus einem yum-Repo (Repomd) zu speichern, auch wenn keine Verzeichnisanzeige, bzw. keine index-Datei vorhanden ist.

#! /bin/bash
# written by Fabian Niesen 2009-09-16 http://kb.lowfyr.de
# No warranties, no copyright, just use it if you want.
# If you find english typos, just use them to, if you want ;)
# Script to mirror 3rd Partyrepositories
# Requirements: xmllib2
# Syntax for the Repositories:
# REPOnumber=reponame!repourl
TARGETDIR=/var/mrepo/3rdparty
REPO1=google-i386!http://dl.google.com/linux/rpm/stable/i386
REPO2=google-x86_64!http://dl.google.com/linux/rpm/stable/x86_64
REPO3=adobe-i386!http://linuxdownload.adobe.com/linux/i386
REPO4=adobe-x86_64!http://linuxdownload.adobe.com/linux/x86_64
if [ ! -d $TARGETDIR ] ; then
echo "Targetdir did not exist! Change TARGETDIR or try: mkdir "$TARGETDIR
exit 42
fi
### If you add REPOs, remember to adjust the for-statement ###
for REPO in $REPO1 $REPO2 $REPO3 $REPO4
###############################################
### do not change something below this line ###
###############################################
do
REPONAME=`echo $REPO |cut -f1 -d !`
REPOURL=`echo $REPO |cut -f2 -d !`
if [ ! -d $TARGETDIR/$REPONAME ] ; then
mkdir $TARGETDIR/$REPONAME
fi
cd $TARGETDIR/$REPONAME
rm -f rpm.list primary.xml primary.xml.gz
wget -nc $REPOURL/repodata/primary.xml.gz
gunzip primary.xml.gz
xmllint primary.xml --format | grep "<location href" | cut -f2 -d """ >rpm.list
wget -i rpm.list -c -N --base=$REPOURL/
rm -f rpm.list primary.xml primary.xml.gz
done

Und in die mrepo-conf werden  diese Repos so eingebunden (Wenn das Repo nach /var/mrepo/3rdparty/test gespeichert wird):

reponame = mrepo:///path-without-mrepopath
test = mrepo:///3rdparty/test

Eingetragen sind bereits die Repositories für Google und Adobe.

Please wait...

Autor: Fabian Niesen

Fabian Niesen ist seit Jahren beruflich als IT-Consultant unterwegs und arbeitet bei der steep GmbH in Bonn. Unter anderem ist er Zertifiziert als MCSA Windows Server 2008 / 2012, MCSA Office 365, MCSE Messaging, MCT und Novell Certified Linux Administrator. Seine Hobby’s sind Social Media, Bloggen, Mittelaltermärkte und Historische Lieder.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.