In dieser Anleitung wird jeweils die neueste Version von CentOS entsprechend der Architektur unter dem Pfad /repo/cos5_x64 oder /repo/cos54_x86 gespeichert. Sofern zusätzlich eine altere Version von CentOS für einen bestimmten Zeitraum gewünscht ist, kann durch diese Vorgabe gewährleistet, dass bei einem Sprung der CentOS Version 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. In meinem Beispiel erfolgte ein Wechsel von CentOS 5.4 auf Version 5.5. Mit dem Hinweis aus den´m vorherigen Satz, würde für die veraltete Version 5.4 das bisherige Verzeichnis von /repo/cos5_x86 auf /repo/cos54_x86 umbenannt und anschließend ein neues (leeres) Verzeichnis /repo/cos5_x86 mit den Unterverzeichnissen os und updates angelegt werden.
Nun können die aktuellen Updates wieder mit dem neuen Verzeichnis /repo/cos5_x86 synchronisiert werden, während die ältere CentOS-Version 5.4 jeweils über ihr dediziertes Verzeichnis weiterhin parallel zur Verfügung steht. Da über dieses Verzeichnis keine neuen Security-Updates mehr verteilt werden, sollten ältere Versionen nicht für einen produktiven Einsatz genutzt werden. Die nachfolgende Struktur soll den Aufbau der Pfade 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.
#!/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"
Die dazugehörige exclude Datei.
+ openoffice.org-langpack-de*
+ openoffice.org-langpack-en*
openoffice.org-langpack-**
openoffice.org-sdk-**
repodata/
Der 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