2010-05-03T08:14:21の更新内容

programming/mono/install_trunk/index.wiki.txt

current previous
1,29 1,31
 
${smdncms:title,Monoのインストール (svn trunkから)}
${smdncms:title,Monoのインストール (svn trunkから)}
 
${smdncms:keywords,Mono,trunk,ビルド,インストール}
${smdncms:keywords,Mono,trunk,ビルド,インストール}
~
[[Mono:http://www.mono-project.com/Main_Page]]をsvn trunkのソースからビルドしてインストールする手順。 ビルドに使用した環境はUbuntu 10.04 Desktop。 本文は2010年05月02日現在のバージョンに基づく。
[[Mono:http://www.mono-project.com/Main_Page]]をsvn trunkのソースからビルドしてインストールする手順。 ビルドに使用した環境はUbuntu 9.10 Desktop。 本文は2010年04月20日現在のバージョンに基づく。
 

        

        
 
-関連するページ
-関連するページ
 
--[[programming/mono]]
--[[programming/mono]]
 

        

        
+
ここで紹介する手順はMono本体といくつかのアセンブリをインストールするためのもの。 ディストリビューションが提供しているバージョンのMonoと共存できるようにするため、/opt/mono/trunkにインストールする。
+

          
+
1つの環境に複数のMonoをインストールする方法については[[Parallel Mono Environments - Mono:http://www.mono-project.com/Parallel_Mono_Environments]]で詳しく解説されている。
+

          
 
ビルドにはgcc、libtool、autotools、gettext、pkg-config等が必要になるので、あらかじめインストールしておく必要がある。
ビルドにはgcc、libtool、autotools、gettext、pkg-config等が必要になるので、あらかじめインストールしておく必要がある。
 

        

        
 
*libgdiplus
*libgdiplus
~
**依存するパッケージのインストール
-依存するパッケージ類
~
#code(sh){{
--libcairo2-dev
~
sudo apt-get install \
--libexif-dev
~
libcairo2-dev libexif-dev libfreetype6-dev libfontconfig1-dev libgif-dev libglib2.0-dev libjpeg62-dev \
--libfreetype6-dev
~
libpng12-dev libtiff4-dev libungif4-dev libx11-dev libxrender-dev
--libfontconfig1-dev
~
}}
--libglib2.0-dev
-
--libjpeg62-dev
-
--libpng12-dev
-
--libtiff4-dev
-
--libungif4-dev
-
--libx11-dev
-
--libxrender-dev
 

        

        
~
**ソースのチェックアウトとautogen、configure
ソースのチェックアウトとautogen、configure。
 
#code(sh){{
#code(sh){{
 
svn co svn://anonsvn.mono-project.com/source/trunk/libgdiplus
svn co svn://anonsvn.mono-project.com/source/trunk/libgdiplus
 
cd ./libgdiplus
cd ./libgdiplus
~
./autogen.sh --prefix=/opt/mono/trunk
./autogen.sh --prefix=/usr/local
 
}}
}}
 

        

        
 
configureの結果例。
configureの結果例。
31,8 33,8
 
---
---
 
Configuration summary
Configuration summary
 

        

        
~
   * Installation prefix = /opt/mono/trunk
   * Installation prefix = /usr/local
~
   * Cairo = 1.8.10 (system)
   * Cairo = 1.8.8 (system)
 
   * Text = cairo
   * Text = cairo
 
   * EXIF tags = yes
   * EXIF tags = yes
 
   * Codecs supported:
   * Codecs supported:
49,7 51,6
 
Now type `make' to compile
Now type `make' to compile
 
}}
}}
 

        

        
+
**ビルド、インストール
 
configureした結果に問題が無ければmake、make installする。
configureした結果に問題が無ければmake、make installする。
 
#code(sh){{
#code(sh){{
 
make
make
58,22 59,23
 

        

        
 
正しくインストールできたか確認する。
正しくインストールできたか確認する。
 
#code(sh){{
#code(sh){{
~
ls -l /opt/mono/trunk/lib/libgdiplus*
ls `pkg-config --variable=libdir libgdiplus`
 
}}
}}
 

        

        
 
