[Linux Mint] Wenn OCM den Start verweigert…

In letzter Zeit hatte ich zweimalig das Problem, das OpenCachemanager den Start verweigerte. Erstmalig geschah dies unter Ubuntu 14.04, als OCM ganz ohne Vorwarnung von heute auf morgen den Dienst quittierte. Ein Versuch das Ding im Terminal mittels ocm-gtk zu starten ergab folgende Fehlermeldung:

schrottie@fuuk-up:~$ ocm-gtk 
/usr/share/locale Unhandled Exception: System.DllNotFoundException: intl at (wrapper managed-to-native) Mono.Unix.Catalog:bindtextdomain (intptr,intptr) at Mono.Unix.Catalog.Init (System.String package, System.String localedir) [0x00000] in :0 at ocmgtk.OCMApp.Main (System.String[] args) [0x00000] in :0 Unhandled Exception: System.DllNotFoundException: msvcrt at (wrapper managed-to-native) Mono.Unix.Native.Stdlib:free (intptr) at Mono.Unix.UnixMarshal.FreeHeap (IntPtr ptr) [0x00000] in :0 at Mono.Unix.Catalog.Init (System.String package, System.String localedir) [0x00000] in :0 at ocmgtk.OCMApp.Main (System.String[] args) [0x00000] in :0 [ERROR] FATAL UNHANDLED EXCEPTION: System.DllNotFoundException: msvcrt at (wrapper managed-to-native) Mono.Unix.Native.Stdlib:free (intptr) at Mono.Unix.UnixMarshal.FreeHeap (IntPtr ptr) [0x00000] in :0 at Mono.Unix.Catalog.Init (System.String package, System.String localedir) [0x00000] in :0 at ocmgtk.OCMApp.Main (System.String[] args) [0x00000] in :0 
schrottie@fuuk-up:~$

Also ganz klar ein Problem mit Mono, jedoch welches es genau war, das lies sich nicht eingrenzen. Ich nehme mal an, das ich hier irgendwann versehentlich irgendwelche Abhängigkeiten entfernt habe. Angeblich lässt sich dieses Problem jedoch lösen, indem man zunächst OCM komplett deinstalliert, dann die Version 1.0.14 installiert und anschließend die 1.0.15. Ich kam jedoch nicht mehr dazu dies zu testen, da ich noch bevor ich dazu kam mein nunmehr 10 Jahre genutztes und immer wieder aktualisiertes Ubuntu von der Platte gefegt und durch ein Linux Mint ersetzt habe.

Erwähnt soll es aber trotzdem sein, denn vielleicht hilft es ja dem einen oder anderen. Mit Mint war alles wieder schön und OCM verrichtete brav seinen Dienst. Tja, bis dann auch hier plötzlich nichts mehr ging. Zunächst dachte ich wieder an den gleichen Fehler und versuchte die Sache mit der erneuten Installation wie oben beschrieben, jedoch funktionierte das nicht. Bis ich dann mal genauer hinsah und bemerkte, das diesmal eine ganz andere Fehlermeldung erzeugt wurde:

schrottie@fuuk-up:~$ ocm-gtk 
/usr/share/locale Missing method Init in assembly /usr/lib/opencachemanager/ocm-gtk.exe, type NDesk.DBus.BusG Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'NDesk.DBus.GLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f6716e4f9b2ed099' or one of its dependencies. File name: 'NDesk.DBus.GLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f6716e4f9b2ed099' [ERROR] FATAL UNHANDLED EXCEPTION: System.IO.FileNotFoundException: Could not load file or assembly 'NDesk.DBus.GLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f6716e4f9b2ed099' or one of its dependencies. File name: 'NDesk.DBus.GLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f6716e4f9b2ed099' 
schrottie@fuuk-up:~$

Aber auch dieses Problem ist bekannt und es gibt tatsächlich eine Lösung dafür. Zunächst lädt man sich das Installationspaket herunter und schiebt es kurzerhand in ein leeres Verzeichnis. Nennen wir dieses Verzeichnis einfach mal 'blubb'. In meinem Falle wäre es also /home/schrottie/blubb. Los geht es im Terminal mit

cd blubb 
dpkg-deb -e opencachemanager_1.0.15-1_all.deb

womit das Installationspaket entpackt wird. Nun findet man in 'blubb' ein neues Verzeichnis namens DEBIAN in dem sich eine Datei namens control befindet, die man nun mit einem Editor seiner Wahl öffnet. In diese Datei muss nun folgende Zeile kopiert werden, vorzugsweise als 7. Zeile, also direkt nach Installed-Size: 8294:

Depends: libmono-system2.0-cil, libwebkit1.1-cil, libmono-sqlite2.0-cil, gpsbabel, libgtk2.0-cil, libndesk-dbus1.0-cil, libgconf2.0-cil, ubuntu-system-service, libndesk-dbus-glib1.0-cil, librsvg2-common, libmono-system-web2.0-cil, libmono-cairo2.0-cil, libmono-system-web4.0-cil, libmono-system-data4.0-cil

Anschließend wird das Paket mit

dpkg-deb -b . ocm.deb

neu gebaut.

Nun hat man ein wunderfeines Installationspaket, das auch die notwendigen Abhängigkeiten berücksichtigt. Um diese Abhängigkeiten auch gleich mit zu installieren, nutzt man anstelle von dpkggdebi:

sudo gdebi ocm.deb

Und jetzt kommt es: In manchen seltenen Fällen startet OCM nun immer noch nicht, denn der Befehl ocm-gtk kann nicht gefunden werden. In diesem Falle muss noch einmal das originale Paket „drüber installiert“ werden:

 sudo dpkg -i opencachemanager_1.0.15-1_all.deb

Spätestens jetzt sollte OCM wieder wie gewohnt seinen Dienst verrichten. 🙂

Update 15.12.2015

Sollte dieser Workaround nicht funktionieren, so kann man ggf. auf ein Mini-Update für Archlinux zurückgreifen. Dieses Paket lässt sich mit etwas Vorbereitung unter Mint kompilieren und installieren. Das Howto dazu gibt es hier im Blog.

Schrottie

Ich blogge hier seit Anfang 2005 über wechselnde Themen. Zumeist handelt es sich dabei um Linux, Android, Geocaching oder Fotografie, aber zunehmend auch rund ums Fahrradfahren (mit MTB und Rennrad), das ich nach einigen Jahren Pause wieder für mich entdeckt habe.

Dabei ist die Themenwahl insgesamt recht selektiv, also ich schreibe immer nur dann, wenn mich etwas wirklich interessiert und/oder bewegt und so kommt es dann auch, das man hier zuweilen auch private Dinge findet.

Wer mir für die Arbeit ein kleines Dankeschön zukommen lassen möchte, der kann dies gern über meinen Amazon Wunschzettel tun. :-)