App::highlightをplenv+cpanmでインストールしてみた

このスライドを見て便利そうなのでインストールしてみた.

http://www.slideshare.net/kaokun/apphighlight-londonpm-tech-meeting-july-2013

App::highlight はコマンドラインで指定したキーワードに見やすく色を付けてハイライトしてくれる.
grepしても1行が長くて見たかった場所を発見するのに苦労していたようなケースで非常に捗ると思われる.

普段はperlを使っていないので,plenv + cpanm でシステムのperlとは独立にインストールした手順のメモ.
cpanmをインストールするまではほぼplenvのREADMEの手順のまま.

(1) plenv をインストール

まずはplenv本体のインストール.

$ git clone git://github.com/tokuhirom/plenv.git ~/.plenv
$ echo 'export PATH="$HOME/.plenv/bin:$PATH"' >> ~/.zshrc
$ source ~/.zshrc
$ echo 'eval "$(plenv init -)"' >> ~/.bash_profile
$ source ~/.zshrc

次にperl-buildをplenvのpluginsディレクトリにcloneしてくる.

$ git clone git://github.com/tokuhirom/Perl-Build.git ~/.plenv/plugins/perl-build/

これで好きなバージョンのperlをインストールする準備が整った.

(2) perl をインストール

所望のバージョンのperlをインストールする.

$ GREP_OPTIONS= plenv install 5.18.1
$ plenv rehash
$ plenv global 5.18.1

環境変数GREP_OPTIONSが原因でmakeで失敗する場合があるので注意が必要.
今回以下の様な設定になっていたらmakeでerrorとなった.

$ echo $GREP_OPTIONS
 --color=auto --exclude-dir=.hg --exclude-dir=.libs --exclude-dir=.deps --exclude-dir=.git --exclude-dir=.svn --exclude=\*.tmp --binary-files=without-match

エラー内容は下記の通り.

$ plenv install 5.18.1
...(省略)...
make -f Makefile.old clean > /dev/null 2>&1
../../miniperl "-I../../lib" "-I../../lib" Makefile.PL "INSTALLDIRS=perl" "INSTALLMAN1DIR=none" "INSTALLMAN3DIR=none" "PERL_CORE=1" "LIBPERL_A=libperl.a"
Writing Makefile for AutoLoader
==> Your Makefile has been rebuilt. <==
==> Please rerun the make command.  <==
false
make[1]: *** [Makefile] エラー 1
make[1]: ディレクトリ `/home/masa21kik/.plenv/build/perl-5.18.0/cpan/AutoLoader' から出ます
 make config PERL_CORE=1 LIBPERL_A=libperl.a failed, continuing anyway...
Making all in cpan/AutoLoader
 make all PERL_CORE=1 LIBPERL_A=libperl.a
make[1]: ディレクトリ `/home/masa21kik/.plenv/build/perl-5.18.0/cpan/AutoLoader' に入ります
Skip ../../lib/AutoSplit.pm (unchanged)
Skip ../../lib/AutoLoader.pm (unchanged)
make[1]: ディレクトリ `/home/masa21kik/.plenv/build/perl-5.18.0/cpan/AutoLoader' から出ます
./miniperl -Ilib make_ext.pl ext/B/pm_to_blib MAKE=make LIBPERL_A=libperl.a
        Making B (all)

Running Makefile.PL in ext/B
../../miniperl -I../../lib Makefile.PL INSTALLDIRS=perl INSTALLMAN1DIR=none INSTALLMAN3DIR=none PERL_CORE=1 LIBPERL_A=libperl.a
Can't locate ExtUtils/Constant.pm in @INC (you may need to install the ExtUtils::Constant module) (@INC contains: /home/masa21kik/.plenv/build/perl-5.18.0/cpan/AutoLoader/lib /home/masa21kik/.plenv/build/perl-5.18.0/dist/Carp/lib /home/masa21kik/.plenv/build/perl-5.18.0/dist/Cwd /home/masa21kik/.plenv/build/perl-5.18.0/dist/Cwd/lib /home/masa21kik/.plenv/build/perl-5.18.0/dist/ExtUtils-Command/lib /home/masa21kik/.plenv/build/perl-5.18.0/dist/ExtUtils-Install/lib /home/masa21kik/.plenv/build/perl-5.18.0/cpan/ExtUtils-MakeMaker/lib /home/masa21kik/.plenv/build/perl-5.18.0/dist/ExtUtils-Manifest/lib /home/masa21kik/.plenv/build/perl-5.18.0/cpan/File-Path/lib /home/masa21kik/.plenv/build/perl-5.18.0/ext/re /home/masa21kik/.plenv/build/perl-5.18.0/dist/Term-ReadLine/lib /home/masa21kik/.plenv/build/perl-5.18.0/lib .) at Makefile.PL line 2.
BEGIN failed--compilation aborted at Makefile.PL line 2.
512 from ext/B's Makefile.PL at make_ext.pl line 430.
Warning: No Makefile!
make[1]: ディレクトリ `/home/masa21kik/.plenv/build/perl-5.18.0/ext/B' に入ります
make[1]: *** ターゲット `config' を make するルールがありません.  中止.
make[1]: ディレクトリ `/home/masa21kik/.plenv/build/perl-5.18.0/ext/B' から出ます
 make config PERL_CORE=1 LIBPERL_A=libperl.a failed, continuing anyway...
Making all in ext/B
 make all PERL_CORE=1 LIBPERL_A=libperl.a
make[1]: ディレクトリ `/home/masa21kik/.plenv/build/perl-5.18.0/ext/B' に入ります
make[1]: *** ターゲット `all' を make するルールがありません.  中止.
make[1]: ディレクトリ `/home/masa21kik/.plenv/build/perl-5.18.0/ext/B' から出ます
Unsuccessful make(ext/B): code=512 at make_ext.pl line 490.
make: *** [ext/B/pm_to_blib] エラー 2
Installation failure: make at /home/masa21kik/.plenv/plugins/perl-build/bin/../lib//Perl/Build.pm line 280.
ABORT

参考) http://masasuzu.hatenablog.jp/entry/20111027/1319730973

(3) cpanm をインストール

$ plenv install-cpanm
$ plenv rehash

(4) App::highlight をインストール

$ cpanm install App::highlight
$ plenv rehash

以上の手順で無事に App::highlight が使えるようになった.