*Mono本体(コンパイラ、クラスライブラリ)
*Mono本体(コンパイラ、クラスライブラリ)
~
**依存するパッケージのインストール
-依存するパッケージ類
~
#code(sh){{
--bison
~
sudo apt-get install \
--libgdiplus
~
bison
-コンパイルに関するドキュメント
~
}}
--[[Compiling Mono From SVN - Mono:http://www.mono-project.com/Compiling_Mono_From_SVN]]
-
--[[Advanced Mono Compile Options - Mono:http://www.mono-project.com/Advanced_Mono_Compile_Options]]
-
--[[Unsupported Advanced Mono Compile Options - Mono:http://www.mono-project.com/Unsupported_Advanced_Mono_Compile_Options]]
 

        

        
~
**ソースのチェックアウトとautogen、configure
ソースのチェックアウトとautogen、configure。 .NET Framework 4のアセンブリを含めない場合は、--with-profile4=noを指定する。
+
.NET Framework 4のアセンブリを含めない場合は、--with-profile4=noを指定する。
 
#code(sh){{
#code(sh){{
 
svn co svn://anonsvn.mono-project.com/source/trunk/mono svn://anonsvn.mono-project.com/source/trunk/mcs
svn co svn://anonsvn.mono-project.com/source/trunk/mono svn://anonsvn.mono-project.com/source/trunk/mcs
 
cd mono
cd mono
~
./autogen.sh --prefix=/opt/mono/trunk --with-libgdiplus=installed --with-ikvm-native=no --with-moonlight=yes --with-monotouch=no --with-mcs-docs=no --with-x
./autogen.sh --prefix=/usr/local --with-libgdiplus=installed --with-large-heap=yes --with-ikvm-native=no --with-moonlight=yes --with-mcs-docs=no --with-x
 
}}
}}
 

        

        
 
configureの結果例。
configureの結果例。
83,7 85,7
 

        

        
 
   Engine:
   Engine:
 
	GC:	       included
	GC:	       included
~
	GLIB:	       embedded
	GLIB:	       system
 
	TLS:           __thread
	TLS:           __thread
 
	SIGALTSTACK:   yes
	SIGALTSTACK:   yes
 
	Engine:        Building and using the JIT
	Engine:        Building and using the JIT
104,11 106,6
 
Now type `make' to compile
Now type `make' to compile
 
}}
}}
 

        

        
+
-コンパイルオプションに関するドキュメント
+
--[[Advanced Mono Compile Options - Mono:http://www.mono-project.com/Advanced_Mono_Compile_Options]]
+
--[[Unsupported Advanced Mono Compile Options - Mono:http://www.mono-project.com/Unsupported_Advanced_Mono_Compile_Options]]
+

          
+
**ビルド、インストール
 
コンパイルする環境にMonoおよびmcsがない場合は、makeする前に最新のMonoLite([[Mono Daily Packages:http://mono.ximian.com/daily/]])を取得しておく。
コンパイルする環境にMonoおよびmcsがない場合は、makeする前に最新のMonoLite([[Mono Daily Packages:http://mono.ximian.com/daily/]])を取得しておく。
 
#code(sh){{
#code(sh){{
 
make get-monolite-latest
make get-monolite-latest
127,15 124,11
 
sudo make install
sudo make install
 
}}
}}
 

        

        
+
-コンパイルに関するドキュメント
+
--[[Compiling Mono From SVN - Mono:http://www.mono-project.com/Compiling_Mono_From_SVN]]
+

          
 
**動作確認
**動作確認
~
***新しくMonoをインストールした場合
インストールが完了したら、mono -Vでmonoが動作することを確認する。
+
mono -Vでmonoが動作することを確認する。
 
#prompt{{
#prompt{{
 
$ mono -V
$ mono -V
~
Mono JIT compiler version 2.7 (/trunk/mono r156582 2010年  5月  2日 日曜日 17:48:25 JST)
Mono JIT compiler version 2.7 (/trunk/mono r155738 2010年  4月 20日 火曜日 02:01:54 JST)
 
Copyright (C) 2002-2010 Novell, Inc and Contributors. www.mono-project.com
Copyright (C) 2002-2010 Novell, Inc and Contributors. www.mono-project.com
 
	TLS:           __thread
	TLS:           __thread
 
	GC:            Included Boehm (with typed GC and Parallel Mark)
	GC:            Included Boehm (with typed GC and Parallel Mark)
147,56 140,9
 
	LLVM supported
	LLVM supported
 
}}
}}
 

        

        
~
***既に別のバージョンのMonoが存在する環境にインストールした場合
またgacutil -lでアセンブリがGACに登録されていることを確認する。
+
新しく/opt/monoにインストールしたMonoを参照できるように、環境変数を設定するスクリプトを用意しておく。 参考: [[Parallel Mono Environments - Mono:http://www.mono-project.com/Parallel_Mono_Environments]]
+
#code(sh,mono-trunk-env){{
+
#!/bin/bash
+
MONO_PREFIX=/opt/mono/trunk
+
export DYLD_LIBRARY_PATH=$MONO_PREFIX/lib:$DYLD_LIBRARY_PATH
+
export LD_LIBRARY_PATH=$MONO_PREFIX/lib:$LD_LIBRARY_PATH
+
export C_INCLUDE_PATH=$MONO_PREFIX/include
+
export ACLOCAL_PATH=$MONO_PREFIX/share/aclocal
+
export PKG_CONFIG_PATH=$MONO_PREFIX/lib/pkgconfig
+
PATH=$MONO_PREFIX/bin:$PATH
+
}}
+

          
+
まずmono -Vで既にインストールされているmonoが動作することを確認する。
 
#prompt{{
#prompt{{
~
$ which mono
$ gacutil -l
+
/usr/bin/mono
+
$ mono -V
+
Mono JIT compiler version 2.4.4 (Debian 2.4.4~svn151842-1ubuntu4)
+
Copyright (C) 2002-2010 Novell, Inc and Contributors. www.mono-project.com
+
	TLS:           __thread
+
	GC:            Included Boehm (with typed GC)
+
	SIGSEGV:       altstack
+
	Notifications: epoll
+
	Architecture:  x86
+
	Disabled:      none
+
}}
+

          
+
続いて、先ほど用意したスクリプトを読み込んだあとでmono -Vを実行し、新しくインストールしたmonoが動作することを確認する。
+
#prompt{{
+
$ source mono-trunk-env
+
$ which mono
+
/opt/mono/trunk/bin/mono
+
$ mono -V
+
Mono JIT compiler version 2.7 (/trunk/mono r156582 2010年  5月  2日 日曜日 17:48:25 JST)
+
Copyright (C) 2002-2010 Novell, Inc and Contributors. www.mono-project.com
+
	TLS:           __thread
+
	GC:            Included Boehm (with typed GC and Parallel Mark)
+
	SIGSEGV:       altstack
+
	Notifications: epoll
+
	Architecture:  x86
+
	Disabled:      none
+
	Misc:          debugger softdebug 
+
	LLVM supported
+
}}
+

          
+
***GAC
+
gacutil -lでアセンブリがGACに登録されていることを確認する。 GACのパスを明示的に指定する場合は-rootオプションで指定する(例えばgacutil2 -l -root /usr/lib/など)。
+
#prompt{{
+
$ gacutil2 -l 
 
