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が必要なので。
###手順
```bash: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のクローンから同じファイルをコピーしてもよい。

```xml: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>
```

```bash:make
./autogen --prefix=/usr
make && make install
```

##libgdiplus
曲者。
###手順
```bash: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

```bash:configure
export echo=echo
./configure --prefix=/usr
```

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

```
LIBS = -lpthread -lfontconfig -lglib-2.0 -lX11
```

```bash:make
make && make install
```

##Gtk-sharp
githubからクローンするとGtk3系が対象になっている。MonoDevelopで必要なのはGtk2系なので，アーカイブからビルドする。
###手順
```bash: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へのパスを通す。

```bash: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
うーむ。
###手順
```bash: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` になっていたら，

```Vi:ff
:set fileformat=unix
:wq
```

と操作する。

```bash:make
./bootstrap-2.24 --prefix=/usr
make && make install
```

##Mono Addins
```bash:make
git clone git://github.com/mono/mono-addins
cd mono-addins

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

##MonoDevelop
やっとたどりついた。
###手順
```bash:make
git clone git://github.com/mono/monodevelop
cd monodevelop

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

##Results
![Screen Shot 2014-07-10 at 18.02.24.png](https://qiita-image-store.s3.amazonaws.com/0/34563/cda0d251-5da5-93b8-2d3d-818f4790017a.png "Screen Shot 2014-07-10 at 18.02.24.png")


####補足 (14/7/11 追記)
/tmp/nuget ディレクトリに書き込み権限を設定しておかないと，一般ユーザーで使うときにNuGetが使えません。`chmod 777`でOKです。