I. Introduction▲
Mono est fourni sous forme de package pour les distributions Linux les plus courantes. Mais actuellement chaque nouvelle version n'est pas livrée sous forme d'un binaire qui serait compatible avec n'importe quelle distribution. Or la création des paquets est prise en charge par les mainteneurs des distributions. Ces paquets ne sont recréés que lorsque la distribution publie une nouvelle version, soit environ tous les 6 mois en ce qui concerne la Fedora. La dernière version de Mono n'est donc pas toujours disponible sous forme de paquets pour votre distribution. Nous allons donc voir dans cet article comment installer Mono et MonoDevelop à partir des sources. Ceci ne devrait pas être nécessaire pour l'utilisateur final, mais plutôt pour le développeur voulant profiter des dernières avancées.
I-1. Versions utilisées dans l'article▲
La procédure expliquée dans l'article m'a permis de compiler Mono 2.6.1 et Monodevelop 2.2.1 sur une Fedora 10. La procédure devrait être la même pour une version plus récente de la Fedora. Peut-être qu'il vous aidera aussi pour compiler Mono sur une autre distribution.
I-2. Prérequis▲
MonoDevelop étant basé sur Gtk#, qui est un binding en .Net de Gtk, son installation requiert de nombreuses librairies faisant partie de Gnome. Je considère dans l'article que Gnome est déjà installé sur votre machine. Si vous n'avez installé que Kde ou un autre environnement graphique, installez d'abord Gnome avant d'appliquer la procédure, à moins que vous ne vouliez installer que le framework Mono sans l'IDE, auquel cas vous n'avez pas besoin de Gnome. En revanche, j'explique comment installer les outils de compilation si vous ne les avez pas déjà.
II. Installation des outils de compilation et des fichiers d'en-tête▲
II-1. Les outils de compilation▲
Commencez par ouvrir un terminal, puis logguez-vous en root (commmande "su"). Vous devrez rester loggué en root pendant toute la procédure.
Pour compiler il vous faut les compilateurs gcc et gcc-c++, ainsi que make, autoconf et automake. Sous Fedora, pour savoir s'ils sont déjà installés, vous pouvez utiliser la commande rpm:
[root@localhost Romain]$
rpm -q gcc gcc-c++ make autoconf automake
gcc-4
.3
.2
-7
.i386
gcc-c++-4
.3
.2
-7
.i386
make-3
.81
-14
.fc10.i386
autoconf-2
.63
-1
.fc10.noarch
automake-1
.10
.1
-2
.noarch
La commande ci-dessus affichera les versions des paquets s'ils sont déjà installés. Si vous n'avez pas l'un de ces paquets, vous pouvez l'installer via la commande yum qui le téléchargera depuis les dépôts et l'installera. Par exemple, si vous n'avez aucun de ces 5 paquets déjà installés, faites:
[root@localhost Romain]$
yum install gcc gcc-c++ make autoconf automake
En installant gcc, yum vous installera automatiquement ses dépendances, dont glibc-devel et glibc-headers, qui vous seront également nécessaires pour la compilation.
II-2. Les fichiers d'en-tête▲
La compilation nécessite de nombreux fichiers d'en-tête contenus dans des paquets dont le nom, par convention, se termine par -devel. Vous devez donc installer tous ces paquets:
- gtk2-devel
- libglade2-devel
- libtiff-devel
- giflib-devel
- libjpeg-devel
- libpng-devel
- libexif-devel
- gtksourceview-devel
Les paquets suivants sont indiqués comme optionnels, ils vous permettront d'accéder en .Net à des bindings de certaines librairies liées à Gnome et Gtk. Je n'ai pas testé la compilation sans inclure ces paquets, dans le doute mieux vaut les installer:
- libart_lgpl-devel
- gnome-vfs2-devel
- gnome-desktop-devel
- gnome-panel-devel
- gtkhtml3-devel
- gtksourceview2-devel
- nautilus-cd-burner-devel
- lignomeprintui22-devel (ce qui installera automatiquement sa dépendance libgnomeprint22-devel)
- vte-devel
- librsvg2-devel
- libwnck-devel
- libXres-devel (doit être installé si vous installez libwnck-devel. Devrait être installé automatiquement par libwnck-devel, mais ce n'est pas le cas sur Fedora 10 à cause d'une erreur dans les dépendances)
III. Téléchargement des sources et extraction des archives▲
III-1. Où sont les sources ?▲
Les sources de la dernière version stable sont téléchargeables à cette adresse : http://ftp.novell.com/pub/mono/sources-stable/
Il se peut qu'il y ait une version plus récente de MonoDevelop et de ses composants sur sa page de téléchargement dédiée.
Voici l'ensemble des composants à télécharger qui vont être compilés dans cet article, dans l'ordre dans lequel ils doivent être compilés :
Source | Description |
---|---|
libgdiplus | Implémentation de GDI+. |
mono | Implémentation du framwork .Net. |
gtk-sharp | Binding .Net de Gtk+. |
mono-addins | Ensemble de classes permettant la création d'applications extensibles, utilisé par MonoDevelop. |
gecko-sharp | Permet d'embarquer le moteur de rendu Gecko dans les applications Gtk#. |
gnome-sharp | Binding de Gnome utilisé par MonoDevelop. |
gnome-desktop-sharp | Binding de Gnome utilisé par MonoDevelop. |
gtksourceview-sharp | Binding du widget Gtksourceview, utilisé par MonoDevelop. |
monodevelop | L'IDE pouvant supporter les langages C#, Visual Basic.Net, C/C++ et Vala. |
mono-debugger | Le débugger de Mono. |
mono-debugger-gdb | Pour déboguer les applications natives. |
mono-debugger-mdb | Pour déboguer les applications managées. |
III-2. Extraire les archives▲
Pour extraire les archives, vous pouvez le faire avec un outil graphique comme File Roller, ou bien en ligne de commande, avec tar -xjf <nom de l'archive>.bz2 pour les archives d'extension tar.bz2 et avec unzip <nom de l'archive>.zip pour les archives d'extension .zip.
IV. La compilation et l'installation▲
IV-1. L'installation de Mono▲
Lors de l'installation d'un paquet de votre distribution, les fichiers sont extraits dans les différents répertoires de l'arborescence standard des systèmes Unix. C'est-à-dire qu'une partie des fichiers de l'application sera dans /usr/lib, une autre dans /usr/bin, etc...
Ici nous allons installer Mono et MonoDevelop dans le répertoire /usr/mono. Ainsi, tous les fichiers concernant Mono seront dans un sous-répertoire de /usr/mono. Bien sûr, vous pouvez choisir un autre répertoire. Ainsi, si vous choisissez /usr, les fichiers seront installés dans les différents sous-répertoires standards de /usr, un peu comme le ferait un paquet de votre distribution.
Commençons donc par créer le répertoire où Mono sera installé:
[root@localhost Romain]$
mkdir /usr/mono
Nous pouvons compiler le premier composant, libgdiplus. On se place dans le répertoire contenant les fichiers extraits :
[root@localhost mono]$
cd libgdiplus-2
.6
Ensuite on exécute ces trois commandes:
[root@localhost mono]$
./configure --prefix
=
/usr/mono
[root@localhost mono]$
make
[root@localhost mono]$
make install
La première commande prépare la compilation, la deuxième compile et la dernière copie les fichiers dans le répertoire d'installation. L'argument --prefix passé à la première commande indique dans quel répertoire Mono va être installé. Indiquez le bon répertoire si vous en avez choisi un autre.
L'installation de Mono se fait de la même façon, excepté que la compilation dure cette fois de 10 à 15 minutes environ:
[root@localhost mono]$
cd ../mono-2
.6
.1
[root@localhost mono]$
./configure --prefix
=
/usr/mono
[root@localhost mono]$
make
[root@localhost mono]$
make install
IV-2. L'installation de MonoDevelop▲
Les prochains composants que nous allons compiler sont liés aux assemblies de Mono. Le script configure utilise la commande pkgconfig pour retrouver dans quels répertoires ces assemblies sont situés. Si vous avez installé Mono dans le répertoire /usr/mono, ces fichiers sont dans le répertoire /usr/mono/lib/pkgconfig. Parce que ce répertoire n'est pas standard, contrairement à /usr/lib/pgkconfig, nous devons l'ajouter dans la variable d'environnement PKG_CONFIG_PATH.
Nous devons également ajouter le répertoire /usr/mono/bin dans la variable PATH, car certaines commandes qui s'y trouvent vont être utilisées par les scripts d'installation de Gtk#.
Voici les commandes nécessaires pour modifier ces deux variables:
[root@localhost mono]$
export PKG_CONFIG_PATH
=
/usr/mono/lib/pkgconfig:$PKG_CONFIG_PATH
[root@localhost mono]$
export PATH
=
/usr/mono/bin:$PATH
Ces modifications sont temporaires, elles seront perdues au prochain redémarrage du système. Modifier leurs valeurs pour le compte root le temps de la compilation suffit. Mais nous verrons à la fin de cet article comment configurer les variables d'environnement nécessaires à l'utilisation de Mono de façon définitive.
Ensuite nous pouvons compiler et installer Gtk#, toujours selon le même principe:
[root@localhost mono]$
cd ../gtk-sharp-2
.12
.9
[root@localhost mono]$
./configure --prefix
=
/usr/mono
[root@localhost mono]$
make
[root@localhost mono]$
make install
Puis Mono.Addins. Cette fois-ci nous passons deux options supplémentaires au script configure:
[root@localhost mono]$
cd ../mono-addins-0
.4
[root@localhost mono]$
./configure --prefix
=
/usr/mono --enable-gui --enable-tests
[root@localhost mono]$
make
[root@localhost mono]$
make install
Ensuite, en utilisant les mêmes commandes que pour gtk-sharp, vous pouvez installer les composants suivants:
- gecko-sharp
- gnome-sharp
- gnome-desktop-sharp
- gtksourceview-sharp
Puis nous passons à l'IDE MonoDevelop:
[root@localhost mono]$
cd ../monodevelop-2
.2
.1
[root@localhost mono]$
./configure --prefix
=
/usr/mono --enable-tests
[root@localhost mono]$
make
[root@localhost mono]$
make install
Enfin, nous installons avec les commandes classiques ./configure --prefix=/usr/mono, make et make install le débugger de Mono et les composants du débugger de MonoDevelop:
- mono-debugger
- monodevelop-debugger-gdb
- monodevelop-debugger-mdb
IV-3. Variables d'environnement nécessaires▲
L'installation est maintenant terminée. Mais nous avons installé Mono dans un répertoire non standard. Pour cette raison, nous devons configurer quelques variables d'environnement de telle sorte qu'elles aient les bonnes valeurs à chaque démarrage du système. Ouvrez avec votre éditeur favori le fichier .bashrc qui est dans le répertoire de l'utilisateur sous lequel vous allez utiliser Mono, par exemple /home/Romain/.bashrc et ajoutez-y les lignes suivantes :
export PATH
=
/usr/mono/bin:$PATH
export MANPATH
=
/usr/mono/share/man:$MANPATH
export LD_LIBRARY_PATH
=
/usr/mono/lib:$LD_LIBRARY_PATH
La 1ère ligne permet d'exécuter les commandes de Mono sans être obligé de préciser le chemin complet. La 2ème est pour l'accès aux pages de man, la 3ème est indispensable pour que l'exécution d'une application Mono soit possible dans notre cas, les librairies ne se trouvant pas dans un répertoire standard. Ces lignes doivent être adaptées si vous avez installé Mono dans un autre répertoire que /usr/mono.