= Cresc. =

>>The memory over IP
>>|

CentOS 5.5+mono 2.8+xsp 2.8+mod_mono 2.8インストールその5

2010-11-24 21:32:30 | Filesystem.log2

さて続きです。
今回はmod_monoをインストールしましょう。
[root@testmono ~]#
となっている状態からスタートです。

まずはmod_monoから入手しましょう。
[root@testmono ~]# wget http://ftp.novell.com/pub/mono/sources/mod_mono/mod_mono-2.8.tar.bz2
つぎに解凍します。
[root@testmono ~]# tar -xjvf mod_mono-2.8.tar.bz2
そしてmod_monoディレクトリに移動します。
[root@testmono ~]# cd mod_mono-2.8
そしてお決まりのconfigureです。
[root@testmono mod_mono-2.8]# ./configure
まー、なんというか、ここまではお決まりのパターンとなってきましたね。
configureの方もエラーなく終了したのでmakeとmake installやってみましょう。
[root@testmono mod_mono-2.8]# make
[root@testmono mod_mono-2.8]# make install
これもあっさり完了。

ここからはhttpdにmonoを連携するように設定ファイルを書き換えます。
[root@testmono mod_mono-2.8]# vi /etc/httpd/conf/httpd.conf
と入力してviでhttpd.confを読み込みます。
monoのサンプルを動かすために一番最後に次の文章を追加しましょう。
Include /etc/httpd/conf/mod_mono.conf
Alias /test "/usr/local/lib/xsp/test"
MonoApplications "/test:/usr/local/lib/xsp/test"
<Location /test>
SetHandler mono
</Location>
MonoServerPath /usr/local/bin/mod-mono-server4

httpd.confの設定を書き換えたのでhttpdを一旦止めて再スタートします。
[root@testmono mod_mono-2.8]# /etc/init.d/httpd restart
これでhttp://192.168.0.4/testにアクセスすればサンプルページが表示されるはず…
なのですが出てきません。
これにはSELinuxというセキュリティー関係の制御により動かないことが原因なのです。
例によって外部公開はしないので切りましょう。
[root@testmono mod_mono-2.8]# vi /etc/sysconfig/selinux
としてviで読み込み後、
SELINUX=enforcing

SELINUX=disabled
と変更します。
これは再起動が必要な設定なので
[root@testmono mod_mono-2.8]# reboot
として再起動します。
再起動したのを見計らってhttp://192.168.0.4/testにアクセスすると
monoのサンプルページが出てくるはずです。

一通り見てみようとSome ASP.NET Samples>2.0>Menu>menu2をクリックすると
Server Error in '/test' Application
--------------------------------------------------------------------------------
gdiplus.dll
Description: HTTP 500. Error processing request.
Stack Trace:
System.DllNotFoundException: gdiplus.dll
  at (wrapper managed-to-native) System.Drawing.GDIPlus:GdiplusStartup (ulong&,System.Drawing.GdiplusStartupInput&,System.Drawing.GdiplusStartupOutput&)
  at System.Drawing.GDIPlus..cctor () [0x00000] in :0 
--------------------------------------------------------------------------------
といったエラーが早速出てきます。
入れたはずのgdiplusが見つかりませんとのこと。
きっとパスの指定がいるんだなーということで

再度ログインします。
[root@testmono ~]#
共有ライブラリの読み込み設定をviで読み込みます。

[root@testmono ~]# vi /etc/ld.so.conf
/usr/local/lib
を追記し保存します。


設定ファイルを再読み込みします。

[root@testmono ~]# ldconfig

httpdを再起動します。
[root@testmono ~]# /etc/init.d/httpd restart
さて、先ほどエラーが出たページが…うまく表示できているはず!

httpd.confのところで特に説明もなく
MonoServerPath /usr/local/bin/mod-mono-server4
としてますが、
MonoServerPath /usr/local/bin/mod-mono-server2
MonoServerPath /usr/local/bin/mod-mono-server
で.Net~2とか選べるってことでしたっけ

