Wednesday, March 8, 2017, 16:59 - Misc
Posted by ELIN
TwitterIrcGatewayをDebian Squeeze(6.0)でmono 4.8でかつmonoをインストールしないで動かしたい

なぜこのような要件が生まれたかは個人的環境系の問題なので割愛するものとして、要件を実現させるため必要となるmonoのmakeからTwitterIrcGatewayのmakeとmonoバンドルバイナリの作成手順を簡単に追って記載する


make mono


apt-get install gcc g++ make
wget http://download.mono-project.com/sources/mono/mono-4.8.0.495.tar.bz2
tar jxvf mono-4.8.0.495.tar.bz2
cd mono-4.8.0/
./configure --prefix=/opt/mono
make && make install

なぜか最後のmakeをサボって直接make installしようとするとコケる

後程要求されるlibgdiplusも予めmakeする
apt-get install libgtk2.0-dev
wget http://download.mono-project.com/sources/libgdiplus/libgdiplus-4.2.tar.gz
tar zxvf libgdiplus-4.2.tar.gz
cd libgdiplus-4.2/
./configure --prefix=/opt/mono
make install

こちらはサボっても問題ない


make TwitterIrcGateway


オフィシャルのhttps://github.com/opentig/TwitterIrcGatewayを使ってもよいが、forkしたやつにした
export PATH=/opt/mono/bin:$PATH
apt-get install git
git clone https://github.com/argrath/TwitterIrcGatewayUpdate TwitterIrcGateway
cd TwitterIrcGateway/
xbuild

もしxbuildがNuGetのどうたらでコケる場合はhttpsが証明書関係で失敗しているので更新するとよい
例えば方法として
update-ca-certificates
とか
cert-sync /etc/ssl/certs/ca-certificates.crt
など

monoバンドルバイナリ


cd Bin/Debug/
export PKG_CONFIG_PATH=/opt/mono/lib/pkgconfig/
export AS=as
export CC=cc
export MONO_PATH=.
mkbundle -o TwitterIrcGatewayCLI TwitterIrcGatewayCLI.exe I18N.dll I18N.CJK.dll --deps --static --config /opt/mono/etc/mono/config --config-dir . --machine-config /opt/mono/etc/mono/4.5/machine.config

色々検証したがこのように実行する

config関連は正直動きがよくわからないが、例えばconfig関連のパラメータを与えない場合は以下
System.TypeInitializationException: The type initializer for 'System.Net.WebRequest' threw an exception.
--configや--config-dirが欠けると以下
System.DllNotFoundException: libc
また--staticを与えない場合は以下
./TwitterIrcGatewayCLI: error while loading shared libraries: libmonosgen-2.0.so.1: cannot open shared object file: No such file or directory
と、様々なコケかたをするが、結局2日程検証しても.soがないというもの以外説明できるほど理解できていない
少なくとも自分用に書けば--machine-configは必須と思われる、また理解できないが--configを指定した上で--config-dirも指定しなければ動作しない


最後に


staticで作成しているので必要なものはAddInsとExtraAddIns(とConfigs)とTwitterIrcGatewayCLIのみ
rm *.exe *.config *.mdb *.XML *.dll
このへんは消してもよい
今回の要件的には小さければよいので消してしまう
add comment ( 634 views )

| 1 | 2 | 3 | 4 | Next> Last>>