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
無事にインストールされました。