Term::ReadLine::Gnu...というよりperlshのインストールメモ
サッカーアジア杯、日本優勝しましたね。サッカー観戦日に記事を書くy_echoです。どうもこんばんは。
最近~/homebrew、~/perl5/perlbrewな開発環境に再構築したんですが、perlshインストール時に少し手作業が必要だったのでメモっときます。
perlshはPerlのインタラクティブシェル
「perl interactive shell」でググるといくつか他のものも発見できますが、ぼくはWEB-DB PRESS*1の記事(by id:naoyaさん)でその存在を知ったperlshを使ってます。
[y_echo@MacBook ~]% perlsh main[1]$ use Data::Dumper; main[2]$ $dumped = { foo => 'bar' }; HASH(0x10093edc8) main[3]$ print Dumper($dumped); $VAR1 = { 'foo' => 'bar' }; 1 main[4]$
こんな感じです。たまーに使う程度ですが、あったらあったで便利なときもあります。
このperlsh、Term::ReadLine::Gnuのサンプルとしてディストリビューションに含まれているので、まずはTerm::ReadLine::Gnuをインストールします。
Term::ReadLine::Gnuのインストール
とりあえずcpanmすると
[y_echo@MacBook ~]% cpanm perlsh ! Finding perlsh on cpanmetadb failed. --> Working on perlsh Fetching http://search.cpan.org/CPAN/authors/id/H/HA/HAYASHI/Term-ReadLine-Gnu-1.20.tar.gz ... OK Configuring Term-ReadLine-Gnu-1.20 ... N/A ! Configure failed for Term-ReadLine-Gnu-1.20. See /Users/y_echo/.cpanm/build.log for details. [y_echo@MacBook ~]%
通りません。「perlshでも検索してくれるんですね。かしこい!」というのは置いておいてbuild.logを見ると
... !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! The libreadline you are using is the libedit library. Use the GNU Readline Library. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ...
ということで、GNU Readlineが入っていませんでした。GNU ReadlineのHombrew Formulaはデフォルトで含まれているので
[y_echo@MacBook ~]% brew install readline [y_echo@MacBook ~]% brew link readline
とします。なお、インストール時に「BSDのlibreadlineが云々...もし必要なら云々」と言われるため、brew linkして~/homebrew/libにライブラリのリンクを貼っておきます*2。
ここで再びcpanmするのですが、GNU Readlineがいわゆるデフォルトパスにないので、途中で自前configureします。
[y_echo@MacBook ~]% cpanm --prompt Term::ReadLine::Gnu --> Working on Term::ReadLine::Gnu Fetching http://search.cpan.org/CPAN/authors/id/H/HA/HAYASHI/Term-ReadLine-Gnu-1.20.tar.gz ... OK Configuring Term-ReadLine-Gnu-1.20 ... Configuring Term-ReadLine-Gnu failed. You can s)kip, r)etry or l)ook ? [s] l Entering /Users/y_echo/.cpanm/work/1296331256.12924/Term-ReadLine-Gnu-1.20 with /bin/zsh [y_echo@MacBook ~/.cpanm/work/1296331256.12924/Term-ReadLine-Gnu-1.20]%
INSTALLを読むとprefixだけいじればよさそうです。
[y_echo@MacBook ~/.cpanm/work/1296331256.12924/Term-ReadLine-Gnu-1.20]% perl Makefile.PL --prefix=~/homebrew/ ... Writing Makefile for Term::ReadLine::Gnu [y_echo@MacBook ~/.cpanm/work/1296331256.12924/Term-ReadLine-Gnu-1.20]% exit Configuring Term-ReadLine-Gnu failed. You can s)kip, r)etry or l)ook ? [s] s ... Successfully reinstalled Term-ReadLine-Gnu-1.20
perlshをディストリビューションからサルベージ
perlsh自体は自分でcpとかします。ちなみに、ぼくは以下の場所に置くことにしました。
[y_echo@MacBook ~]% cp ~/.cpanm/latest-build/Term-ReadLine-Gnu-1.20/eg/perlsh ~/perl5/perlbrew/perls/5.12.2/bin/perlsh
最後に、perlshのshebangを/usr/local/bin/perlから適当なものへ変更します。
#!/usr/bin/env perl
perlbrewを使ってる場合のshebangについては、@lestrratさんのエントリhttp://mt.endeworks.jp/d-6/2010/08/perlbrew.htmlなどを読んでみてください。