Mono installieren


Aus Macwrench

Wechseln zu: Navigation, Suche
 

Dieser Artikel ist als work in progress gekennzeichnet worden.

Das sind Artikel, die eine Anleitung für bestimmte Vorgehensweisen beschreiben sollen und noch nicht ganz vollständig sind. Du kannst dem macwrench Team helfen, diese zu kurzen Artikel zu erweitern. Weitere Informationen zum Artikel sind eventuell auch auf der Diskussionsseite zu finden.

 
Dieser Artikel beschreibt eine Funktion bzw. ein Programm für das Betriebssystem "Windows".

Das Mono-Projekt hat zum Ziel, eine freie, quelloffene und plattformübergreifende Nachbildung der .NET Laufzeitumgebung zur Verfügung zu stellen. Es besteht allerdings derzeit die Einschränkung, dass nur solche graphischen Anwendungen ausgeführt werden können, die zur GUI-Darstellung die Frameworks GTK# oder Cocoa# verwenden. Cocoa# erlaubt es .NET Entwicklern, native Anwendungen mit dem bekannten Mac OS X / Aqua Aussehen zu entwickeln, GTK# ist eine .NET Adaption des Gimp Toolkits. Von den höheren APIs sind derzeit lediglich die APIs für Web-Anwendungen (ASP.NET) und Datenbankzugriff (ADO.NET) vollständig Microsoft-kompatibel und daher plattformübergreifend einsetzbar. Die Unterstützung für die üblicherweise in GUIs eingesetzten Windows Forms ist wohl noch in der Entstehung. Da das Projekt aber recht aktiv ist, kann sich das sehr schnell ändern.

Es existieren bereits fertige Installationspakete für Mac OS X, daher ist die Installation des Basispaketes sehr einfach. Weitere Pakete und Frameworks müssen jedoch noch von Hand übersetzt und installiert werden, was in diesem Artikel beschrieben werden soll.

Für die Ausführung der Programm wird derzeit noch die X11-Umgebung benötigt, diese Einschränkung soll allerdings in Zukunft wegfallen. X11 befindet sich auf der Mac OS 10.4 (Tiger) Installations-CD/DVD, für Mac OS 10.3 (Panther) kann es bei Apple heruntergeladen werden.


Inhaltsverzeichnis

Mono Installationsimage

Das Mac OS X Paket kann auf der Downloadseite heruntergeladen werden und befindet sich nach der Installation in folgendem Verzeichnis:

/Library/Frameworks

Bestandteile des Mac OS X Paketes

Es existieren dabei im Moment (Stand: September 2006) zwei verschiedene Pakete für Intel und PPC, eine Universal-Version ist (noch) nicht verfügbar. Es beinhaltet die folgenden Komponenten:

  • Mono-Framework im Verzeichnis /Library/Frameworks
  • Cocoa#
  • C# compiler
  • verschiedene manpages im Verzeichnis /Library/Frameworks/Mono.framework/Versions/Current/man

Symlinks zu den Kommandozeilentools befinden sich im verzeichnis /usr/bin, für die Verwendung der Manpages muss das obige Verzeichnis in den "manpath" aufgenommen werden. Wie das genau funktioniert, erklärt die manpage von manpath.

Was nicht enthalten ist

Gtk#, XSP/ASP.NET und mod_mono sind nicht im Mac OS X Paket enthalten, sie müssen aus den Quellpaketen von Hand übersetzt und installiert werden.

Durchführen der Basisinstallation

Dieser Schritt ist wie gewohnt sehr einfach:

  • .dmg Image mounten (Doppelklick)
  • .pkg installieren (Doppelklick)
  • fertig.

Bei der Erstellung dieses Artikels kam das Mono Framework in Version 1.1.17.1_2 zum Einsatz mit den folgenden Bestandteilen:

  • mono-1.1.17.1
  • cocoa#-0.9.1-1
  • libgdiplus-1.1.17
  • xsp-1.1.17.1
  • monodoc-1.1.17
  • boo-0.7.6.2237
  • ikvm-0.28.0.0
  • pkgconfig-0.15.0
  • gettext-0.14.1
  • glib-2.6.3
  • freetype-2.1.10
  • jpeg-6b
  • libpng-1.2.8
  • libungif-4.1.3
  • tiff-3.7.1

Weitere Pakete installieren

Es existieren noch einige weitere Pakete des Mono Projektes, die im Installationsimage für Mac OS X standardmäßig jedoch nicht enthalten sind:

libgdi+ installieren

under construction ...

Gtk# installieren

GTK# ist notwendig, damit die graphischen Elemente einer Anwendung (im Moment noch mit Hilfe von X11) dargestellt werden können. Da dieses nicht in Mono enthalten ist, muss es für Mac OS X erst aus den Quelldateien übersetzt werden.

Eine Alternative dazu ist es, das Paket aus den Quellen heraus zu installieren. Dazu werden über Fink zunächst die folgenden Pakete installiert:

  • gnome
  • gtkhtml3

Das erfolgt durch die Eingabe des folgenden Kommandos im Terminal (alternativ dazu via FinkCommander):

fink install bundle-gnome gtkhtml3 gtkhtml3-dev gtkhtml3-shlibs

Das Quellcode-Paket ist über die Webseite des Mono-Projektes zu beziehen und muss (logischerweise) zuerst entpackt werden.

Für den Übersetzungsvorgang muss die folgende Umgebungsvariable gesetzt sein/werden (in einer Zeile ohne den Backslash!):

