犬ターネット

centOS6.4(64bit)にちょっと古めのperlをインストールするまで

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

2013

白い鼻毛