Using MonoDevelop on CentOS7


Problem

ドはまりポイントが多々あるので,自分用にメモっておきます。
というか明らかにOpenSuSEなりUbuntuでやったほうがいい。あっちならパッケージもあるし。

環境

CentOS-7.0-1406-x86_64
GnomeDesktop + 基本開発環境パッケージをインストール
gcc gcc-c++ libtool bison autoconf automakeが含まれる
アップデートはかけておく

For CentOS6.5 (14/07/14追記)

6.5でインストールされているautoconf, automake, pkg-configはかなり古く,monodevelopがビルドできません。
rpm -e --nodeps でパッケージのみ削除して,ソースを落としてきてmake installしてください。
あとgitは1.8移行が必要になるので,これも同様に。

Mono

方針

Mono 3.4.0をビルド→Githubからクローン→最新をビルド
githubのをビルドするにはMonoが必要なので。

手順

pre
cd /usr/src
wget http://download.mono-project.com/sources/mono/mono-3.4.0.tar.bz2
tar xjf mono-3.4.0.tar.bz2
cd mono-3.4.0/

アーカイブにはtargetsファイルが不足しているので,作っておく。
githubのクローンから同じファイルをコピーしてもよい。

mcs/tools/xbuild/targets/Microsoft.Portable.Common.targets
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <Import Project="..\Microsoft.Portable.Core.props" />
    <Import Project="..\Microsoft.Portable.Core.targets" />
</Project>
make
./autogen --prefix=/usr
make && make install

libgdiplus

曲者。

手順

libgdiplus
yum install glib2-devel libX11-devel pixman-devel fontconfig-devel freetype-devel libexif-devel libjpeg-devel libtiff-devel libpng-devel giflib-devel

wget http://download.mono-project.com/sources/libgdiplus/libgdiplus-2.10.9.tar.bz2
tar xjf libgdiplus-2.10.9.tar.bz2
cd libgdiplus-2.10.9

ここでsrc/pngcodec.cを下記を参考に修正。
https://bugzilla.xamarin.com/show_bug.cgi?id=1632

configure
export echo=echo
./configure --prefix=/usr

export echo=echo 大事。
さらにtests/Makefileの130行目を以下のように修正。

LIBS = -lpthread -lfontconfig -lglib-2.0 -lX11
make
make && make install

Gtk-sharp

githubからクローンするとGtk3系が対象になっている。MonoDevelopで必要なのはGtk2系なので,アーカイブからビルドする。

手順

gtk-sharp
yum install gtk2-devel libglade2-devel
wget http://download.mono-project.com/sources/gtk-sharp212/gtk-sharp-2.12.21.tar.gz
tar xf gtk-sharp-2.12.21.tar.gz
cd gtk-sharp-2.12.21

ここでPKG_CONFIG_PATH環境変数にプレフィックスを/usrにしたMonoへのパスを通す。

make
echo export PKG_CONFIG_PATH=/usr/lib/pkgconfig:$PKG_CONFIG_PATH>>~/.bash_profile
source ~/.bash_profile

./configure --prefix=/usr
make && make install

Gnome-sharp

うーむ。

手順

pre
yum install pango-devel atk-devel libgnome-devel libgnomecanvas-devel libgnomeui-devel git svn libtool

git clone git://github.com/mono/gnome-sharp
cd gnome-sharp

このままmakeしても成功しない。/usr/bin/gapi2-fixup, /usr/bin/gapi2-codegen をviで開いて,:set ff? の結果が fileformat=DOS になっていたら,

ff
:set fileformat=unix
:wq

と操作する。

make
./bootstrap-2.24 --prefix=/usr
make && make install

Mono Addins

make
git clone git://github.com/mono/mono-addins
cd mono-addins

./autogen.sh --prefix=usr
make && make install

MonoDevelop

やっとたどりついた。

手順

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

./configure --prefix=/usr --profile=stable
make && make install

Results

補足 (14/7/11 追記)

/tmp/nuget ディレクトリに書き込み権限を設定しておかないと,一般ユーザーで使うときにNuGetが使えません。chmod 777でOKです。