さて、これで一通りMono 2.8系のインストールは完了ですね。


CentOS 5.5+mono 2.8+xsp 2.8+mod_mono 2.8インストールその4

2010-11-21 00:17:46 | Filesystem.log2

今回はxspのインストールです。

ログインして以下の状態からです。
[root@testmono ~]#

まずはApacheのインストールからです。
[root@testmono ~]# yum -y install httpd
そしてここで気を抜いてはいけません。
[root@testmono ~]# yum -y install httpd-devel
として開発版も入れておきましょう。

一応動作確認しておきましょうか。
[root@testmono ~]# /etc/init.d/httpd start
としてWebサーバーをスタートします。
ちなみに止めたい場合は
[root@testmono ~]# /etc/init.d/httpd stopt
いちいち動かすのが面倒なので起動と同時に動かしたい場合は
[root@testmono ~]# chkconfig httpd on
と入力します。
きどうと同時に動かしたくなくなった場合は
[root@testmono ~]# chkconfig httpd off
です。
さて、ここでhttp://192.168.0.4にウェブブラウザでアクセスすると
画面が表示されるはずなのですが出てきません。
原因はCentOSのファイアーウォールが働いて遮断されているのです。
とりあえず外部公開は目指してないのでここではファイアーウォールを切ります。
[root@testmono ~]# /etc/init.d/iptables stop
と入力します。
(外部公開目指している人はiptablesをちゃんと勉強して設定してネ)
再度http://192.168.0.4/にアクセスすると
Apache 2 Test Pageというページが出てくると思います。
いちいち止めるのは面倒だーという人は
[root@testmono ~]# chkconfig iptables off
と入力すれば起動時にスタートしませんです。
これでWebサーバー機能の追加は完了です。

ではxspのインストールをやっていきましょう。
[root@testmono ~]# wget http://ftp.novell.com/pub/mono/sources/xsp/xsp-2.8.1.tar.bz2
としてファイルをダウンロードします。
[root@testmono ~]# tar -xjvf xsp-2.8.1.tar.bz2
として解凍します。
xsp-2.8.1ディレクトリに移動してconfigureをやってみます。
[root@testmono ~]# cd xsp-2.8.1
[root@testmono xsp-2.8.1]# ./configure
なんと、エラーが出ずに完了してしまいました。
では…makeしてみましょう。
[root@testmono xsp-2.8.1]# make

Your sqlite3 version is old - please upgrade to at least v3.5.0!

Unhandled Exception: System.EntryPointNotFoundException: sqlite3_next_stmt
  at (wrapper managed-to-native) Mono.Data.Sqlite.UnsafeNativeMethods:sqlite3_next_stmt (intptr,intptr)
  at Mono.Data.Sqlite.SQLiteBase.ResetConnection (Mono.Data.Sqlite.SqliteConnectionHandle db) [0x00000] in :0
  at Mono.Data.Sqlite.SQLiteBase.CloseConnection (Mono.Data.Sqlite.SqliteConnectionHandle db) [0x00000] in :0
  at Mono.Data.Sqlite.SqliteConnectionHandle.ReleaseHandle () [0x00000] in :0
  at System.Runtime.InteropServices.CriticalHandle.Dispose (Boolean disposing) [0x00000] in :0
  at System.Runtime.InteropServices.CriticalHandle.Dispose () [0x00000] in :0
  at Mono.Data.Sqlite.SQLite3.Close () [0x00000] in :0
  at Mono.Data.Sqlite.SqliteConnection.Close () [0x00000] in :0
  at Mono.Data.Sqlite.SqliteConnection.Open () [0x00000] in :0
  at App.Main () [0x00000] in :0
