2016年2月20日土曜日

Mono 4.0.3に戻しました

Mono のバージョンを lang/mono のアップデイトに合わせて、4.2.1 --> 4.2.2 とあげてきたのですが、OpenSim内のオブジェクトのスクリプトを編集し保存すると、
Region (????) # * Assertion at memfuncs.c:81, condition `unaligned_bytes (dest) == 0' not met
というAssertionエラーがでて、止まってしまうようになりました。 memfuncs.c というのは、monoのソースコードです。 OpenSimを 0.9.0 Devというまだ不安定なバージョンにしているせいもありますけど、 やっぱり、安定してうごいていたバージョンに戻す事にしました。 今の状態だと、メモリリークして、3-5日で勝手に落ちてるような状況なので、 OpenSimの方も、0.8.3 という 0.9.0 Devになる前のものに戻してみようかなぁ...。

Portsは、ソースコードをSubversionでチェックアウトしているので、次のようにして、以前のPortsファイルに戻して、コンパイルしなおしています。
# cd /usr/ports/lang/mono
# svn update -r 397063

2015年12月6日日曜日

Monoを 4.2.1 に更新しました

Monoのバージョンを 4.2.1 に更新しました。

FreeBSD 8.4 は、システム標準のC/C++コンパイラが gcc 4.2.1なので、Monoをビルトできません。ですんで、まず lang/clang34 がインストールされて、これをつかってMonoをビルドします。でも、いろいろPorts全体のバージョンがあがってて、途中でエラーでこけてしまう。
もう、FreeBSD 8.4は、EOF(End Of Life)なので、積極的にはサポートされてないからだとは思いますが...。
/etc/make.conf の書き方も、古いまんまで、それが問題を起こしてたりと、試行錯誤して、やっとインストールできました。

OSGrid側の OpenSimを新しいMonoでうごかそうとしたら、libgdiplus の共有ライブラリでエラーになりました。アップデイトが中途半端だったのかしら...。もう一度、x11-toolkits/libgdiplus に関係するportsを全部更新し、バイナリーpackage作って、OSGrid側でアップデイトかけて、ようやく動くようになりました。かなり時間かかった.....。動く標的を撃つのはシンドイ...。

OpenSimも、http://www.osgrid.org/index.php/downloads から取得できる、「2015-12-02 OpenSim 0.9.0.0 Dev d5e21a0」をインストールしました。以前つかってたバージョンは、リージョン間の移動のときに、なんかおかしかったのが直ってます。
今見たら、2015-12-05付けで、もう新しいOpenSimがでてる....。

FreeBSD 10.2 だと、すんなりMonoなどもコンパイルできたので、もうFreeBSD 8.4 で運用するのは限界かなぁ....。変更するものが多くて、めんどうだー。でもやるしかないなぁ...。

2015年8月29日土曜日

NeXTBSD

NextBSD登場

昔、NeXTやMacOSX Server ってコンピュータ使ってたから、けっこう気になるなぁ...。

Mach IPCをFreeBSDカーネルにいれるのかぁ...。Mach IPCってケーパビリティベースのセキュリティなんだけど、ケーパビリティってのをちゃんと解説したドキュメントがすくなくて、いまいちちゃんと理解できてる気がしない。OpenSimのプロトコルでもケーパビリティって用語がでてくるけど、同じ概念に基づくものなんだろうか...。信用の連鎖をつないでいく方法のセキュリティと考えてよいのかしら...。

NeXTBSDが出た背景には、MacOSXやiOSの流儀で、データーセンター側のサーバーのプログラムを配置したいというのがあるんだろうなぁ...。MacOSXで作ったサーバー系プログラムをそのまま、データセンターに配置する、というような...。

ある程度、まともに動くようになったら、うちのリージョンは、このOSでうごかしてみたいなぁ...(そのまえにまわりのサーバーをFreeBSD10.2にアップデイトしないと....www)。

でも、もう頭が世の中についていけてないのが問題だ...www。

2015年4月12日日曜日

Monoを3.12.1に更新完了

Monoのバージョンを 3.12.1に更新完了しました。
特に変わったところは感じません(まあ、OpenSimうごかしてるだけなら違いはわからない)。

これで、Linuxのバージョンに追いついた。
最近、FreeBSDのlang/monoの本家のMonoへの追従がわりと早いです。

また、バイナリーのパッケージングシステムがpkgになったので、パッケージ作成マシンにssh経由でアクセスできるようにしとくだけで、他のマシンに作成済みのパッケージをすばやくインストールできるようになりました(以前もできなかったわけではなかったけど、Webサーバーたてたりとかが必要だった...と思う...)。
うちみたいな小規模用途の場合、特別にパッケージサーバーとかを立てる必要もないので、結構便利です。
でも、まあ、やっとLinux並みになったというところなんでしょうけどwww。

2015年3月2日月曜日

x11-toolkits/libgdiplus のビルドの問題が解決

Monoを3.10.0に更新中 #2」の記事で書いた、x11-toolkits/libgdiplus の問題は、数日前にPortsをアップデイトしたら、files/patch-src_gifcodec.c のパッチが追加されていて解決しました(万歳!)。

