UG01OKモバイルルーター化計画(2)2009/05/01

前回までのあらすじ

エネループ・モバイルブースター(KBC-L2S) で UG01OK のバッテリー駆動を試みる。 UG01OK(ルーター側)の電源ランプは点灯するものの、UD01OK(通信カード側)のステータスランプは沈黙を守り、 WLANにも反応は無い。

このまま敗退を余儀なくされるのか?

今回の用意したもの

KBC-L2S に2口設けられた出力を合成するための二股USBケーブル

試験開始

前述のケーブルで、KBC-L2S と UG01OK を接続。 そして、電源投入。

通信カード側のステータスランプが赤色の点滅を始める。 これはUD01OKのスタートアップ時の動作で、正常な反応だ。

数秒後には青色点滅、接続準備中に移行。 これは期待できるか?

通常でも電源投入から接続が確立されるまで1~2分はかかるので、その間にMacBookから管理画面を確認することにする。

WLANのAPとしては認識されている。

前回よりは格段の前進だ。

しかし、ブラウザからUG01OKの管理画面へ接続しようとすると timeout。

……一抹の不安が過る。

実験成功か?

待つこと2分あまり。

接続確立までにかかった時間が、普段よりやや長い気はしたが、通信カード側のステータスランプが青色点灯。

接続成功だ!

ブラウザから再びUG01OKの管理画面にアクセスすると、 今度は正常にレスポンスが返ってきた。

インターネットへのアクセスも可能だ。

実験成功か?

しかし

接続が確立されてから数十秒後、通信カード側のステータスランプが再び青色点滅を始める!?

当然のようにインターネット接続は切断される。

その後しばらく様子を見ていたが、

  • 2~3分かけて接続
  • 接続確立から数十秒後に切断

を延々繰り返している様子。

どうにも、KBC-L2S では役者が不足している様子。 もっと電波状況の良い場所なら結果も違うのかも知れないが……。

次回予告

KBC-L2S 以外のもっとマシなモバイルバッテリーを調達する。

SetHandler の上書き2009/05/01

Apacheの /etc/httpd/conf/httpd.conf で

<Directory /path/to/target>
  Options ExecCGI
  SetHandler cgi-script
</Directory>

な感じで設定されたCGI実行用ディレクトリに直接表示用のファイルを置きたい場合の、 当該ディレクトリの .htaccess への記述。

SetHandler None
AddHandler cgi-script .cgi

AddHandler default-handler .png
AddType image/png .png

SetHandler ディレクティブが設定されている場合は、AddHandler ディレクティブの指定より優先されてしまうので、 SetHandler None で、設定を取り消す必要がある。

後半はデフォルトなので、書かなくても良い。

ディレクトリに必要な Override 設定は

AllowOverride FileInfo

見えてはいけないファイルまで見えてしまう系の穴ができやすいので注意が必要。

RHEL5 に RMagick をインストール2009/05/01

予習

RMagick は、ImageMagick または GraphicsMagick を利用した Ruby向け画像操作ライブラリ。 できるだけrpmを利用したいので、今回はImageMagickを利用することにします。

gem でインストールが可能ですが、ネイティブコードのビルドがあるので、 make や gcc、ImageMagickの開発パッケージがインストールされているかを 確認しておいてください。

更にRMagickには、バージョン1系とバージョン2系があり、協働できる ImageMagick のバージョンが異なります。 詳しくはこちら (当然、2系の方がAPIは豊富です)

さて、Redhat Enterprise Linux 5で、オフィシャルのリポジトリからrpmでインストールした場合、 ImageMagickのバージョンは 6.2.8 のはずです。

この為、インストールできる RMagick はバージョン1系ということになります。 バージョン1系の最新(最終?)は 1.15.17 のようです。

インストール

バージョンを指定してインストール。

$ sudo gem install rmagick --version 1.15.17

これで上手くいけば良いのですが、上手くいかないはずです。

わざわざこんなエントリを書いているぐらいですからね

Building native extensions.  This could take a while...
ERROR:  Error installing rmagick:
        ERROR: Failed to build gem native extension.
(略)
Gem files will remain installed in /usr/lib/ruby/gems/1.8/gems/rmagick-1.15.17 for inspection.
Results logged to /usr/lib/ruby/gems/1.8/gems/rmagick-1.15.17/gem_make.out 

そして、インストールログを見ろと言われる訳ですが、ログの最後の行が

RMagick configuration completed successfully.

だったりして、さっぱり訳が判りません。

この問題は、ネイティブコードをビルドするgemに共有する問題だと思っているのですが……。

  • ネイティブコードをビルドする gem を
  • version オプションを指定してインストールしようとすると

問答無用でエラーになるような気がします。 rubygems のソース自体は追っていないので、あくまで推測ですが。

エラー回避(1)

では、何が必要かと言うと、version オプションを使用せずに、固有のバージョンのgemをインストールできれば良い訳です。

幸い、すでに必要なgemファイルは取得されています。 このファイルを指定してやれば、version オプション無しで、固有のバージョンのgemをインストールできます。

$ cp /usr/lib/ruby/gems/1.8/cache/rmagick-1.15.17.gem ~/.
$ sudo gem install ~/rmagick-1.15.17.gem

先程よりは、先に進めるはずです。

ちなみに、sqlite3-ruby などはこれでインストールに成功します。

今度のログは、ちゃんと configure が動作した形跡があり、make も動いているようです。 エラーを吐いているのは、post-setup.rb のようです。 スタックトレースの先頭あたりを見ると

setup.rb: entering post-setup phase...
post-setup.rb: setting up documentation...
/usr/bin/ruby -I /usr/lib/ruby/gems/1.8/gems/rmagick-1.15.17/./lib -I /usr/lib/ruby/gems/1.8/gems/rmagick-1.15.17/./ext/RMagick Adispatch.rb (example 1 of 183)
/usr/bin/ruby -I /usr/lib/ruby/gems/1.8/gems/rmagick-1.15.17/./lib -I /usr/lib/ruby/gems/1.8/gems/rmagick-1.15.17/./ext/RMagick InitialCoords.rb (example 2 of 183)
/usr/lib/ruby/gems/1.8/gems/rmagick-1.15.17/./lib/rvg/misc.rb:321:in `get_type_metrics': unable to read font `/usr/share/fonts/default/TrueType/verdana.ttf' (Magick::ImageMagickError)

はい、verdana.ttf を利用したテストでエラーが出ています。

エラー回避(2)

RMagick のインストール中のテストで利用されるTrue Typeフォントは

  • arial.ttf
  • arialbd.ttf
  • arialbi.ttf
  • verdana.ttf

の4つです。

ASCIIが揃っていれば良いはずなので、適当なTrue Typeフォントをリネームするか、 これらは、Windowsの標準インストールに含まれるフォントなので(ry

ともかく、なんとかして

/usr/share/fonts/default/TrueType/

にファイルを用意してください。

これまで、True Typeフォントを利用していなければ、ディレクトリも無いはずです。

これで、改めて

$ sudo gem install ~/rmagick-1.15.17.gem

を実行すると、

Building native extensions.  This could take a while...
Successfully installed rmagick-1.15.17
1 gem installed
Installing ri documentation for rmagick-1.15.17...
Installing RDoc documentation for rmagick-1.15.17...

はい、インストールに成功しました。

おつかれさまでした。