System- und Update Repository

Hierbei ist zu beachten, dass jeweils die neueste Version von CentOS unter dem Pfad /repo/cos5_x“64 oder 86 Architektur“ gespeichert wird und eine ältere unter dem Versionsnamen gespeichert werden sollte. Wenn ein zusätzliches Vorhalten von älteren RPM Paketen für einen bestimmten Zeitraum gewünscht ist. Durch diese Vorgaben ist gewährleistet, dass bei einem CentOS Versions-Sprung die Upgrade- und Update-Funktionalität weiterhin gegeben ist.
Achtung Bei Wechsel auf eine neue Version ist zu beachten, dass die aktuellen Security-Updates auf den Mirror-Servern immer unter dem Pfad /mirror/centos.org/5/updates/ zur Verfügung gestellt werden. Dies bedeutet, die Update-Verzeichnisse des eigenen Repositories müssen umbenannt werden, um Paketkonflikte aufgrund der Versionsunterschiede zu vermeiden. So würde für die veraltete Version 5.4 das Repo-Verzeichnis /repo/cos5_x86
/repo/cos54_x86
umbenannt und ein neues (leeres) Verzeichnis /repo/cos5_x86 mit den Unterverzeichnissen os und updates angelegt werden.
Nun laufen die aktuellen Updates wieder in das neue Verzeichnis während die älteren CentOS-Versionen jeweils auf ihr dediziertes Update-Verzeichnis zugreifen können. Diese enthalten keine neuen Security-Updates mehr.
Die nachfolgende Tabelle soll dieses besser veranschaulichen, wobei das Release der Version 5.5 als Beispiel angenommen wurde.
/repo/cos54_x64
os
updates
/repo/cos54_x86
os
updates
/repo/cos5_x64
os
updates
/repo/cos5_x86
os
updates

Via Cron Job und dem Shell-Script centosupdate.sh können täglich die neuesten Patches von den CentOS Mirror-Servern geladen werden und stehen im Anschluss allen lokalen Servern bzw. -Clients auf CentOS-Basis zur Verfügung.
das Shell-Script könnte z.B. wie folgt aufgebaut sein

#!/bin/sh
#
# Author: Jens Mahnke (maj)
# This script gets the latest updates for CentOS 5 x64 and x86 from the
# CentOS mirror.
# Script is started nightly from root's crontab
#
# Source: http://ftp.hosteurope.de/mirror/centos.org/5.5/updates/x86_64/RPMS/
rsync='rsync -aqzH --delete --exclude-from=/repo/cos5.exclude ftp.hosteurope.de::centos/5.5/updates'
echo -e "\n*******************"
echo -e "START rsync X64"
date
echo -e "*******************\n"
$rsync/x86_64/RPMS/ /repo/cos5_x64/updates
echo -e "\n*******************"
echo -e "START rsync X86"
date
echo -e "*******************\n"
$rsync/i386/RPMS/ /repo/cos5_x86/updates
echo -e "\n*******************"
echo -e "START createrepo X64"
date
echo -e "*******************\n"
/usr/bin/createrepo -q /repo/cos5_x64/updates
echo -e "\n*******************"
echo -e "START createrepo X86"
date
echo -e "*******************\n"
/usr/bin/createrepo -q /repo/cos5_x86/updates
echo -e "\nDONE!!\n"

dazugehörige exclude Datei:

+ openoffice.org-langpack-de*
+ openoffice.org-langpack-en*
openoffice.org-langpack-**
openoffice.org-sdk-**
repodata/

folgender Cron-Job ruft täglich um Mitternacht das zuvor beschrieben Shell-Script auf:

0 1 * * * /usr/local/bin/centosupdates.sh >> /var/log/centosupdates 2>&1