ただし、そのままコンパイルしてしまうと、XOpenDisplay()等の関数を呼び出してしまうので、Xをインストールしていない環境では、OpenSim起動時にエラーになってしまいます。
この為、次のMakefile.localと、files/patch-src_general.c を  x11-toolkits/libgdiplus のディレクトリに追加してビルドします(昔の記事には、このパッチを載せてなかったみたい...そのうちちゃんとまとめねば....)。
ただし、これはXをインストールしていない環境で無理やりOpenSimを動かすためのものなので、Xが存在する環境では、この作業はしないでください。libgdiplus を使う他のアプリケーションに悪影響がでる可能性があります。

Makefile.local

#
# Makefile.local  --- Local settings for OpenSIM
#

.if defined(WITHOUT_X11)
CFLAGS+=        -DWITHOUT_X11
MAKE_ARGS+=     'SUBDIRS=src'
.endif

files/patch-src_general.c

--- src/general.c.orig  2011-01-13 22:28:19.000000000 +0000
+++ src/general.c       2012-08-27 07:31:08.000000000 +0000
@@ -132,6 +132,9 @@

                dpis = h_dpi;
                return dpis;
+#elif defined(__FreeBSD__) && defined(WITHOUT_X11)
+               dpis = 96.0f;
+                return dpis;
 #else
                char *val;
これで、Portsを最新にしても、OpenSimを動かすことができるようです。

2015年2月22日日曜日

Monoを3.10.0に更新中 #2

lang/mono をFreeBSD8.4で最新のものをビルドすると devel/llvm34 がインストールされてしまうので、更新をずっとためらっていたんですが、FreeBSD10.1でもemacsをインストールしようとすると、(たぶん、まだclangに全面的に対応できてないのか) gccがインストールされてしまうようです。
まあ、それならあんまりためらっている事もないか....と、portsを最新にしていろいろアップデイトを掛けてました。
なんか、FreeBSDのバイナリーパッケージングシステムがpkgngに変わったので、いろいろと調整が必要で、結構時間かかってしまいました。一番時間かかるのは、古い頭を新しいシステムになれさせる事なんですが....。

で、別環境で作成した最新バイナリーパッケージを使って、OpenSim動かしているマシンを更新かけたところ、libgdiplus.soが読み込めなくて、OpenSimが立ち上がらなくなりました(;Д;)。

Exception: System.TypeInitializationException: An exception was thrown by the type initializer for System.Drawing.GDIPlus ---> System.DllNotFoundException: libgdiplus.so 

あれぇ?と思って、libgdiplusを再構築してみたら、src/gifcodec.c のコンパイル中にエラーがでてました。調べてみると「2015-01-15  Update graphics/giflib to 5.0.5」ってMakefileのSubversionログにはかかれているけど、giflibライブラリのインターフェイスが変わっているのに、ソースコードが未修正なのが原因みたいです(libgdiplusのporterさん、ちゃんとテストしてるのかしら?)。

しかたないので、中身の意味もろくすっぽ調べないで、適当にパッチあてて、コンパイルだけ通して、バイナリーパッケージ作成し、更新かけてみましたけど......やっぱりだめでした....。

気を取り直して、 OpenSim動かしているマシンに残っていた古いportsソースを元に、libgdiplusを作り直したら、とりあえず動くようになりました。 libgdiplusは、依存するライブラリがかなりあるので、慎重にビルドしないとだめのようです...(ライブラリの依存関係の情報もlibgdiplusはちゃんとかかれてないようですし....。とはいうものの、私もports作成に関しては知識あんまりないけど...)。

ところで、libgdiplusって、OpenSimでは、Mapイメージ作るのにひつようなのかしら???

というわけで、OpenSimが立ち上がって、とりあえず、ホっとしてます。 新しい環境に移行する場合は、テスト用のマシン・環境にインストールして、確認してからの方がやっぱりいいですね....。今後、どうやって、やろうかしら....。やっぱりもうひとつJail環境つくって、そのなかでテストしてからの方がいいかな....。

2015年2月7日土曜日

Monoを3.10.0に更新中 #1

ひさしぶりにBlog書いてみます。

FreeBSDのlang/monoのバージョンがだいぶ上がってたんですが、FreeBSD8.4だとdevel/llvm34 のコンパイラをインストールしようとします(ほかにもPhytonとかいろいろインストールしようとします)。OpenSim動かすmonoの為だけに大きなコンパイラをインストールするのもなんかイヤで、FreeBSD10.xにしたらシステム標準のコンパイラがllvm34レベルになるから、それからって思ってました。

でも、FreeBSD10.1にして、ファイルシステムが「soft updates journaling」がデフォルトになったけど、インストールが悪いのか、なんかミスったのかわかりませんけど、なんか変になってファイルシステムが壊れてしまいました(gmirrorと組み合わせてるのが災いしたのかしら???)。まあ、私のところだけなのかもしれませんが...。

というわけで、FreeBSD10.xに全面移行するのは、もうちょっと先にして、FreeBSD8.4でmonoを最新にビルド中です。

しばらく、portsをアップデイトしてないと、いろいろバージョンがあがってたり、pkgngに代わってたりで、なかなかスムーズにいきません。Subversionも良くわかってなかっので、勉強しなおしたりと.....回り道ばかりしてます。