Landscape トップページ | < 前の日 2004-12-04 2004-12-05 次の日 2004-12-06 >

Landscape - エンジニアのメモ 2004-12-05

複数バージョンの Perl を共存インストール


* 複数バージョンの Perl を共存インストール

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Perl]

私の使っている Linux マシンの一つに、とても古い個体がある。そのマシンに最初から入っている古い Perl と共存させるかたちで最新の Perl をインストールしたい。

- 私の使っている古い Linux マシン

OS は TurboLinux Server 6.5。Pentium 200MHz に 128MB の SDRAM、4GB + 3GB + 8GB で合計15GB のディスク、DEC の Tulip LAN カード。今となってはまったくパワー不足に見えるかもしれない。しかし、ハードウェアが古くても、ソフトウェアが新しければ問題ない。常用するアプリケーションは新しめのものを入れてあるし、Ruby は 1.8.1 をインストールしてある。このマシンでは MovableType も動いている。要は使い方だ。

ただ、Perl が古いのが問題だ。OS と一緒にインストールされた Perl 5.005_03 しか入っていない。新しいライブラリを使いたいのに、バージョンが古いせいでその恩恵にあずかれない。最新の Perl をインストールしたいところだが、古い Perl を単純に新しいバージョンの Perl で置き換えてしまうと、既存のスクリプトやツールが動かなくなってしまうかもしれない。というわけで、もとの 5.005_03 を残しつつ Perl 5.8.6 を別途インストールすることにした。

- 複数バージョンを共存させつつインストールするには?

複数バージョンを共存させつつインストールするにはどうしたらいいんだろう? 単純にパスを別にしておけばいいのかな。たぶん configure スクリプトでインストール先ディレクトリを指定することができるだろうから、それを既存の Perl と別にしてやればいいよね。

ひとまず Perl のソースコード一式をダウンロードしてこよう。今の Perl の安定版の最新のバージョンってなんだっけ? perl.com http://perl.com/ を見てみると、Stable is 5.8.6. という表示があった。うわー、ちょっと前に 5.8.1 が出たと思ったら、もう 5.8.6 まで出てるのか。

RingServer から Perl 5.8.6 のソースアーカイブをダウンロード。perl.com からダウンロードしてもよかったんだけど、こういう人気のありそうなサイトには負荷をかけちゃいけないよね。日本には RingServer があるんだし、そっちからダウンロードしよう。

Index of /archives/lang/perl/CPAN/src
http://ring.pwd.ne.jp/archives/lang/perl/CPAN/src/
perl-5.8.6.tar.bz2        28-Nov-2004 08:56  9.2M

上記ミラーサイトから、perl-5.8.6.tar.bz2 をダウンロードした。

stable.tar.bz2            28-Nov-2004 08:56  9.2M
これも中身は同じなんだろうな。

- perl の Configure, make, make test

tar ball を展開してとりあえず Configure を実行してみる。対話形式で設定が進む。ひたすら enter キーを連打。途中で、インストール先の prefix をどうするかを聞いてきた。これを指定してやればよさそうだ。

By default, perl5 will be installed in /usr/local/bin, manual pages
under /usr/local/man, etc..., i.e. with /usr/local as prefix for all
installation directories. Typically this is something like /usr/local.
If you wish to have binaries under /usr/bin but other parts of the
installation under /usr/local, that's ok: you will be prompted
separately for each of the installation directories, the prefix being
only used to set the defaults.

Installation prefix to use? (~name ok) [/usr/local]

古い perl は /usr/bin にインストールされているから、新しい perl は /usr/local などのディレクトリに入れてやればいい。とりあえずバイナリとライブラリ群を共存させるだけなら、これで十分かな。そうだ、今後 5.8.6 以外のバージョンをインストールするかもしれないから、/usr/local/perl に入れる事にしよう。perl のパスは /usr/local/perl/bin/perl になっちゃってかっこ悪いけど、まあいいでしょ。他にも、man page のインストール先なども指定できるようだけど、今回はデフォルトのままとした。

しかし、こんなに質問項目が多いと対話形式で設定するのは大変だな。一気に設定する方法はないかなー。INSTALL を読んでみる。なになに、Configure に -d オプションを渡せば質問にすべてデフォルトで答えてくれると。それは便利だ。あと、-D を使えば設定する値を引数として Configure に渡せる。じゃあこうすればいいんだな。

