目の前に僕らの道がある

勉強会とか、技術的にはまったことのメモ

$GREP_OPTIONSが原因でperlのビルドが失敗した件

perl-5.14.2を使いたいなと思い、何気なくperlbrew経由でインストールしようとしたら、なにやらビルドに失敗してしまいました。

% perlbrew install perl-5.14.2
# ... 中略
# Bのビルドに失敗している模様

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 (@INC contains: /home/masasuzu/perl5/perlbrew/build/perl-5.14.2/cpan/AutoLoader/lib /home/masasuzu/perl5/perlbrew/build/perl-5.14.2/dist/Cwd /home/masasuzu/perl5/perlbrew/build/perl-5.14.2/dist/Cwd/lib /home/masasuzu/perl5/perlbrew/build/perl-5.14.2/dist/ExtUtils-Command/lib /home/masasuzu/perl5/perlbrew/build/perl-5.14.2/dist/ExtUtils-Install/lib /home/masasuzu/perl5/perlbrew/build/perl-5.14.2/cpan/ExtUtils-MakeMaker/lib /home/masasuzu/perl5/perlbrew/build/perl-5.14.2/dist/ExtUtils-Manifest/lib /home/masasuzu/perl5/perlbrew/build/perl-5.14.2/cpan/File-Path/lib /home/masasuzu/perl5/perlbrew/build/perl-5.14.2/ext/re /home/masasuzu/perl5/perlbrew/build/perl-5.14.2/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 404.
Warning: No Makefile!
make[1]: Entering directory `/home/masasuzu/perl5/perlbrew/build/perl-5.14.2/ext/B'
make[1]: *** No rule to make target `config'.  Stop.
make[1]: Leaving directory `/home/masasuzu/perl5/perlbrew/build/perl-5.14.2/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]: Entering directory `/home/masasuzu/perl5/perlbrew/build/perl-5.14.2/ext/B'
make[1]: *** No rule to make target `all'.  Stop.
make[1]: Leaving directory `/home/masasuzu/perl5/perlbrew/build/perl-5.14.2/ext/B'
Unsuccessful make(ext/B): code=512 at make_ext.pl line 463.
make: *** [ext/B/pm_to_blib] Error 2
make: *** No rule to make target `lib/auto/Cwd/Cwd.so', needed by `utilities'.  Stop.

OSの問題かなと思い、Ubuntu 10.04 amd64Ubuntu 11.10、Debian lenny、MacOS Xを試しましたが、いずれの環境でも失敗しました。さらに、perlbrew自体の問題かなと思い最新版にアップデートしても同じ箇所でビルドが失敗します。
さらに、今まで普通にビルドできていたperlのバージョンでも失敗するので、自分の環境特有の問題だなとあたりを付けてみると、どうやら$GREP_OPTIONSが悪さをしていたようです。どのオプションが悪いのかまでは追ってませんが、とりあえず下記のようにして回避しました。

% GREP_OPTIONS= perlbrew install perl-5.14.2

ちなみにどの環境でも設定されているGREP_OPTIONSは以下の通りです。どれかが悪さをしている模様。

% echo $GREP_OPTIONS
--color=auto --exclude=\*.tmp --binary-files=without-match