Update-Zweigstelle - Mac serviert Updates im LAN

Seite 4: Sammel-Krake

Inhaltsverzeichnis

Der Apache-Web-Server gehört beim Mac zur Grundausstattung. Für den Update-Dienst fehlen lediglich noch Squid und das Kommandozeilen-Tool wget, das die Updates von Apples Server holt. Beides kann man gratis über den Paketmanager MacPorts beziehen – falls Sie diesen noch nicht haben, laden Sie die Software und richten Sie sie per Doppelklick auf Ihrem Mac-Router ein. Das Tool setzt die Entwicklungsumgebung XCode voraus, die Sie bei Bedarf auf der ­Installations-DVD Ihres Macs finden.

Starten Sie also das Terminal für den zweiten Teil der Einrichtung (Ordner Programme/Dienstprogramme) und laden Sie zunächst wget (Administrator-Passwort erforderlich):

sudo port install wget

Wenn das Tool an Bord ist, legen Sie die Voraussetzungen dafür an, dass Ihr Mac die Updates holt. Laden Sie dafür das Archiv mit den Skripten und Konfigurationsdateien, die wir zum Download bereitgestellt haben. Entpacken Sie es auf dem Desktop Ihres Router-Macs und bringen Sie das Shell-Skript get­appleupdates an seinen Platz und setzen Sie das Ausführungsbit:

cd ~/Desktop/Proxy-Mac-Skripte
sudo mkdir -p /usr/local/bin
sudo cp getappleupdates /usr/local/bin/
sudo chmod +x /usr/local/bin/getappleupdates

Legen Sie das Download-Verzeichnis für Apples Updates an. Im Beispiel verwenden wir das Laufwerk namens „updates“ – ersetzen Sie den Beispielpfad durch den Pfad, für den Sie sich auf Ihrem Mac entschieden haben. Weil auf dieses Verzeichnis später Apache zugreifen können soll, stellen Sie in der zweiten und dritten Zeile die Zugriffsrechte gleich passend dafür ein:

mkdir -p /Volumes/updates/apple
sudo chown -R _www:_www /Volumes/updates/
sudo chmod -R 755 /Volumes/updates/

Starten Sie das Skript, indem Sie den Pfad für die Updates als Kommandozeilenargument übergeben (andernfalls landen die Updates im aktuellen Verzeichnis):

getappleupdates /Volumes/updates/apple

Das Skript holt zunächst Apples Software-Update-Kataloge (XML-Dateien), in denen die URLs zu den einzelnen Updates aufgeführt sind. Anschließend liest es die Pfade für die Downloads aus und holt nacheinander die dort aufgeführten Dateien. Dabei ist der Befehl wget mittels der Option „–mirror“ so eingestellt, dass er die URLs jeweils als Pfade auf dem lokalen Ziellaufwerk nachbildet. Sie finden also kurz nach dem Start des Skripts in „/Volumes/updates/apple“ die drei Unterverzeichnisse swcdn.apple.com, swquery.apple.com und swscan.apple.com, die wget anschließend mit Dateien befüllt.

Der gesamte Vorgang dauert üblicherweise etliche Stunden – es sind gegenwärtig rund 54 GByte Daten zu laden. Das gilt jedoch nur für den ersten Durchgang. Bei späteren Aufrufen gleicht wget ab, ob eine Datei bereits vorhanden ist und holt sie nicht neu, wenn das Erstellungsdatum nicht jünger ist. Dann meldet es: „Server file no newer than local file – not retrieving.“

Weil sich selbst die Abgleichdurchgänge je nach Serverleistung und Internetanschlussgeschwindigkeit eine Weile hinziehen können, empfiehlt es sich, das Skript nachts laufen zu lassen (an einer 100-MBit/s-Leitung mit einem 2,8-GHz-Power-Mac Quadcore Intel Xeon dauerte das rund 20 Minuten). Wir haben dafür einen simplen LaunchDaemon getippt, der den Vorgang jeweils um Mitternacht anstößt. Stellen Sie sicher, dass er die Updates in das Verzeichnis lädt, das Sie dafür auserkoren haben:

pico ~/Desktop/Proxy-Mac-Skripte/StartMirror.plist

Das Zielverzeichnis für die Updates finden Sie in der Zeile unter dem Befehl „getapple­updates“. Speichern Sie die Änderungen und bringen Sie den LaunchDaemon an seinen Platz:

sudo cp ~/Desktop/Proxy-Mac-Skripte/StartMirror.plist \
/Library/LaunchDaemons
sudo launchctl load -w \ /Library/LaunchDaemons/StartMirror.plist