(Install)cpanコマンドによるPerlモジュールのローカルインストール今時Perlを使った開発はあまりない。既存のソフトウェアがPerlを使っているために,Perlの開発環境が必要になることがある。Perlのパッケージ管理にはいくつかの方法が存在するようだ。今回はその中でPerl標準コマンドであるcpanコマンドを使ったPerlモジュールのローカルインストール方法をまとめる。インストールするコマンドだ。引数に何も指定しなければ,対話シェルが起動し,そこでCPANモジュールの対話コマンドを実行でき,細かい設定などができる。以下のようにperlからCPANモジュールを使ってインストールする方法もある。module-name"結局はcpanコマンドもCPANモジュールを使っているので,やっていることは同じだ。専用のcpanコマンドが存在しており,こちらを使ったほうがわかりやすいので,cpanコマンドだけを使うことにする。cpanの初回起動時はcpanの設定を行う。cpanの初回起動時設定を確認・把握し,その後のインストール手順を整理する。この節は参考情報であるため,実際に実行する必要はない。以下のコマンドでcpanを起動できる。cpancpanを引数なしで起動すると,対話シェルが起動し,初回起動時は以下の設定を自動で行うかの質問が表示される。これはyesでよいので,そのままEnterを入力する。noを選択した場合,ミラーサイトの設定などを行うことになる。~/.cpanディレクトリーに格納される。~/.local/share/.cpanだった。cpan関係の設定で困ったら,最悪これらのディレクトリーを削除すればやり直せる。initコマンドにより再設定できる。perldoc.perl.org」に記載がある。続いて,インストール方法の質問が表示される。ここのデフォルトがlocal::libとなっている。自分の知る限り,Ubuntu14.04からはすでにcpanでのパッケージ管理にはlocal::libが標準となっているようだ。ここもそのままで問題ない。すると,インターネットからlocal::libのインストールが始まる。local::libの自動インストールにより,以下のファイル群がインストールされる。/home/senooken/perl5/lib/perl5/x86_64-linux-gnu-thread-multi/perllocal.podインストールが終わると,最後に以下の質問が表示される。ここでは,local::libモジュールを~/perl5にインストールしたので,そこへのPATHの設定を~/.bashrcに追記するか質問している。デフォルトのyesでよいだろう。これでcpanの初回起動時設定が完了となる。cpanの初期設定の問題cpanの初回起動時設定の動作をひと通り記した。ここで,cpanの初回起動時設定が全て標準の設定だと問題がある。Perlモジュールのインストール場所が$HOME/perl5となってしまい,勝手にそこにlocal::libモジュールがインストールされてしまうからだ。「stowによるローカルパッケージ管理」に記した通り,他のパッケージとの整合性を取るために,パッケージのローカルインストールは,~/.local配下に行いたい。環境を汚したくないので,初回のlocal::libも~/.localにインストールされるようにしたい。調べたところ,local::libのインストールの質問は以下の2条件が満たされた場合にのみ発生する。cpanコマンド実行時のlocal::libのインストールの質問の発生条件.cpanディレクトリーの不在PERL_MM_OPT環境変数の未定義そこで,local::libで使用する変数を利用し,cpanの初期設定を工夫する。cpanの推奨設定とインストール手順まず,事前に以下の環境変数を設定して,~/.profileや~/.bashrcにも記載しておく。PERL_MM_OPT="INSTALL_BASE=$LOCAL"その後,以下のコマンドでlocal::libモジュールをインストールする。local::lib上記コマンドにより,local::libモジュールが~/.localにインストールされる。cpan初回起動時の質問を回答するために,echoコマンドで標準入力を渡している。local::libのインストール後は,cpanでインストールするPerlモジュールも~/.localにインストールされる。上記のLOCAL環境変数を変更すれば,任意のディレクトリーにPerlモジュールをcpanでインストール可能だ。checkに必要なIO::ScalarモジュールとTest::Outputモジュールは以下のコマンドでインストールできる。Test::OutputこれでcpanによるPerlのローカルインストールが可能となる。モジュールのアンインストールcpanでインストールしたモジュールのアンインストール方法はやや手間がかかる。uninstallによりアンインストールする。cpanコマンド使ってであるとすると、それは実際にはMakefileでのコンパイル&installになります。install系の、これは最大の欠点といわれているのですが。「自力で手動で探し出す以外に削除手段はない」です。rpm系の唯一にして最大の利点がココの部分の解消ですね。あたり)に.cpan/build/というディレクトリがありまして、その下にソースが展開されているので。.soファイルは...Makefile解析するか、findあたりで探すか、で削除するしかないです。Test-Output-1.031-ovRQ3A)。アンインストール対象のパッケージのビルドディレクトリーにcdコマンドで移動し,以下のコマンドを実行することでアンインストールを実現する。SITEARCHEXP="$LOCAL/lib/perl5/x86_64-linux-gnu-thread-multi"ここでは,Makefile内のSITEARCHEXP変数を引数で上書きしている。Makefile内ではここが/usr/local/lib/perl5/x86_64-linux-gnu/perl/5.22.1などになっている。uninstall時に,ここに格納されているファイルをアンインストールしようとして,ファイルが存在しないために以下のエラーが出ていたため,上書きした。2なお,buildディレクトリーにパッケージのディレクトリーが存在しない場合,再度cpanで該当パッケージをインストールして,パッケージディレクトリーを用意して対応する。Module::Buildを使っているパッケージなどはこの方法ではアンインストールできない。cpanでインストールしたモジュールのアンインストールはやっかいな問題だ。cpanminusパッケージなどをインストールして対応すればよさそうだ。気が向いたら,cpanモジュールのアンインストール方法だけ別の記事にまとめる。最後にlocal::libで使用している環境変数をまとめる。