PKG_CONFIG_PATH=/sw/lib/pkgconfig:/usr/X11R6/lib/pkgconfig: \
      /Library/Frameworks/Mono.framework/Versions/Current/lib/pkgconfig

Anschließend wird im Terminal in dieses Verzeichnis hineingewechselt und das Peket mit den folgenden Kommandos übersetzt:

./configure --prefix=/Library/Frameworks/Mono.framework/Versions/Current
./make
./make install

Um die Programme dann ausführen zu können, muss auch die folgende Umgebungsvariable gesetzt sein:

export DYLD_LIBRARY_PATH=/sw/lib:/Library/Frameworks/Mono.framework/Versions/Current/lib/

Quelle: mono-project.com

Hinweis: noch nicht erfolgreich getestet, also noch it Vorsicht zu genießen ...

Deinstallation

Die Deinstallation des Mono Basispaketes kann mit Hilfe des folgenden Skriptes von der Projektseite durchgeführt werden:

#!/bin/sh -x
#This script removes Mono from an OS X System.  It must be run as root
rm -r /Library/Frameworks/Mono.framework
rm -r /Library/Receipts/MonoFramework-SVN.pkg
cd /usr/bin
for i in `ls -al | grep Mono | awk '{print $9}'`; do
rm ${i}
done     

Dazu ist eine Datei mit diesen Zeilen als Inhalt zu erstellen und im Terminal auszuführen:

sh ./skriptname

Installation der Fink-Pakete

Eine Weiter Möglichkeit besteht darin, die entsprechenden Fink-Pakete zu verwenden. Dazu sind einige weitere Biliotheken notwendig, die am einfachsten via FinkCommander installiert werden können. Die meisten Pakete liegen nur im Quelltext vor, müssen also bei der Installation übersetzt werden. Dafür ist ein installiertes Xcode notwendig, da hier die verschiedenen Tools und Compiler enthalten sind.

Vorbereitungen

Vor der Installation sollte Fink jedoch erst einmal selber aktualisiert werden:

fink selfupdate-cvs
fink update-all

Außerden müssen für die Verwendung des gtk-sharp Paketes aus dem Fink-Repository die Pakete aus den "unstable" und "unstable/crypto" Repositories verwendet werden, das erfolgt am Besten über den FinkCommander (bei mir lief nur die dem Fink-Binärpaket beiligende Version, die über die Projektseite herunterladbare Version 0.5.4 schmierte immer direkt beim Start ab).

Installation

Im Fink Repository existieren bereits fertige Pakete für gtk-sharp, die einfach nur installiert werden müssen:

fink install mono libgdiplus gtk-sharp

Alternativ zu gtk-sharp kann auch die Version 2 der Bibliotheken gtk-sharp2 verwendet werden. Danach werden einige weitere Quellpakete mitinstallert, daher kann die Installation eine ganze Weile dauern ... mein iBook brauchte dafür einige Stunden (wieviele genau kann ich nicht sagen, ich habs die Nacht durchlaufen lassen).

Deinstallation

Die Deinstallation von mono erfolgt, wie bei Fink üblich, über das Kommando fink oder den FinkCommander. Die komplette Deinstallation erfolgt wie hier beschrieben.

Erste Schritte

Zunächst einmal der obligatorische Test mit einem kleinen "Hello World":

Hello World

using System;
using System.Windows.Forms;

public class test {
	public static void Main() {
		MessageBox.Show("hello world");
	}
}

Diese Zeilen werden beispielsweise in eine Datei namens hello.cs kopiert und mit dem folgenden Kommando im Terminal übersetzt:

mcs Hello.cs /r:System.Windows.Forms.dll /out:Hello.exe

Anschließend liegt die ausführbare Datei namens hello.exe im selben Verzeichnis wie auch die Datei hello.cs.

Auf einem Windows-PC wären wir nun fertig und die Datei könnte dem folgenden Kommando ausgeführt werden:

mono hello.exe

Auch auf dem Mac funktioniert das bereits, allerdings nur über einen Aufruf aus einem X11-Terminal (xterm).

Damit man das Programm auch im üblichen Mac-Style über einen Doppelklick ausführen kann, wird nun mit Hilfe des folgenden Kommandos ein "hello.app" erstellt:

macpack -n:Hello -a:Hello.exe -o:. -m:1

Hinweis: die Ausführung via Doppelklick funktionierte bei mir leider nicht, vielleicht hab ich da auch was falsch verstanden ... über einen open-Aufruf aus dem X11-Terminal hingegen funktionierte es wie zu erwarten jedoch ...

Weitere Infos

Ein Mac OS X Startprogramm war wohl einmal am Entstehen, allerdings ist bislang aber offenbar nie fertiggeworden.

Für die Ausführung von GUI-Anwendungen ist jedoch das GTK# Toolkit notwendig, das daher übersetzt und installiert werden muss. Außerdem ist dafür eine X11 Installation notwendig, eine genauere Beschreibung dieses Vorgangs kommt noch ...

under construction ...

Getestete Programme

more to come ...

Weitere Informationen

Diverse Informationen und Links rund um Mono und .NET:

Mono

.NET Entwicklungswerkzeuge

  • MonoDevelop - Plattformübergreifende Mono Entwicklungsumgebung OpenSource/GPL), ursprünglich ein reiner GTK# Port von SharpDevelop. Benötigt Mono und GTK#
  • SharpDevelop - .NET Entwicklungsumgebung für Windows

Verfasser: hagbard

Persönliche Werkzeuge