Monodevelop 3.0.1 をソースからビルドした

トップをねらえ2! Blu-ray Box Complete Edition
統合開発環境「MonoDevelop 3.0」が公開、C#コードの自動補完エンジンが刷新 - 窓の杜
MonoDevelop | MonoDevelop
Ubuntu 12.04で使えるMonoDevelopは「2.8.6.3」。最新のMonoDevelop 3.0.1をソースコードからインストールしてみた。

MonoDevelop最新版を導入するにあたり導入したパッケージ

READMEに書いてあったので入れたものと、./configure実行時のエラーで求められたものを順次探しながらこれだけのパッケージを追加した。

$ sudo apt-get install \
mono-gmcs \
mono-addins-utils \
libmono-addins-msbuild0.2-cil \
libmono-addins-gui-cil-dev \
libmono-addins-cil-dev \
libmono-addins-msbuild-cil-dev \
gnome-sharp2

すでにMonoDevelopがインストール済みであるため、これだけで済んでいると思われる。

公式サイトのtar.gzのソースだとエラーがでる

MonoDevelop公式サイトにあるtar.gzファイルを取得して./configureを実行すると、次のようなエラーが出てしまう。

error: cannot find input file:`src/addins/MonoDevelop.CodeMetrics/Makefile.in'

確かにそういうディレクトリは存在しなかった。

このあたりのフォーラムの情報だと、configureファイルを編集しながらリトライしているけど、githubにあるソースを使えばこの問題は回避できたので、そうした。どう内容が違うのかは確認していないが、たぶんconfigureの記述が違うのかな。

git clone git://github.com/mono/monodevelop.git -b 3.0-series

./configureを実行する

既存のMonoDevelopを削除する気がなかったこと、競合等の問題を回避する自信がないこと、試しに入れたいだけだということで、ホームディレクトリ配下に作ってあるusrディレクトリ以下へインストールすることにした。
ソースがあるディレクトリへ移動して次のコマンドを実行

$ ./configure prefix=/home/kosuke/usr

ただ、設定ファイル等は「~/.config」以下にある同じものを使ってしまっているようなので、これが問題になることがあるかもしれない。ほとんど設定は変えていないので、いざとなければファイル作りなおせばいいかと考えている。

make, make installを実行

./configureを実行したあと、同じディレクトリでmakeを実行する。

$ make

./configureでエラーがでなくなっていたし、難なく終わる。10分もかからなかったと思う。

makeが完了したら次はmake installでファイルを配置。インストール先をホームディレクトリ以下にしてあるので、「sudo」は不要。

$ make install

これで「home/username/usr」以下にある「bin」と「lib」にファイルが展開される。これでインストールは完了。

起動を確認する

さっそく起動できるかを試すため、「~/usr/bin」へ移動してmonodevelopを実行……、しかしエラーがでてしまった。

~/usr/bin$ ./monodevelop 
Cannot open assembly './monodevelop/lib/monodevelop/bin/MonoDevelop.exe': ディレクトリではありません.

ファイルマネージャからインストールしたディレクトリを開いて、「monodevelop」(bashスクリプト)を実行したところ、ちゃんと起動できた。まあ、これでいいか。

ヘルプ->Aboutからバージョンが3.0.1になっていることを確認。

apt-getでインストールして使っているMonoDevelopに特に不満があるわけではないので、ソースからインストールしたmonodevelopを使い続ける予定はない。リポジトリからインストールできるようになったらそっちに差し替えるつもり。
この記事を参考にしていただけたら嬉しいけど、ホームディレクトリ以下に入れていることから実運用向けではないので、基本的にはREADMEをよく読んで実施する方向でオナシャス。