App::cpanminusのアレコレ
Perlを使ったプロジェクトではローカル環境にモジュールをインストールすることが多いかと思われます。
App::cpanminusが登場した昨今、ローカルにインストールする煩わしさも消えたかのように思えましたが世の中はそう上手くもいかないようで・・・
普段は以下のようなコマンドでCPANモジュールをインストールしているかと思います
cpanm -L extlib/ Text::MeCab
外部ライブラリ等に依存することない普通のモジュールは無事依存関係も解消され、1発でインストールが通るはずです。
しかし、外部ライブラリに依存するモジュールをインストールする場合は、Makefile.PLの中でしばしばライブラリのパスを聞かれたり、設定情報を聞かれたりします。今まで通りのやり方ではすっ飛ばされてインストールが失敗してしまいます。
そのような場合はcpanmに以下のオプションを付け加えましょう
cpanm -L extlib/ --interactive Text::MeCab
interactiveオプションを付け加えます。
--interactive Turns on interactive configure (required for Task:: modules)
このオプションをつけることによって対話形式で設定を行うことが出来るようになるでしょう。
ついでに、もしも失敗した時のために、以下のオプションもつけ加えることをオススメします
cpanm -L extlib/ --interactive --prompt Text::MeCab
promptオプションは設定・ビルド・テストのいずれかが失敗した場合にプロンプトが表示され、その後の行動を選択する事ができます。lookを指定した場合、一時的にシェルが該当モジュールのディレクトリ(~/.cpanm/latest-build)で立ち上がるので、失敗した原因を調べましょう(なお、この時点ではbuild.logは生成されていないので見ることが出来ません)。
めかぶの場合:
$ cpanm -L extlib/ --interactive --prompt Text::MeCab --> Working on Text::MeCab Fetching http://search.cpan.org/CPAN/authors/id/D/DM/DMAKI/Text-MeCab-0.20012.tar.gz ... OK Configuring Text-MeCab-0.20012 ... Path to mecab config? /home/project/mecab/lib Can't proceed without mecab-config. Aborting... Configuring Text-MeCab failed. You can s)kip, r)etry or l)ook ? [s]