Migration von ownCloud 9 zu Nextcloud 10

Seit einiger Zeit gibt es den ownCloud-Fork Nextcloud. Initiiert wurde dieser Fork von Frank Karlitschek dem ehemaligen Chief Technology Officer der Firma ownCloud. Mit dem Fork möchte man das Projekt wieder mehr in Richtung Community bringen – so werden von den Beitragenden keine Contributor Agreements erwartet und viele Features welche vorher der Enterprise-Version vorbehalten waren, stehen nun unter Nextcloud allen bereit. Von der Community wanderte die Unterstützung mittlerweile stark zu Nextcloud, so das sich für viele die Frage stellt ob man zu Nextcloud migrieren sollte.

nextcloud.com

nextcloud.com

Wenn man eine Migration zu Nextcloud ins Auge gefasst hat, muss die Frage nach dem Wie geklärt werden. Wenn man hier von ownCloud 9 zu Nextcloud 10 migirieren möchte, ist die Migration in wenigen Schritten erledigt. Im ersten Schritt sollte die ownCloud-Installation bereinigt werden. Dazu werden alle Ordner bis auf den data und den config-Ordner entfernt. Im zweiten Schritt sollte das aktuelle Nextcloud-Release heruntergeladen werden. Dieses wird entpackt und der Inhalt des Archivs in den Ordner der ownCloud-Installation kopiert. Nun muss die ownCloud-Installation im Browser aufgerufen werden.

Die Installation wird migriert

Die Installation wird migriert

Dort wird man nun aufgefordert den Upgradeprozess durchzuführen, alternativ kann dieser auch über die Konsole durchgeführt werden:

sudo -u www-data occ upgrade

Dabei muss das Upgrade im Kontext des Nutzers erfolgen, welchem die entsprechenden Verzeichnisse gehören. Nach dem erfolgreichen Upgrade bzw. der erfolgreichen Migration kann die Nextcloud-Instanz im Browser genutzt werden. Im Moment gleicht sich die Bedienung von ownCloud und Nextcloud sehr, aber dies wird sich in den nächsten Monaten und Jahren ändern – das gleiche gilt natürlich auch für die Migration. Wenn sich die beiden Anwendungen mit der Zeit auseinander entwickeln wird die Migration in Zukunft komplizierter werden, so das es sich lohnt darüber nachzudenken wann diese durchgeführt werden soll.

Reguläre Ausdrücke online testen

Reguläre Ausdrücke sind mächtig. Wenn man einen solchen Ausdruck entwickelt z.B. um eine Zeichenkette zu extrahieren, ist es enorm hilfreich das ganze zeitnah zu debuggen. Mit der Webseite regexr.com gibt es dafür einen Dienst mit welchem eigene reguläre Ausdrücke schnell überprüft und getestet werden können. Dabei wird der Ausdruck auf der Seite eingegeben und anschließend gegen den angegebenen Text überprüft.

regexr.com

regexr.com

Daneben bietet der Dienst eine Reihe von Zusatzfunktionalitäten, wie die von Nutzern befüllte Bibliothek von regulären Ausdrücken für bestimmte Funktionalitäten. Der Quelltext des Dienstes ist auf GitHub zu finden – er ist unter der MIT-Lizenz lizenziert und damit freie Software.

Maven Enforcer Plugin temporär deaktivieren

Für das Build-Management-Tool Maven gibt es eine große Anzahl an Plugins mit welchen die Funktionalität von Maven erweitert werden kann. Eines dieses Plugins ist das Maven Enforcer Plugin. Dieses Plugin überprüft, ob die Abhängigkeiten zwischen JDK, Bibliotheken und vielem mehr gegeben sind. Ist dies nicht der Fall, wird der Kompiliervorgang abgebrochen. Möchte man diese Überprüfung temporär deaktivieren muss die Kommandozeile um den Parameter -D enforcer.fail=false erweitert werden:

mvn clean compile -D enforcer.fail=false

Damit wird die Funktionalität des Enforcer Plugins für den Vorgang deaktiviert. Mittelfristig sollen natürlich die Abhängigkeiten korrigiert werden, sodass der Vorgang mit aktiviertem Plugin erfolgreich durchlaufen werden kann.

sleep 31536000

Vor einigen Tagen schaute ich mir die Tasks unter einer Mac OS X Installation genauer an. Stutzig wurde ich bei einem Task in der Aktivitätsanzeige welcher folgenden Befehl ausführte:

sleep 31536000

Wenn man kurz nachrechnet wird man feststellen das dieser Sleep-Befehl einer Wartezeit von einem Jahr entspricht. Damit stellt sich die Frage was es mit diesem Befehl auf sich hat. Wenn man sich anschaut, wer für den Sleep-Befehl zuständig ist wird man feststellen das der GPG Agent diesen Befehl abgesetzt hat. Hintergrund für dieses Verhalten ist, das es nach Aussage der Entwickler keine einfachere Möglichkeit gibt ein Skript beim Herunterfahren des Systems auszuführen. Der entsprechende Commit im Repository erklärt das Verhalten genauer.

Git und „multiple stage entries“

Wenn man längere Zeit mit Git arbeitet, wird einem die eine oder andere seltenere Fehlermeldung über den Weg laufen. Eine dieser Fehlermeldungen ist:

fatal: multiple stage entries for merged file 'DBAdapter.cs'

Hintergrund bei diesem Problem ist das der Index, welcher die Änderungen und Dateien enthält mit welchem der nächste Commit erstellt wird, für eine Datei mehrere Einträge vorhält; was per Definition nicht der Fall sein sollte. Der Workaround für diese Problem besteht darin, den Index (bzw. die sogenannte Staging area) zu löschen, die Dateien erneut hinzuzufügen und das ganze mit einem Commit in Stein gießen:

rm .git/index
git add -A
git commit -a

Anschließend kann das Git-Repository wieder ohne Probleme genutzt werden.