Configure と make と make test まで。
tar --bzip2 -xvf perl-5.8.6.tar.bz2
cd perl-5.8.6/
sh Configure -Dprefix=/usr/local/perl -de && nice -19 make && make test

configure と コンパイルを含の所要時間がどれくらいかを知りたかったので、実際には以下のようにした。
time { sh Configure -Dprefix=/usr/local/perl -de && nice -19 make && make test; }

これであとは終わるのを待つだけ。生成された config.sh というファイルが Configure の結果を格納した設定ファイルだそうだ。

なんだか make test がうまくいってないみたいだけど・・・。LD_LIBRARY_PATH を設定しろって? make test まで時間かかるので、またあとでやってみよう。
Failed 1 test script out of 849, 99.88% okay.
### Since not all tests were successful, you may want to run some of
### them individually and examine any diagnostic messages they produce.
### See the INSTALL document's section on "make test".
### You have a good chance to get more information by running
###  ./perl harness
### in the 't' directory since most (>=80%) of the tests succeeded.
### You may have to set your dynamic library search path,
### LD_LIBRARY_PATH, to point to the build directory:
###  setenv LD_LIBRARY_PATH `pwd`:$LD_LIBRARY_PATH; cd t; ./perl harness
###  LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; cd t; ./perl harness
###  export LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH; cd t; ./perl harness
### for csh-style shells, like tcsh; or for traditional/modern
### Bourne-style shells, like bash, ksh, and zsh, respectively.
u=27.54  s=3.1  cu=1924.17  cs=117.78  scripts=849  tests=87734
make[2]: *** [_test_tty] エラー 1
make[2]: 出ます ディレクトリ `/home/hiroaki/src/perl-5.8.6'
make[1]: *** [_test] エラー 2
make[1]: 出ます ディレクトリ `/home/hiroaki/src/perl-5.8.6'
make: *** [test] エラー 2

real    85m47.694s
user    74m29.910s
sys    4m37.180s

実行したマシンのスペック。

Linux version 2.2.18-2 (support@kernel.turbolinux.com) (gcc version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release)) #1 Wed Mar 14 12:38:41 JST 2001
Detected 200460 kHz processor.
Console: colour VGA+ 80x25
Calibrating delay loop... 399.76 BogoMIPS
Memory: 127408k/131072k available (1488k kernel code, 408k reserved, 1684k data, 84k init, 0k bigmem)

ちなみに、Configure と make と make テストを Pentium4 3.0GHz HyperThreading ON + 2048MB Memory のマシンで同じように実行したところ、8分弱で終わった。さすがに速いな。make test でもエラー出なかったし。

real    7m47.858s
user    4m20.804s
sys    0m56.577s


すべての記事の見出し (全1029件)
全カテゴリの一覧と記事の数
カテゴリごとに記事をまとめ読みできます。記事の表題だけを見たい場合は、すべての記事の見出し (カテゴリ別表示) へ。

直近30日分の記事
2007-04-23 (Mon)
2007-03-07 (Wed)
2007-02-27 (Tue)
2007-01-17 (Wed)
2007-01-15 (Mon)
2007-01-14 (Sun)
2007-01-08 (Mon)
2006-12-01 (Fri)
2006-11-22 (Wed)
2006-11-20 (Mon)
2006-11-19 (Sun)
2006-09-30 (Sat)
2006-08-29 (Tue)
2006-08-04 (Fri)
2006-07-27 (Thu)
2006-07-23 (Sun)
2006-07-17 (Mon)
2006-07-10 (Mon)
2006-07-06 (Thu)
2006-07-03 (Mon)
2006-06-29 (Thu)
2006-06-28 (Wed)
2006-06-27 (Tue)
2006-06-25 (Sun)
2006-06-19 (Mon)
2006-06-18 (Sun)
2006-06-15 (Thu)
2006-06-11 (Sun)
2006-06-01 (Thu)
2006-05-30 (Tue)
プロファイル
斎藤 宏明。エンジニアです。宇都宮市に住んでいます。
リンク
RSS
スポンサードリンク
Powered by
さくらインターネット

© 斎藤 宏明 Saito Hiroaki Gmail Address
Landscape - エンジニアのメモ http://sonic64.com/
Landscape はランドスケープと読みます。
ひらがなだと らんどすけーぷ です。