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
(3) cpanm をインストール
$ plenv install-cpanm $ plenv rehash
(4) App::highlight をインストール
$ cpanm install App::highlight $ plenv rehash
以上の手順で無事に App::highlight が使えるようになった.