SL-A300 と ruby と lmbbs for Zaurus

過去の記録を閲覧用に保存しています。投稿・編集はできません。一部の旧記法・画像や HTML の表示は再現されていません。同名ページは候補から選択してください。

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 が使えるようになっている。