MonoDevelop 5.0をソースからビルドしてインストールする手順。 検証に使った環境はUbuntu 14.04 LTS 64bit。

以下の手順では/opt/mono/3.12/にMonoがインストールされているものとし、またMonoDevelopのインストール先も/opt/mono/3.12/としている。

§1 MonoDevelopが必要とするアセンブリのインストール

MonoDevelopが必要とするアセンブリをあらかじめインストールしておく。 必要になるものは以下のアセンブリ。

  • Mono
  • gtk-sharp
  • gecko-sharp

各アセンブリのインストール方法についてはMono 3.12 のビルド・インストールなどを参照のこと。

§2 ソースのダウンロードとconfigure

§2.1 tarballの場合

wget http://download.mono-project.com/sources/monodevelop/monodevelop-5.7.0.660.tar.bz2
tar -xvf ./monodevelop-5.7.0.660.tar.bz2 
cd monodevelop-5.7/

./configure --prefix=/opt/mono/3.12/ --enable-git

configureの結果を確認する。

Configuration summary

   * Installation prefix = /opt/mono/3.12
   * Version = 5.7
   * Version Label = 5.7
   * Compat Version = 5.0
   * C# compiler = /opt/mono/3.12/bin/dmcs
   * Mono class library development extensions: yes
   * Version control providers:
   *     Subversion (Unix): yes
   *     Git: yes
   * Platform bindings: GNOME 
   * Unit tests: no

§2.1.1 MonoDevelop 5.7, NUnitTestRunner.csのビルドで失敗する場合

ビルド前に、以下で紹介されている手順でNUnitのバイナリを用意しておく必要がある。

cd monodevelop-5.7/

mkdir temp
pushd temp

# MonoDevelopのビルド時に必要となるNUnit 2.6バイナリをダウンロードしてソースツリーに配置する
wget https://launchpadlibrarian.net/153448659/NUnit-2.6.3.zip
unzip NUnit-2.6.3.zip
mkdir -p ../packages/NUnit.2.6.3/lib
cp -fR NUnit-2.6.3/bin/framework/* ../packages/NUnit.2.6.3/lib
mkdir -p ../packages/NUnit.Runners.2.6.3/tools/lib
cp -fR NUnit-2.6.3/bin/lib/* ../packages/NUnit.Runners.2.6.3/tools/lib

# cecilのビルド時に必要となるNUnit 2.5バイナリをダウンロードしてソースツリーに配置する
wget https://launchpadlibrarian.net/68057829/NUnit-2.5.10.11092.zip
unzip NUnit-2.5.10.11092.zip
cp -fR NUnit-2.5.10.11092/bin/net-2.0/framework/* ../external/cecil/Test/libs/nunit-2.5.10

# nugetバイナリをソースツリーに配置する
git clone https://github.com/mono/nuget-binary.git
cp -fR nuget-binary/* ../external/nuget-binary/

popd

こののち、configure, makeする。

§2.2 gitからソースを取得する場合

git clone git://github.com/mono/monodevelop.git
cd monodevelop/

--selectオプションをつけて./configureを実行し、ビルドするアドインを選択/解除する。

$ ./configure --prefix=/opt/mono/3.6/ --select

Select the packages to include in the build for the profile 'default':

1. [X] main
2. [ ] extras/JavaBinding
3. [ ] extras/ValaBinding
4. [ ] extras/MonoDevelop.Database
5. [ ] extras/PyBinding
6. [ ] extras/MonoDevelop.MeeGo

Enter the number of an add-in to enable/disable,
(q) quit, (c) clear all, (s) select all, or ENTER to continue:  

Configuring package: main
-------------------------
  :
  :
  :

configureの結果を確認する。

Configuration summary

   * Installation prefix = /opt/mono/3.6
   * Version = 5.2
   * Version Label = 5.2
   * Compat Version = 5.0
   * C# compiler = /opt/mono/3.6/bin/dmcs
   * Mono class library development extensions: yes
   * Version control providers:
   *     Subversion (Unix): yes
   *     Git: yes
   * Platform bindings: GNOME 
   * Unit tests: no

Now type `make' to compile MonoDevelop
Configuration Summary
---------------------

MonoDevelop has been configured with 
    prefix = /opt/mono/3.6/
    profile = default

Packages included in the build:
    main

§3 ビルド、起動

問題が無ければ、makeする。

make

試用したい場合など、ビルドしたものをインストールせずに実行したい場合は、make runするとMonoDevelopが起動する。

make run

起動時に次のようなエラーが発生する場合は、gtk-sharp-2.0のソースを修正する必要がある。 対処法:Mono 3.8 のビルド・インストール §."symbol lookup error"が発生する場合の対処

monodevelop: symbol lookup error: /opt/mono/2.11/lib/libglibsharpglue-2.so: undefined symbol: g_thread_supported

インストールするには、make installする。

sudo make install

§4 NUnitアセンブリの参照の修正

MonoDevelopで単体テストをビルド・実行できない場合がある。 これはMonoDevelopがMonoに同梱されている"mono-nunit"を参照してしまうことが原因。 "nunit 2.4 (Provided by MonoDevelop)"を参照している場合でも、ビルド時には"mono-nunit"が参照されてしまう。 "mono-nunit"はバージョンが2.4.8と古いため、新しいバージョンのNUnit用に書かれたテストコードはビルドに失敗する。

この問題が発生する場合は、pkgconfigを書き換え、MonoDevelopに同梱されているNUnitアセンブリを参照するようにすることで回避できる。

cd /opt/mono/3.8/lib/pkgconfig/
cp mono-nunit.pc mono-nunit.pc.bak
sed "s/mono\/2.0/monodevelop\/AddIns\/NUnit/g" mono-nunit.pc.bak > mono-nunit.pc