The following assemblies are installed into the GAC:
The following assemblies are installed into the GAC:
 
  :
  :
 
System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
213,7 159,6
 
  :
  :
 
}}
}}
 

        

        
+
***gmcs (2.0ランタイム用C#コンパイラ)
 
gmcs --aboutでgmcsのバージョンを確認する。
gmcs --aboutでgmcsのバージョンを確認する。
 
#prompt{{
#prompt{{
 
$ gmcs --about
$ gmcs --about
228,41 173,6
 
The compiler was written by Miguel de Icaza, Ravi Pratap, Martin Baulig, Marek Safar, Raja R Harinath, Atushi Enomoto
The compiler was written by Miguel de Icaza, Ravi Pratap, Martin Baulig, Marek Safar, Raja R Harinath, Atushi Enomoto
 
}}
}}
 

        

        
+
***dmcs (4.0ランタイム用C#コンパイラ)
+
C# 4.0よりサポートされる機能を含むコードがコンパイル出来るかどうか試す。
+
#code(cs,test.cs){{
+
using System;
+

          
+
class Test {
+
  static void Print(int x = 1, int y = 2, int z = 3)
+
  {
+
    Console.WriteLine("x: {0}", x);
+
    Console.WriteLine("y: {0}", y);
+
    Console.WriteLine("z: {0}", z);
+
    Console.WriteLine();
+
  }
+

          
+
  public static void Main()
+
  {
+
    Print(x: 17, z: 23);
+
    Print();
+
  }
+
}
+
}}
+

          
+
#prompt(実行結果){{
+
$ dmcs test.cs && mono test.exe
+
x: 17
+
y: 2
+
z: 23
+

          
+
x: 1
+
y: 2
+
z: 3
+

          
+
}}
+

          
+
***csharp(C#シェル)
 
csharpシェルが動作するか確認する。
csharpシェルが動作するか確認する。
 
#prompt{{
#prompt{{
 
$ csharp
$ csharp
270,28 180,25
 

        

        
 
Enter statements below.
Enter statements below.
 
csharp> Console.WriteLine(Environment.Version);
csharp> Console.WriteLine(Environment.Version);
~
4.0.30319.1
4.0.21006.1
 
csharp> Console.WriteLine(Environment.OSVersion);
csharp> Console.WriteLine(Environment.OSVersion);
~
Unix 2.6.32.21
Unix 2.6.31.20
 
csharp> quit;
csharp> quit;
 
null
null
 
}}
}}
 

        

        
~
----
*gluezilla
~

          
-依存するパッケージ類
~
*その他のアセンブリ・ライブラリ
--libgtk2.0-dev
~
**gluezilla
--libnss3-dev
~
依存するパッケージのインストール。
--libnspr4-dev
~
#code(sh){{
--libxul-devもしくはxulrunner-dev
+
sudo apt-get install \
+
libgtk2.0-dev libnss3-dev libnspr4-dev xulrunner-dev
+
}}
 

        

        
 
