先日、CentoOSにWeb::Queryを入れようとしたらこけてハマってた。レガシーなシステムでの使用だったので当然Carton
なんか使ってないし、モジュールはそれぞれのサーバに入って直接cpanm
する形だったが、やはりこういったレガシーな開発手順というのは早めに駆逐されたほうが世の(開発者)のためだと感じた。
開発環境では一発で入ってたし、試しにと手元のMBAにcpanm Web::Query
しても問題なく入ったのに、肝心の本番サーバでWeb::Queryが入らない。テストでこけてる。その他perl5.8.8を新規に入れたまっさら状態のサーバを用意して試しても見たけど再現しない。なんなんだ。
ためしに最新版ではない、0.16とかいくつか古いバージョンのWeb::Queryも試したけれど、特に違いはうまれなかったので、最近の変更が原因ではなさそう。
サマリーだけ抜き出すとこんな感じ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
HTML::Element
結論からいうとHTML::Elementが入ってなかった。
Web::Queryの依存モジュールに入ってないから必ずしもHTML::Elementが必要なわけではないのだろうけど(というか依存モジュール入れる時点で入りそうなもんだけど)、これがないと何故か’\n’がwq->as_html
だかの結果に入り込んでテスト結果が誤判定?されてしまっていた。cpanm --look Web::Query
してテストを自分で書き換えたりもしてみたら、どうにもやはりこの”\n”が問題のようなんだけど、これはなんでだろう。
「これは何かおかしい」と思って、適当に関係しそうっぽいモジュールを入れてから再度cpanm
すると、今度は何事もなかったかのようにインストールされた。それがHTML::Elementだった。他にもHTML::ParserとかXML::LibXMLとか色々入れなおしたけど、やっかいなのはこれな気がする。
何が面倒かって、特にモジュールが足りてない(Can’t locate~)とか言われずに、淡々とテストの文字列比較で落ちてるのが面倒だった。
おわりに
一応エラーのログを貼っておこうかと思う。結局技術的に踏み込んで解決策を見出したわけでもないゆるふわな記事だけど、まぁそういう風にハマってた人もいたってことで。
ちなみに、このWeb::Query、とても便利。