2011年7月23日土曜日

OpenSim on FreeBSD8.x (その3 - OpenSimユーザー作成・ビルド)

今回はOpenSimを実行させる専用ユーザーを作成し、そのユーザーでOpenSimをビルドします。

OpenSim実行ユーザーの作成

OpenSimはネットワークから接続されるサーバーソフトウェアなので、root権限のまま実行するのは好ましくありません。万一バグがあった場合、そのサーバーの全権限を奪われてしまう可能性があります。

そこで「opensim」という名前のユーザーを作成し、このユーザーでOpenSimを動作させます。rootユーザーでadduserコマンドを実行してください。アンダーラインの部分はユーザーが入力するところです。デフォルトを選択する場合はそのまま改行を入力してください。
# adduser
Username: opensim
Full name: OpenSim Owner
Uid (Leave empty for default):
Login group [opensim]:
Login group is opensim. Invite opensim into other groups? []:
Login class [default]:
Shell (sh csh tcsh bash rbash nologin) [sh]: csh
Home directory [/home/opensim]:
Home directory permissions (Leave empty for default):
Use password-based authentication? [yes]:
Use an empty password? (yes/no) [no]:
Use a random password? (yes/no) [no]:
Enter password: パスワードを入力します
Enter password again: 再度パスワードを入力します
Lock out the account after creation? [no]:
Username   : opensim
Password   : *****
Full Name  : OpenSim Owner
Uid        : 1001
Class      :
Groups     : opensim
Home       : /home/opensim
Home Mode  :
Shell      : /bin/csh
Locked     : no
OK? (yes/no): yes
adduser: INFO: Successfully added (opensim) to the user database.
Add another user? (yes/no): no
Goodbye!
Shellには「csh」を指定してますが、好みのものを指定してください。

OpenSimのコンパイル

先ほど作成した「opensim」ユーザーでログインしOpemSimをコンパイルします。FreeBSDの場合、Alt-F2~F8をおして別の仮想コンソールからログインすると便利かもしれません。ちなみに、私はVirtualBoxのFreeBSDにsshでログインできるようにしてTera Termでログインして作業してます。
ログインしたら、opensim というディレクトリをホームディレクトリ直下に作成し、ここにソースコードを展開してOpenSimをインストールすることにします。ソースコードはOpenSimのサイトのホームにある「Source Tarball (0.7.1.1)」のリンクからダウンロードします。FreeBSDはfetchコマンドでhttpダウンロードができます。
% cd
% mkdir opensim
% cd opensim
% fetch http://dist.opensimulator.org/opensim-0.7.1.1-source.tar.gz
% tar -x -v -z -f opensim-0.7.1.1-source.tar.gz
% cd opensim-0.7.1.1-source
... README.txt, BUILDING.txtをよく読むこと ...
% ./runprebuild.sh
% nant
% cd bin
... コンパイル結果と設定ファイルの雛形が bin ディレクトリにあります ...
コンパイルは、私のCore2Quad Q9550 2.83GHzのマシンで105秒ほどでした。この後、binディレクトリにある、INI設定ファイルを環境に合わせて変更します。
しかしその前に、openjpeg-dotnet.dllに対応するlibopenjpeg-dotnetのFreeBSD対応共有ライブラリがないので、これをまずコンパイルします。

libopenjpeg-dotnetのコンパイル

OpenSimのBuild Instructionsのページでは、subversionで、リポジトリから直接チェックアウトしてコンパイルするようにとあるのですが、必要ないものも大量にチェックアウトされますし、ちゃんとメンテナンスされているのかも不明でした。この為、Open Metaverse Foundationの本家から直接最新版のソースコード(現時点で LibOpenMetaverse Release 0.9.0)を取得してきて、これにFreeBSD用パッチをあててコンパイルします。

パッチファイルは次のとおりです。こちらからダウンロードするか、コピペして「~/opensim/openjpeg-dotnet_freebsd.patch」に保存してください。
Makefileへのパッチは、ごらんのとおりi386の32bitにしか対応してません。64bitや他のアーキテクチャへの対応は、前後をみて各自トライしてみてください :-)。
diff -ru openjpeg-dotnet.orig/Makefile openjpeg-dotnet/Makefile
--- openjpeg-dotnet.orig/Makefile       2011-05-19 00:35:02.000000000 +0900
+++ openjpeg-dotnet/Makefile    2011-06-15 12:44:04.000000000 +0900
@@ -38,6 +38,14 @@
   endif
 endif

+ifeq ($(OSNAME), FreeBSD)
+  ARCH = $(shell uname -p)
+  ARCHSET = 0
+  ifeq ($(ARCHSET), 0)
+    ARCH=-i386
+    ARCHFLAGS=-m32
+  endif
+endif

 # Converts cr/lf to just lf
 DOS2UNIX = dos2unix
diff -ru openjpeg-dotnet.orig/libopenjpeg/opj_malloc.h openjpeg-dotnet/libopenjpeg/opj_malloc.h
--- openjpeg-dotnet.orig/libopenjpeg/opj_malloc.h       2011-05-19 00:35:02.000000000 +0900
+++ openjpeg-dotnet/libopenjpeg/opj_malloc.h    2011-07-15 12:43:15.000000000 +0900
@@ -76,7 +76,7 @@
        #if defined(__sun)
                #define HAVE_MEMALIGN
        /* Linux x86_64 and OSX always align allocations to 16 bytes */
-       #elif !defined(__amd64__) && !defined(__APPLE__)
+       #elif !defined(__amd64__) && !defined(__APPLE__) && !defined(__FreeBSD__)
                #define HAVE_MEMALIGN
                #include <malloc.h>
        #endif
次に、libomv-0.9.0-source.zip をダウンロードし、パッチをあて、コンパイルします。unzipコマンドは、前回のツール・ライブラリインストール時にすでにインストールされている為、使えます。ライブラリのメイクにはgmakeコマンドを使ってください。
% cd ~/opensim
% fetch http://libopenmetaverse.googlecode.com/files/libomv-0.9.0-source.zip
% unzip libomv-0.9.0-source.zip
% cd libomv-0.9.0-source/openjpeg-dotnet/
% patch -p1 -l < ../../openjpeg-dotnet_freebsd.patch
% gmake
コンパイルが完了すると、カレントディレクトリに「libopenjpeg-dotnet-2.1.3.0-dotnet-1-i386.so」という共有ライブラリができているはずです。これをOpenSimのbinディレクトリにコピーします。
% chmod -x libopenjpeg-dotnet-2.1.3.0-dotnet-1-i386.so
% cp libopenjpeg-dotnet-2.1.3.0-dotnet-1-i386.so ../../opensim-0.7.1.1-source/bin/
コピーする前に共有ライブラリの実行属性を落としていますが、まあ気分の問題です。


以上で、OpenSimのコンパイルは完了です。次回はOpenSimの設定を完了させ、いよいよ自分のSIMにINしてみます。

(その4に続く)

0 件のコメント:

コメントを投稿