ソースのチェックアウトとautogen、configure。
ソースのチェックアウトとautogen、configure。
 
#code(sh){{
#code(sh){{
 
svn co svn://anonsvn.mono-project.com/source/trunk/gluezilla
svn co svn://anonsvn.mono-project.com/source/trunk/gluezilla
~
cd ./gluezilla/
cd ./gluezilla
~
./autogen.sh --prefix=/opt/mono/trunk
./autogen.sh --prefix=/usr/local
 
}}
}}
 

        

        
 
configureの結果例。
configureの結果例。
311,7 218,7
 
sudo make install
sudo make install
 
}}
}}
 

        

        
~
***gluezillaの動作テスト
**gluezillaの動作テスト
 
gluezillaが動作するかテストしたい場合は、tests/browser/にあるテスト用のアプリケーションをビルド・起動して動作を確認できる。
gluezillaが動作するかテストしたい場合は、tests/browser/にあるテスト用のアプリケーションをビルド・起動して動作を確認できる。
 

        

        
 
まず、ldconfigでライブラリのリンク・キャッシュを再構成する。
まず、ldconfigでライブラリのリンク・キャッシュを再構成する。
331,24 238,22
 

        

        
 
修正後、make testでテスト用のアプリケーションが起動する。 起動するとウィンドウが開くので、アドレスバーに適当なURLを入れてページが表示されるか確認する。
修正後、make testでテスト用のアプリケーションが起動する。 起動するとウィンドウが開くので、アドレスバーに適当なURLを入れてページが表示されるか確認する。
 

        

        
~
**Mono.Addins
*Mono.Addins
~
gtk-sharp-2.0が必要になるので、別途ビルドするかパッケージをインストールする。
-依存するパッケージ類
~
#code(sh){{
--gtk-sharp-2.0
+
sudo apt-get install gtk-sharp2
+
}}
 

        

        
 
ソースのチェックアウトとautogen、configure。
ソースのチェックアウトとautogen、configure。
 
