XServerにMonoをインストール

CentOSでC#アプリケーションを実行したくなったので、Monoをインストールしたときのメモ。

参考:
Mono:

XServer(VPSではない)では、rootが取れないのでyumやrpmを使ったインストールができなかったので、手動Buildで実施。
いろいろ必要なパッケージがなくて、手動でいれていった軌跡をメモ。
後でShell化したいところではあるけど。。。

1.環境変数の設定

インストールするときに、ディレクトリ名とかをいちいち指定したくなかったので設定。
※下記の「ユーザ名」、「サービス名」は自身のXserver上の名前

MNDIR=/home/ユーザ名/サービス名/public_html/mono
mkdir -p $FFDIR/mono_sources
mkdir -p $FFDIR/bin

2.各種ライブラリのインストール

下記をインストール(一部、好みでいれているものもあり)
A. nasm
B. libtool
C. cmake
D. re2c
E. ninja

2-A. nasm

install: 

wget https://www.nasm.us/pub/nasm/releasebuilds/2.14.02/nasm-2.14.02.tar.bz2
tar xjvf nasm-2.14.02.tar.bz2
cd nasm-2.14.02
./autogen.sh
PATH="$MNDIR/bin:$PATH" ./configure --prefix="$MNDIR/build" --bindir="$MNDIR/bin"
make
make install

2-B. libtool

install:

wget http://ftp.jaist.ac.jp/pub/GNU/libtool/libtool-2.4.6.tar.gz
tar xvfz libtool-2.4.6.tar.gz
cd libtool-2.4.6
PATH="$MNDIR/bin:$PATH" ./configure --prefix="$MNDIR/build" --bindir="$MNDIR/bin"
make
make install

2-C. cmake

install:
※Open SSLモジュールがないとエラーになるので、Open SSLはなしでもインストールできるようにオプションを付けている

wget https://github.com/Kitware/CMake/releases/download/v3.26.3/cmake-3.26.3.tar.gz
tar -xvf cmake-3.26.3.tar.gz
cd cmake-3.26.3
PATH="$MNDIR/bin:$PATH" ./configure --prefix="$MNDIR/build" --bindir="$MNDIR/bin" -- -DCMAKE_USE_OPENSSL=OFF
make
make install
ln -s bin/cmake ../bin/cmake

2−D. re2c

install:

wget https://github.com/skvadrik/re2c/archive/refs/tags/3.0.tar.gz
tar -xvf 3.0.tar.gz
cd re2c-3.0/
cmake ./ -DCMAKE_INSTALL_PREFIX="$MNDIR/bin"
make
make install

2-E. ninja

install:

wget https://github.com/ninja-build/ninja/archive/refs/tags/v1.11.1.tar.gz
tar -xvf v1.11.1.tar.gz
cd ninja-1.11.1
./configure.py --bootstrap
cmake -Bbuild-cmake
cmake --build build-cmake


3. 環境変数にパスを通しておく(念の為)

~/.profile に下記を設定
※vi ~/.profile

export PATH="/home/ユーザ名/サービス名/public_html/mono/cmake-3.26.3/bin:$PATH"
export PATH="/home/ユーザ名/サービス名/public_html/mono/monodevelop-7.8:$PATH"
export PATH="/home/ユーザ名/サービス名/public_html/mono/re2c-3.0:$PATH"
export PATH="/home/ユーザ名/サービス名/public_html/mono/ninja-1.11.1:$PATH"
export PATH="/home/ユーザ名/サービス名/public_html/mono/mono-6.12.0.182:$PATH"
export PATH="/home/ユーザ名/サービス名/public_html/mono/build/bin:$PATH"

読み込み
※souce ~/.profile

4. mono をインストール

wget https://download.mono-project.com/sources/mono/mono-6.12.0.182.tar.xz
tar -xvf mono-6.12.0.182.tar.xz
cd mono-6.12.0.182
PATH="$MNDIR/bin:$PATH" ./configure --prefix="$MNDIR/build" --bindir="$MNDIR/bin" --disable-shared --enable-nasm
PATH="$MNDIR/bin:$PATH" ./autogen.sh --prefix="$MNDIR/build"
make
make install

5. test

5-1. ver 確認

mono -V

結果:

$ mono -V
Mono JIT compiler version 6.12.0.182 (tarball Fri May  5 10:38:05 JST 2023)
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
        TLS:           __thread
        SIGSEGV:       altstack
        Notifications: epoll
        Architecture:  amd64
        Disabled:      none
        Misc:          softdebug 
        Interpreter:   yes
        LLVM:          supported, not enabled.
        Suspend:       hybrid
        GC:            sgen (concurrent by default)

5-2. テストコードの作成
※公式のテストコード引用

5-2-1. C#コード作成


touch hello.cs

using System;

public class HelloWorld
{
  public static void Main(string[] args)
  {
     Console.WriteLine("Hello Mono World");
  }
}

5-2-2. コンパイル

csc hello.cs

5-2-3. 実行

mono hello.exe

結果:

]$ mono hello.exe 
Hello Mono World

無事にインストールされました。

この記事が気に入ったらサポートをしてみませんか?