make[3]: *** [dbpage1.sqlite] エラー 1
make[3]: ディレクトリ `/root/xsp-2.8.1/test/1.1/webcontrols' から出ます
make[2]: *** [all-recursive] エラー 1
make[2]: ディレクトリ `/root/xsp-2.8.1/test/1.1' から出ます
make[1]: *** [all-recursive] エラー 1
make[1]: ディレクトリ `/root/xsp-2.8.1/test' から出ます
make: *** [all-recursive] エラー 1

エラーで止まってしまいました。
上のほうに書いてますがsqliteのバージョンが3.5以上必要とのことです。
[root@testmono xsp-2.8.1]# sqlite3 -version
と入力してみると
3.3.6
の数字が!こりゃ駄目だな。
ということでxspのインストールは一時中断してsqliteのバージョンを上げていきましょう。

sqliteのダウンロードはこちらのページから
http://www.sqlite.org/download.html
ホームディレクトリに移動後sqlite-3.7.3.tar.gzをダウンロードしましょう。
[root@testmono xsp-2.8.1]# cd ~
[root@testmono ~]# wget http://www.sqlite.org/sqlite-3.7.3.tar.gz
バージョンは3.7.3なのでこいつならいけるはずです。
解凍します。
[root@testmono ~]# tar -xzvf sqlite-3.7.3.tar.gz
こんかいは3.3.6が既にインストールされているのでアップグレードインストールです。
そのためにはrpmを作ってインストールします。(これがまた面倒なんだ)

[root@testmono ~]# cd /usr/src/
に移動します。
redhatディレクトリを作り移動します。
[root@testmono src]# mkdir redhat
[root@testmono src]# cd redhat
SOURCESとSPECSディレクトリを作成します。
[root@testmono redhat]# mkdir SOURCES
[root@testmono redhat]# mkdir SPECS

ダウンロードしておいたsqlite-3.7.3.tar.gzファイルをSOURCESディレクトリにコピーします。
[root@testmono redhat]# cp ~/sqlite-3.7.3.tar.gz ./SOURCES/
sqliteの解凍しておいたファイルの中からspec.templateをSPECSディレクトリにコピーします。
[root@testmono redhat]# cp ~/sqlite-3.7.3/spec.template ./SPECS/
SPECSディレクトリに移動します。
[root@testmono redhat]# cd SPECS/

spec.templateは編集する必要があるのでviで編集をします。
[root@testmono SPECS]# vi spec.template
aを押して編集モードに入った後、
編集する場所は最初のほうの
%define version SQLITE_VERSION

%define version 3.7.3

中盤の
%setup -q -n %{name}

%setup -q -n %{name}-%{version}

最終行
%doc doc/*
を削除。

ESCボタンを押してShift+ZZで保存したらいよいよrpmの作成に取り掛かりましょう。
rpm作成コマンドがrpmbuildなのでこれを使いましょう。
[root@testmono SPECS]# rpmbuild -bb spec.template
-bash: rpmbuil: command not found
そーいえばrpmbuildインストールしてませんでしたね。
ということでyumでさくっとインストールしましょう。
[root@testmono SPECS]# yum -y install rpm-build
画面がずらーっと流れて止まったらrpmファイルの完成です。

一つ階層をあがってlsを入力してみるとディレクトリが増えてます。
[root@testmono SPECS]# cd ../
[root@testmono redhat]# ls
BUILD  RPMS  SOURCES  SPECS  SRPMS
RPMSの中に作ったrpmファイルがあるので移動してみます。
[root@testmono redhat]# cd RPMS/
lsを入力してみるとさらにディレクトリがあることがわかります。
[root@testmono RPMS]# ls
athlon  geode  i386  i486  i586  i686  noarch
名前からするとCPUごとに分かれてできるのかな?といった感じがします。
ちなみに私の環境ではi386ディレクトリにrpmファイルがありました。
[root@testmono RPMS]# cd i386/
[root@testmono i386]# ls
sqlite-3.7.3-1.i386.rpm  sqlite-devel-3.7.3-1.i386.rpm
こんな感じです。
ここでやっとアップグレードインストールですよ。
[root@testmono i386]# rpm -Uvh sqlite-3.7.3-1.i386.rpm
準備中...                ########################################### [100%]
   1:sqlite                 ########################################### [100%]
[root@testmono i386]# rpm -Uvh sqlite-devel-3.7.3-1.i386.rpm
準備中...                ########################################### [100%]
   1:sqlite-devel           ########################################### [100%]
ドキドキしながらsqliteのバージョンを確認してみましょう。
[root@testmono i386]# sqlite3 -version
3.7.3
ということで無事に3.5の壁を越えてます。
さて、xspの方に戻りますか。
[root@testmono i386]# cd ~/xsp-2.8.1
と入力して移動します。
環境が変わったのでconfigureからやり直します。
[root@testmono xsp-2.8.1]# ./configure
次にmake
[root@testmono xsp-2.8.1]# make
エラーが出ずに終わったらmake install
[root@testmono xsp-2.8.1]# make install
エラーが出ずに終わったらxspのインストールは完了です。


 


CentOS 5.5+mono 2.8+xsp 2.8+mod_mono 2.8インストールその3

2010-11-07 23:30:27 | Filesystem.log2

今回はlibgdiplus2.8のインストールです。
面倒ですが難しくないのでさらりと行きましょう。

さて、下記のようになっている状態からのスタートです。
[root@testmono ~]#
何がともあれ物を手に入れないといけないのでwgetでダウンロードします。
[root@testmono ~]#wget http://ftp.novell.com/pub/mono/sources/libgdiplus/libgdiplus-2.8.tar.bz2
つづけて解凍します
[root@testmono ~]#tar -xjvf libgdiplus-2.8.tar.bz2
比較的早く終わるのでディレクトリ内に移動します
[root@testmono ~]#cd libgdiplus-2.8
ここでいつものパターンのConfigureとmakeとmake installをするわけです。
まー、素直にいかないわけなんですけどね。
[root@testmono libgdiplus-2.8]#./configure

checking for pkg-config... no
configure: error: You need to install pkg-config
というエラーでストップするので
[root@testmono libgdiplus-2.8]#yum -y install pkg-config
とか入力すると、
No package pkg-config available.
そんなパッケージないよ??
といわれるのはmono2.4の頃に既にやっているので
[root@testmono libgdiplus-2.8]#yum -y install pkgconfig
と入力します。
インストールが終了したら
[root@testmono libgdiplus-2.8]#./configure
と入力してみましょう。
さてドウナリマスカ。
checking for BASE_DEPENDENCIES... configure: error: Package requirements (glib-2.0 >= 2.2.3) were not met:

No package 'glib-2.0' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.
こんなんでてきました。
上の方はglib-2.0が無いよって言ってますね。
下の方はPKG_CONFIG_PATHを調節してねって書いてますね。
もしprefixつけずにインストールしたのなら・・・だそうです。
prefixつけてインストールするお洒落さんはそもそもmonoのインストールで迷ったりしませんよね?
まー、うちは開発元に忠実というか、そんなこと言うのならどこかに書いておいてよーといった感じです。
作業を続けましょう。glib-2.0のインストールです。
まぁ、素直にyum -y install glib-2.0とかやってもやっぱり見つからないので
次のようにしましょう。
[root@testmono libgdiplus-2.8]# yum -y install glib2-devel

もう一つはPKG_CONFIG_PATHのほうです。
これはホームディレクトリの.bashrcファイルに追記する必要があります。
[root@testmono libgdiplus-2.8]# vi ~/.bashrc
と入力して編集します。
最終行あたりに
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
と入力します。
Shift+ZZと押してセーブします。

ここで忘れてはいけないのが環境設定ファイルの再読み込みです。
[root@testmono libgdiplus-2.8]# source ~/.bashrc
とすることで先ほどの設定が読み込まれます。

さて、久しぶりのconfigureですがどうでしょう。
[root@testmono libgdiplus-2.8]#./configure

checking for libpng12... no
checking for png_read_info in -lpng... no
configure: error: *** libpng12 not found. See
http://www.libpng.org/pub/png/libpng.html.
なんか出てきましたね…
libpng12が無いとのことです。
yum -y install libpng12とかlib-png12とか打ち込んでも解決しません。
正解はlibpng-devel(12どこ行った!?)
[root@testmono libgdiplus-2.8]# yum -y install libpng-devel
と入力するとインストールが完了します。
さてもう一度~
[root@testmono libgdiplus-2.8]#./configure
と入力すると…
configure: error: "Failed to compile with X11/Xlib.h include.  You must fix your compiler paths"
と出てきました。
エラーメッセージを分析すると
X11のXlib.hのインクルードに失敗したからパスを修正してください。という感じです。
だがしかし、そもそもX11って確かインストールじたいしてないのね。
ではX11を入れてみましょう。
・・・・まぁ。今までの流れからしてyum -y install X11トカXlibとかlibX11とかじゃダメでして。
[root@testmono libgdiplus-2.8]# yum -y install libX11-devel
となります。
改めて
[root@testmono libgdiplus-2.8]#./configure
とするとさっきよりかは進んで

configure: error: Cairo requires at least one font backend.
                  Please install freetype and fontconfig, then try again:
                 
http://freetype.org/  http://fontconfig.org/

configure: error: ./configure failed for cairo

というところでエラーで止まります。
さて、メッセージを読んでみるとfreetypeとfontoconfigを入れてくれとあります。
もー先に正解言っちゃうよfreetype-develとfontconfig-develダヨ!!
ということで
[root@testmono libgdiplus-2.8]# yum -y install freetype-devel
[root@testmono libgdiplus-2.8]# yum -y install fontconfig-devel
さてそろそろ行きそうな感じがしますがどうでしょうか。
[root@testmono libgdiplus-2.8]#./configure
---
Configuration summary

   * Installation prefix = /usr/local
   * Cairo = 1.6.4 (internal)
   * Text = cairo
   * EXIF tags = No. Get it from http://libexif.sourceforge.net/
   * Codecs supported:

      - TIFF: no (Get it from http://www.libtiff.org/)
      - JPEG: no (Get it from http://freshmeat.net/projects/libjpeg)
      - GIF: no (See http://sourceforge.net/projects/libgif)
      - PNG: yes
      NOTE: if any of the above say 'no' you may install the
            corresponding development packages for them, rerun
            autogen.sh to include them in the build.

おお。エラーなしで終了しました。
しかしいくつか気になる部分もあります。
上の赤字の部分です。
画像関係の名前でNOがついている…ということは、
今のままだとJPEGやGIFは使えないってことにならないかい?
それじゃ困るので入れてあげましょう。
libpng-develを既に経験しているのでjpegとtiffとexifは同じ方法で大丈夫です。
[root@testmono libgdiplus-2.8]# yum -y install libjpeg-devel
[root@testmono libgdiplus-2.8]# yum -y install libtiff-devel
[root@testmono libgdiplus-2.8]# yum -y install libexif-devel
でインストールが完了します。
じゃーgifは??libgif-develじゃないくてgiflib-develなんですねこれが残念ながら。
gifだけぎゃくー
この変化球具合はなんなんでしょうか。
上のメッセージのgifのココミロ的URLにはlibgifって書いているのにねー
[root@testmono libgdiplus-2.8]# yum -y install giflib-devel
さて一通りインストールがおわったら
[root@testmono libgdiplus-2.8]#./configure
です。
   * Installation prefix = /usr/local
   * Cairo = 1.6.4 (internal)
   * Text = cairo
   * EXIF tags = yes
   * Codecs supported:

      - TIFF: yes
      - JPEG: yes
      - GIF: yes
      - PNG: yes
      NOTE: if any of the above say 'no' you may install the
            corresponding development packages for them, rerun
            autogen.sh to include them in the build.


全部にYESがついてるのを確認して
[root@testmono libgdiplus-2.8]#make
[root@testmono libgdiplus-2.8]#make install
とします。
苦労した甲斐あってあっさり終了します。(makeはちょっと時間がかかるけどね)

今回はなんというかパッケージ名を知っているかどうかが運命の分かれ目ですね。