{"id":12,"date":"2010-11-06T18:57:30","date_gmt":"2010-11-06T17:57:30","guid":{"rendered":"http:\/\/pfft.ch\/wordpress\/?p=12"},"modified":"2010-11-08T13:48:15","modified_gmt":"2010-11-08T12:48:15","slug":"parallel-installation-von-mono-unter-ubuntu","status":"publish","type":"post","link":"https:\/\/www.pfft.ch\/wordpress\/2010\/11\/parallel-installation-von-mono-unter-ubuntu\/","title":{"rendered":"Parallel-Installation von Mono unter Ubuntu"},"content":{"rendered":"<p>Die Pakete, die in der Paketverwaltung von Ubuntu zu finden sind, laufen eigentlich ziemlich gut, auch wenn sie meistens out-dated sind und bei einem Ubuntu-Update vom Hersteller bereits eine noch neuere Version verf\u00fcgbar ist. Das kommt daher, dass die Macher von Ubuntu jeweils noch kleine \u00c4nderungen vornehmen im Code, und sie auch daf\u00fcr sorgen, dass die Abh\u00e4ngigkeiten der einzelnen Pakete aufgel\u00f6st werden k\u00f6nnen. Ein, zwei Klicks in der Paketverwaltung (oder halt per Handeingabe via Konsole) oder im Software-Center und das neue Programm wird mitsamt allen ben\u00f6tigten Paketen installiert. Klar, bei diesen Versionen fehlen die neusten Features, obwohl sie in einschl\u00e4gigen Fachzeitschriften und auf Homepages bereits ausgiebig besprochen werden.<!--more--><\/p>\n<p>F\u00fcr den Normaluser stellt das meistens kein Problem dar, sind die neusten M\u00f6glichkeiten meist eh noch ziemlich buggy und erst mit dem n\u00e4chsten Release wirklich funktionsf\u00e4hig. Oder wie es einmal einer unserer Kunden ausgedr\u00fcckt hat: &#8222;Sorry, aber auf unserem System wird sicherlich nie ein x.0-Version von eurer Software installiert.&#8220;<\/p>\n<p>Trotzdem kann es vorkommen, dass man mal sehns\u00fcchtig auf ein solch neues Feature wartet oder der nervige Bug die effektive Nutzung eines Tools praktisch verhindert. Und bis Ubuntu die neuste Version in seiner Paketverwaltung anbietet, kann es doch mehrere Monate dauern. Da bleibt nichts anderes \u00fcbrig, als die neuste Version direkt vom Hersteller zu beziehen und selber zu installieren. Doch m\u00f6chte man die &#8222;alte&#8220; Version nicht zwingend l\u00f6schen, da sonst die Paketverwaltung die Abh\u00e4ngigkeiten bei neu installierten Programmen nicht mehr richtig aufl\u00f6sen kann, da sie nicht mitkriegt, dass das Tool\/Library bereits installiert ist (einfach neuer und evtl. an einem anderen Ort).<\/p>\n<p>Ein m\u00f6glicher Fall ist die Installation von Mono. In der Ubuntu-<a href=\"http:\/\/packages.ubuntu.com\/maverick\/devel\/\">Paketverwaltung<\/a> findet sich zur Zeit die Version 2.6.7. Mit der neusten Version 2.8 wurden nun aber doch einige neue Features <a href=\"http:\/\/www.mono-project.com\/Release_Notes_Mono_2.8\">hinzugef\u00fcgt<\/a>. Wie <a href=\"http:\/\/www.mono-project.com\/Parallel_Mono_Environments\" target=\"_blank\">hier<\/a> beschrieben, ist eine parallele Installation der neusten Mono-Version unter Ubuntu m\u00f6glich. Nachfolgend, wie ich es bei mir zum Laufen gekriegt habe.<\/p>\n<ol>\n<li>Erstellen einer eigenen Umgebung f\u00fcr das neue Mono. Dazu das folgende Script in der Datei &#8222;~\/mono-dev-env&#8220; speichern.<\/li>\n<pre>#!\/bin\/bash\r\nMONO_PREFIX=\/opt\/mono\r\nGNOME_PREFIX=\/usr\r\nexport DYLD_LIBRARY_FALLBACK_PATH=$MONO_PREFIX\/lib:$DYLD_LIBRARY_FALLBACK_PATH\r\nexport LD_LIBRARY_PATH=$MONO_PREFIX\/lib:$LD_LIBRARY_PATH\r\nexport C_INCLUDE_PATH=$MONO_PREFIX\/include:$GNOME_PREFIX\/include\r\nexport ACLOCAL_PATH=$MONO_PREFIX\/share\/aclocal\r\nexport PKG_CONFIG_PATH=$MONO_PREFIX\/lib\/pkgconfig:$GNOME_PREFIX\/lib\/pkgconfig\r\nexport PATH=$MONO_PREFIX\/bin:$PATH\r\nPS1=\"[mono] \\w @ \"<\/pre>\n<p>Sobald diese Umgebung geladen wird, ist die Mono-Version auf 2.8 gesetzt. Das erlaubt das Ausf\u00fchren der &#8222;normalen&#8220; (von Synaptic installierten) Version. Wenn nun aber die neue Version verwendet werden soll, dann muss die Umgebung zuerst mit dem folgenden Kommando gestartet werden:<\/p>\n<pre>source ~\/mono-dev-env<\/pre>\n<li><span class=\"shutterset\">E<\/span>rstellen eines neuen Verzeichnis &#8222;mono-2.8&#8220; im Home-Verzeichnis<\/li>\n<li>Mittels Synaptic-Paketverwaltung die Pakete libgtk2.0-cil, libgtk2.0-cil-dev,\u00a0 libglade2.0-cil und libglade2.0-cil-dev installieren. Das installiert die ben\u00f6tigten Libraries gtk-sharp-2.0 und glade-sharp-2.0.<\/li>\n<li>Download und entpacken von <a href=\"http:\/\/ftp.novell.com\/pub\/mono\/sources\/mono\/mono-2.8.tar.bz2\">mono<\/a>, <a href=\"http:\/\/ftp.novell.com\/pub\/mono\/sources\/libgdiplus\/libgdiplus-2.8.tar.bz2\">libgdiplus<\/a> und <a href=\"http:\/\/ftp.novell.com\/pub\/mono\/sources\/mono-tools\/mono-tools-2.8.tar.bz2\">mono-tools<\/a> in das neu erstelle Verzeichnis<\/li>\n<li>\u00d6ffnen einer Konsole und ausf\u00fchren des obigen Environment-Scripts<\/li>\n<li>Bilden und installieren der einzelnen Komponenten in \/opt\/mono:<\/li>\n<\/ol>\n<pre>#libgdiplus\r\ncd libgdiplus-2.8\r\n.\/configure --prefix=$MONO_PREFIX\r\nmake\r\nsudo make install\r\n\r\n#mono\r\ncd ..\/mono-2.8\r\n.\/configure --prefix=$MONO_PREFIX\r\nmake\r\nsudo make install\r\n\r\n#mono-tools\r\ncd ..\/mono-tools-2.8\r\n.\/configure --prefix=$MONO_PREFIX\r\nmake\r\nsudo make install<\/pre>\n<p>Falls mehr als eine zus\u00e4tzliche Version installiert werden soll, muss einfach das Environment-Script dupliziert und jeweils angepasst werden (MONO_PREFIX=\/wo\/immer\/man\/will). Die Installation mit den neusten Sourcen direkt aus Git sollte \u00e4hnlich verlaufen, auch wenn ich es nicht getestet habe (und es evtl. auch nicht stabil l\u00e4uft).<\/p>\n<p>Nat\u00fcrlich kann man bei den einzelnen Komponenten noch zus\u00e4tzliche Flags setzen. Aber eigentlich muss ich das ja nicht erw\u00e4hnen. Wer sich die M\u00fche macht und die letzte Version von Mono selber kompiliert, nur um auf die letzten Features zur\u00fcckgreifen zu k\u00f6nnen, der wird genug versiert sein mit dem Umgang mit Computern und Compilern.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Die Pakete, die in der Paketverwaltung von Ubuntu zu finden sind, laufen eigentlich ziemlich gut, auch wenn sie meistens out-dated sind und bei einem Ubuntu-Update vom Hersteller bereits eine noch neuere Version verf\u00fcgbar ist. Das kommt daher, dass die Macher von Ubuntu jeweils noch kleine \u00c4nderungen vornehmen im Code, und sie auch daf\u00fcr sorgen, dass [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,4,3],"tags":[],"class_list":["post-12","post","type-post","status-publish","format-standard","hentry","category-entwicklung","category-mono","category-ubuntu"],"_links":{"self":[{"href":"https:\/\/www.pfft.ch\/wordpress\/wp-json\/wp\/v2\/posts\/12","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.pfft.ch\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.pfft.ch\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.pfft.ch\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.pfft.ch\/wordpress\/wp-json\/wp\/v2\/comments?post=12"}],"version-history":[{"count":18,"href":"https:\/\/www.pfft.ch\/wordpress\/wp-json\/wp\/v2\/posts\/12\/revisions"}],"predecessor-version":[{"id":28,"href":"https:\/\/www.pfft.ch\/wordpress\/wp-json\/wp\/v2\/posts\/12\/revisions\/28"}],"wp:attachment":[{"href":"https:\/\/www.pfft.ch\/wordpress\/wp-json\/wp\/v2\/media?parent=12"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.pfft.ch\/wordpress\/wp-json\/wp\/v2\/categories?post=12"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.pfft.ch\/wordpress\/wp-json\/wp\/v2\/tags?post=12"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}