#code(sh){{
#code(sh){{
 
svn co svn://anonsvn.mono-project.com/source/trunk/mono-addins
svn co svn://anonsvn.mono-project.com/source/trunk/mono-addins
 
cd mono-addins/
cd mono-addins/
~
./autogen.sh --prefix=/opt/mono/trunk
./autogen.sh
 
}}
}}
 

        

        
 
configureの結果例。
configureの結果例。
 
#prompt{{
#prompt{{
 
Configuration summary
Configuration summary
 

        

        
~
   * Installation prefix = /opt/mono/trunk
   * Installation prefix = /usr/local
 
   * gui support: yes
   * gui support: yes
 
   * unit tests: no
   * unit tests: no
 
   * documentation: no
   * documentation: no
360,22 265,20
 
sudo make install
sudo make install
 
}}
}}
 

        

        
~
**mono-tools
*mono-tools
~
gtk-sharp-2.0, gnome-sharp(2.0または3.14)が必要になるので、別途ビルドするかパッケージをインストールする。
-依存するパッケージ類
~
#code(sh){{
--gtk-sharp-2.0
~
sudo apt-get install gtk-sharp2 gnome-sharp2
--gnome-sharp(2.0または3.14)
~
}}
-オプションで参照されるパッケージ類
~

          
--gecko-sharp
~
また、オプションで以下のパッケージも参照されるので、必要ならインストールしておく。
--gtkhtml-sharp
~
-gecko-sharp
--webkit-sharp
+
-gtkhtml-sharp
+
-webkit-sharp
 

        

        
 
ソースのチェックアウトとautogen、configure。
ソースのチェックアウトとautogen、configure。
 
#code(sh){{
#code(sh){{
 
svn co svn://anonsvn.mono-project.com/source/trunk/mono-tools
svn co svn://anonsvn.mono-project.com/source/trunk/mono-tools
 
cd mono-tools/
cd mono-tools/
~
./autogen.sh --prefix=/opt/mono/trunk/
./autogen.sh
 
}}
}}
 

        

        
 
configureの結果例。
configureの結果例。
383,9 286,9
 
---
---
 
Configuration summary
Configuration summary
 

        

        
~
   * Installation prefix = /opt/mono/trunk
   * Installation prefix = /usr/local
~
   * Using Gecko = no
   * Using Gecko = yes
~
   * Using GtkHtml = no
   * Using GtkHtml = yes
 
   * Using Mono.WebBrowser = yes
   * Using Mono.WebBrowser = yes
 
   * Using WebKit = no
   * Using WebKit = no
 
   * Using Gnome = yes
   * Using Gnome = yes
401,75 304,15
 
sudo make install
sudo make install
 
}}
}}
 

        

        
~
リビジョン156593の時点では、Gendarmeとgsharpがビルドできないようなので、以下の箇所を修正した。
*mono-debugger
~
#code(diff,Gendarme){{
-依存するパッケージ類
~
Index: gendarme/framework/Gendarme.Framework.Helpers/MethodSignature.cs
--libncurses5-dev
+
===================================================================
+
--- gendarme/framework/Gendarme.Framework.Helpers/MethodSignature.cs
+
+++ gendarme/framework/Gendarme.Framework.Helpers/MethodSignature.cs
+
@@ -49,7 +49,7 @@
+
 	/// }
+
 	/// </code>
+
 	/// </example>
