LiMo WikiWiki page -- Wiki トピック一覧 / 同一トピック掲示板 / 掲示板
編集
掲示板で返信
新規トピック WikiPage の作成

SL-A300 と ruby と lmbbs for Zaurus

Since : Jan.26.2003 08:53'11
LastModify : Jan.27.2003 00:10'10

SL-A300 に lmbbs をインストールしたら書き込みできない現象について。
そしてその回避方法。
(Jan.26.2003 れろれろ@ふみ)

問題点

SL-A300 に lmbbs for Zaurus をインストールしようとした時、ruby のパッケージに Zaurus-ja project で配布されている物を利用すると書き込み等ができなくなる。
SL-C700 ではこの現象はみられない。

現象

lmbbs で書き込みを行おうとすると '500 Server Error' が発生する。
'500 Server Error' は boa における cgi 実行エラーで、.cgi という拡張子が
付いていればファイルが存在しないような場合でもこのエラーになる。

ちなみにそのときの error_log
[26/Jan/2003:06:41:08 +0000] Forked child "/home/root/public_html//127.0.0.1/lmbbs/bbs_post.cgi" pid 505
[26/Jan/2003:06:41:08 +0000] cgi_header: unable to find LFLF
[26/Jan/2003:06:41:08 +0000] reaping child 505: status 32512
まったく走っておらずスクリプトが云々の話でないことが見て取れる。

なぜか私の作成した ruby パッケージでは問題が発生しない。

条件

最初に問題を確認したのは
SL-A300 j1.10
ruby_1.6.8-1rc1_arm.ipk
eruby_0.9.8_arm.ipk
boa_0.94.12_arm.ipk
lmbbs_1.0.0_all.ipk
バージョンの違いかと一通りアップデートしたものの現象は変わらず
SL-A300 j1.20
ruby_1.6.8-1_arm.ipk
eruby_0.9.8_arm.ipk
boa_0.94.12_arm.ipk
lmbbs_1.1.1_all.ipk

rubyパッケージの違い

二つの ruby パッケージで何が違うのかというと Zaurus-ja project の方は libruby を利用する dynamic link になっており、私の方は static link になっている事。
インストール先や ruby lib 周りに差異はない。

このあたりから、ruby を起動しようとして libruby が読み込めていないのだと推測。
ただし eruby 経由で起動される ruby は正しく動作しているようなのであくまで boa から CGI として呼ばれる一段目におけるライブラリパスの環境変数設定の問題だと思う。

今だと Zaurus-ja project の方がメインストリームなのでなんとしてもそちらで問題なく動いて貰いたいところ。
要するに私のパッケージなんかとっとと捨てて Zaurus-ja project の方にみなさん移行して貰いたい。

実験

以下の様な簡単なスクリプトでもエラーになることを確認。もちろんコマンドライン上からの起動は問題無く行える。
    #!/opt/QtPalmtop/bin/ruby
print "Content-types: text/html\n\nhogehoge"
下記の様なスクリプトではCGIとして実行表示されるので boa や CGI 起動周りの問題ではなく ruby が起動できていないのだと絞り込める。
    #!/bin/sh
echo "Content-types: text/html"
echo
echo
echo "hogehoge"

回避法

下記の手法のどれかで回避可能。
どっちにしても簡単ではないけれども、boa の設定ができた方々には問題無い物と思う。

シンボリックリンクによる方法

原因としては簡単で CGI の起動時に libruby を読み込むためのライブラリパスが得られていない事にある。
試しに下記のようにして /usr/lib に libruby を置くと問題なく動作する事を確認した。
    ln -s /opt/QtPalmtop/lib/libruby.so /usr/lib/libruby.so
ln -s /opt/QtPalmtop/lib/libruby.so.1.6 /usr/lib/libruby.so.1.6
ln -s /opt/QtPalmtop/lib/libruby.so.1.6.8 /usr/lib/libruby.so.1.6.8

ldconfigによる方法

根本的に悩んでいる問題として、SL-A300 には ldconfig コマンドが無く /etc/ld.so.conf の書き換えによるパスの追加ができないという物がある。
ldconfig 自体をどっかから持ってくれば済む、ということで Kenjiさんが glibc から ldconfig を抜き出したものをインストールする方法。
ldconfig のパッケージ
http://club.h14m.org/kenji/zaurus/sla300/ldconfig_2.2.2-1_arm.ipk
該当記事
http://club.h14m.org/kenji/diary/?200301c&to=200301261#200301261

ldconfig をインストールしたなら /etc/ld.so.conf に次の一行を追加し、その後 ldconfig を実行して変更を反映。
    /home/QtPalmtop/lib/
ldconfig 実行後は問題なく ruby CGI が使えるようになっている。




LiMo BBS System - WikiWiki Page
$Id: lmwiki.rhtml,v 1.4 2003/05/17 17:19:11 rero2 Exp $