2013-12-26 perl
Vagrant で centOS6.4(64bit)環境作って perl-5.8.2 をソースインストールしたときのメモ。
まずは以下コマンドを実行してmake。prefix は /usr/local/perl5_8_2、libpth は /usr/lib64等 を先に読むように設定。
$ mkdir -p /usr/local/perl5_8_2/bin $ cd /usr/local/src $ wget http://www.cpan.org/src/5.0/perl-5.8.2.tar.gz $ tar -xzvf perl-5.8.2.tar.gz $ cd perl-5.8.2 $ ./Configure -Dprefix=/usr/local/perl5_8_2 -Dlibpth="/usr/local/lib64 /lib64 /usr/lib64 /usr/local/lib /lib /usr/lib" -ds && make
で、以下のエラーが出て make がこけた。
make: *** No rule to make target `<command-line>', needed by `miniperlmain.o'. Stop.
検索したらmakedepend.SH の一部を書き換えればOKとのこと。さっそく makedepend.SH を開いて170行目に以下の行を追加。
$ vim makedepend.SH $sed \ -e '1d' \ -e '/^#.*<stdin>/d' \ -e '/^#.*<builtin>/d' \ -e '/^#.*<built-in>/d' \ -e '/^#.*<command-line>/d' \ ← この行追加 -e '/^#.*"-"/d' \
んで再makeしたんだけど今度は「asm/page.h が見つかりません」ていうエラーでまた make がこける。
$ make depend && make … SysV.xs:7:25: error: asm/page.h: No such file or directory … make: *** [lib/auto/IPC/SysV/SysV.so] Error 2
/usr/include/asm/ 配下を見ると確かに page.h がない。 いろいろ漁ったら /usr/src/kernels/2.6.32-358.23.2.el6.x86_64/include/asm-generic/ に page.h があったからシンボリックリンクを張って対処。 他にもパラパラとファイルが見つからない系エラーが出てmakeがこけたから、都合以下の4つのシンボリックリンクを作成した。
$ cd /usr/src/kernels/2.6.32-358.23.2.el6.x86_64/include/ $ ln -s asm-generic/page.h /usr/include/asm/page.h $ ln -s asm-generic/memory_model.h /usr/include/asm-generic/memory_model.h $ ln -s asm-generic/getorder.h /usr/include/asm-generic/getorder.h $ ln -s linux/compiler.h /usr/include/linux/compiler.h
やっと入った。
$ make $ make install $ /usr/local/perl5_8_2/bin/perl -v This is perl, v5.8.2 built for x86_64-linux Copyright 1987-2003, Larry Wall