+
-	/// <seealso cref="Gendarme.Framework.Helpers.MethodSignatures"/>
+
+	// <seealso cref="Gendarme.Framework.Helpers.MethodSignatures"/>
+
 	public class MethodSignature {
+
 
+
 		/// <summary>
+
Index: gendarme/framework/Gendarme.Framework.Helpers/MethodSignatures.cs
+
===================================================================
+
--- gendarme/framework/Gendarme.Framework.Helpers/MethodSignatures.cs
+
+++ gendarme/framework/Gendarme.Framework.Helpers/MethodSignatures.cs
+
@@ -37,7 +37,7 @@
+
 	/// <summary>
+
 	/// Defines commonly used MethodSignatures
+
 	/// </summary>
+
-	/// <see cref="Gendarme.Framework.Helpers.MethodSignature"/>
+
+	// <see cref="Gendarme.Framework.Helpers.MethodSignature"/>
+
 	public static class MethodSignatures {
+
 		private static readonly string [] NoParameter = new string [0];
+
 
+
@@ -50,7 +50,7 @@
+
 		// System.Object
+
 		public static readonly new MethodSignature Equals = new MethodSignature ("Equals", "System.Boolean", new string [] { "System.Object" },
+
 			(method) => (CheckAttributes (method, MethodAttributes.Public)));
+
-		public static readonly MethodSignature Finalize = new MethodSignature ("Finalize", "System.Void", NoParameter,
+
+		public static readonly new MethodSignature Finalize = new MethodSignature ("Finalize", "System.Void", NoParameter,
+
 			(method) => (CheckAttributes (method, MethodAttributes.Family)));
+
 		public static readonly new MethodSignature GetHashCode = new MethodSignature ("GetHashCode", "System.Int32", NoParameter,
+
 			(method) => (CheckAttributes (method, MethodAttributes.Public | MethodAttributes.Virtual)));
+
}}
+

          
+
#code(diff,gsharp){{
+
Index: gsharp/Shell.cs
+
===================================================================
+
--- gsharp/Shell.cs
+
+++ gsharp/Shell.cs
+
@@ -72,7 +72,7 @@
+
 			Buffer.InsertWithTagsByName (ref end, "Mono C# Shell, type 'help;' for help\n\nEnter statements or expressions below.\n", "Comment");
+
 			ShowPrompt (false);
+
 
+
-			Evaluator.InteractiveBaseClass = typeof (InteractiveGraphicsBase);
+
+			//Evaluator.InteractiveBaseClass = typeof (InteractiveGraphicsBase);
+
 			Evaluator.Run ("LoadAssembly (\"System.Drawing\");");
+
 			Evaluator.Run ("using System; using System.Linq; using System.Collections; using System.Collections.Generic; using System.Drawing;");
+
}}
+

          
+
gsharpの方はこの修正で正しく動作するか未検証。
+

          
+
**mono-debugger
+
以下は2010年04月20日現在のバージョンでの手順。
+

          
+
依存するパッケージのインストール。
+
#code(sh){{
+
sudo apt-get install libncurses5-dev
+
}}
 

        

        
 
ソースのチェックアウトとautogen、configure。
ソースのチェックアウトとautogen、configure。
 
#code(sh){{
#code(sh){{
 
svn co svn://anonsvn.mono-project.com/source/trunk/debugger mono-debugger
svn co svn://anonsvn.mono-project.com/source/trunk/debugger mono-debugger
 
cd mono-debugger
cd mono-debugger
~
./autogen.sh --prefix=/opt/mono/trunk
./autogen.sh
 
}}
}}
 

        

        
 
configureの結果に問題が無ければ、make、make installする。
configureの結果に問題が無ければ、make、make installする。
480,7 323,7
 

        

        
 
*メモ
*メモ
 
**Ubuntu 9.10 Server用
**Ubuntu 9.10 Server用
~
Ubuntu 9.10 Serverインストール直後の状態から、JITコンパイラ・C#コンパイラ・ランタイム(.NET 4含まず)のみをビルド・インストールする手順。 2009年11月01日現在のバージョンに基づく。
Ubuntu 9.10 Serverインストール直後の状態から、JITコンパイラ・C#コンパイラ・ランタイム(.NET 4含まず)のみをビルド・インストールする手順。
 
#prompt{{
#prompt{{
 
$ sudo apt-get install build-essential bison autoconf automake1.9 libtool libglib2.0-dev gettext
$ sudo apt-get install build-essential bison autoconf automake1.9 libtool libglib2.0-dev gettext
 
$ svn co svn://anonsvn.mono-project.com/source/trunk/mono svn://anonsvn.mono-project.com/source/trunk/mcs
$ svn co svn://anonsvn.mono-project.com/source/trunk/mono svn://anonsvn.mono-project.com/source/trunk/mcs