Heute wurde durch das Entwicklerstudio Mojang der Update auf die Minecraft Version 1.4.2 freigegeben. Die Gelegenheit meinen Minecraft Client zu aktualisieren habe ich natürlich nicht ungenutzt verstreichen lassen…
Mit dem Update des Clients kann ich nun aber - erwartungsgemäß - nicht mehr auf meinen Multiplayer Server zugreifen, der bislang die Version 1.3.2 nutzt. Daher ist vorgegeben, womit ich den Abend verbringen werde.
Um die notwendigen Schritte für die Zukunft zu dokumentieren (meine Zukunft, es wird bestimmt noch einmal ein Update geben), werde ich sie an dieser Stelle zusammenfassen. Immerhin zeigt die Erfahrung (meine), dass ich für einige administrativen Aufgaben, zum Beispiel die Installation vom S/MIME Zertifikaten oder die Nutzung von apachectl
und webappctl
, immer wieder gerne auch auf meine eigenen Blogeinträge zurückgreife.
Das Update
Ich habe den Minecraft Server im wesentlichen parallel zu den Anleitungen für die Installation und die Einrichtung des launchd
Service aufgesetzt. Es gibt einige Abweichungen beim minecraft.command
und den Einstellungen in der .plist
, doch diese sind für das Update hier nicht weiter interessant.
Zunächst einmal muss der Server in einen konsistenten Zustand für Backup und Update gebracht werden: die einfachste Lösung ist dabei, ihn einfach anzuhalten. Den eigentlichen Serverprozess mit einem Signal zu stoppen ist dabei nicht sinnvoll. Erst einmal wird dann gegebenenfalls der Zustand der Welt nicht sauber gesichert, zum anderen wird der Prozess in meiner Konfiguration durch launchd
dann automatisch nachgestartet.
Das Anhalten erfolgt daher über launchctl
. Mit dem vorbereiteten stop.command
wird dann sichergestellt, dass der Server tatsächlich verschwunden ist. Danach erstelleeich ein Backup dieser Konfiguration. Es kann ja immer mal wieder passieren, dass ich auf diesen Stand zurück kommen möchte.
merlin:Users root# launchctl unload /Library/LaunchDaemons/net.minecraft.server.plist
merlin:Users root# _minecraft/stop.sh
MineCraft not running
merlin:Users root# ps auxw | grep mine
root 46053 0,0 0,0 2432768 588 s000 R+ 7:19pm 0:00.00 grep mine
_minecraft 46043 0,0 0,0 2452940 792 ?? Ss 7:19pm 0:00.01 /sbin/launchd
merlin:Users root# tar cvzf _minecraft_1.3.3.tgz _minecraft
...
Nun kann die aktualisierte Serverversion aus dem Internet geladen werden. Leider ist im verwendeten URL keine Versionsnummer enthalten. Daher bleibt immer eine Unsicherheit, ob man die gewünschte Version erhalten hat. Heute jedenfalls funktioniert diese Lösung und die gesuchte Version wird installiert.
merlin:Users root# cd _minecraft
merlin:_minecraft root# curl https://s3.amazonaws.com/MinecraftDownload/launcher/minecraft_server.jar -o minecraft_server.jar
merlin:_minecraft root# chown _minecraft:_minecraft minecraft_server.jar
merlin:_minecraft root#
Nun kann der Server auch wieder in die Startkonfiguration meines OSX Server eingetragen werden. Damit steht unser Multiplayer-Server wieder für die ungeduldige Nutzerschaft zur Verfügung.
merlin:_minecraft root# launchctl load /Library/LaunchDaemons/net.minecraft.server.plist
merlin:_minecraft root# ps auxw | grep minecraft
_minecraft 46201 41,2 5,4 3711016 225468 ?? R 7:33pm 0:05.93 /usr/bin/java -Xmx1G -Xms1G -server -Djava.awt.headless=true -jar minecraft_server.jar
root 46205 0,0 0,0 2432768 588 s000 R+ 7:33pm 0:00.00 grep minecraft
_minecraft 46203 0,0 0,0 2445260 972 ?? S 7:33pm 0:00.01 /usr/sbin/cfprefsd agent
_minecraft 46198 0,0 0,0 2452940 792 ?? Ss 7:33pm 0:00.01 /sbin/launchd
merlin:_minecraft root#
Das war es eigentlich schon. Das Update verläuft so schmerzfrei und unproblematisch, dass ich schon darüber nachdenke, einen automatischen Updateprozess aufzusetzen. Die wenigen hier verwendeten Befehle könne auch in ein eigenes Shell-Skript übertragen werden und per cron
oder launchd
in regelmäßigen Abständen ausgeführt werden.
Aber jetzt erforsche ich erst einmal die Möglichkeiten der neuen Version.