2009年9月4日金曜日

IO::Ttyのインストール

PerlでExpectの続きのような感じですが、Expect.pmを使うためには、Pty.pmというモジュールが必要です。ない環境で実行すると、しょっぱなで、
Can't locate IO/Pty.pm in @INC...
というエラーが出ます。

で、このPty.pmは、IO::Ttyというモジュールに含まれているので、こちらをインストールします。
http://search.cpan.org/~rgiersig/IO-Tty-1.08/Tty.pm

ところが、です。こちらのモジュール、Expectなどの「普通の」モジュールとは違いまして、適当なところに置くだけでは使えません。いままでは、パッケージのフォルダの中にMakefile.PLとかあっても無視していたのですが、ちゃんとインストールしないといけません。

しかしさらに!このインストール処理では、中でしっかりCのコンパイラを使います。それもどうも、gccでなくてはいけないようです。また、他のライブラリとか、GNUのmakeなども入れる必要があります。
このあたり全く初心者のわたくしは、会社の人に教えを請いながらコツコツ入れてみました。
前置きはこのくらいで、導入手順です。
-----
その1~UNIXモジュールのインストール(rootでやります)
・gcc 3.4.6
・libiconv 1.11
・binutils 2.19
・make 3.81

1.sunfreeware.comから、以下のインストールモジュールを落としてくる
gcc-3.4.6-sol10-sparc-local.gz
libiconv-1.11-sol10-sparc-local.gz
binutils-2.19-sol10-sparc-local.gz
make-3.81-sol10-sparc-local.gz

2.各モジュールをgunzipで解凍

3.パッケージのインストール
特に順序は気にしなくても大丈夫みたいです。

#pkgadd –d gcc-3.4.6-sol10-sparc-local
#pkgadd –d libiconv-1.11-sol10-sparc-local
#pkgadd –d binutils-2.19-sol10-sparc-local
#pkgadd –d make-3.81-sol10-sparc-local

「上書きするか?」と質問されたら、とりあえずyで答えておきました。

その2~Perlモジュールのインストール(rootでやります)
・IO::Tty 1.08

1.上記のCPANから、インストールモジュールを落としてくる

2.gunzipで解凍してから、tarで適当なところに展開
(IO-Tty-1.08 というディレクトリが作られて、その中に展開されます。)

3.PerlのConfig.pmをgccでのインストール用のものに置き換える
目的はよく知らないのですが、このファイルを一時的に置き換えておかないと、インストールの時にエラーになります。
(逆に、元のConfig.pmを使う場合、というのがよくわからないので、永久的に置き換えてしまってもいいのかもしれません。)
サーバ上のPerlが5.8.4の場合です。

#cd /usr/perl5/5.8.4/lib/sun4-solaris-64int/
#cp –p Config.pm Config.pm.bak
#cp –p /usr/perl5/5.8.4/lib/Sun/Solaris/PerlGcc/Config.pm .

4.モジュールのインストール
#cd .../IO-Tty-1.08 (先ほど展開して作成されたディレクトリに移動
#perl Makefile.PL

何だかよくわからない記号がいっぱい出てきて、makefileの作成を行っているようです。
このモジュールは、仮想ターミナルを作成する、ということを行うので、システムの構成情報を取ってきて、設定に反映させているのだと思います。

#make
#make test
#make install
この3つは、どうしてこの順序でやるのか理解していないのですが、まあ、定番ですね。make testが一番の山場のようで、ここが問題なく通れば、make installは基本的に大丈夫みたいです。

5.Config.pmを元に戻す
#cd /usr/perl5/5.8.4/lib/sun4-solaris-64int/
#mv Config.pm.bak Config.pm


6.結果の確認
#/usr/perl5/5.8.4/bin/perldoc Tty.pm
これで結果が確認できれば、ちゃんとインストールされているようです。
ちなみに、インストールしたファイルの一覧は、こちらにあります。
/usr/perl5/site_perl/5.8.4/sun4-solaris-64int/auto/IO/Tty/.packlist

モジュールのアンインストール、という処理はないのですが、この一覧のファイルを削除すれば、元に戻るようです。
-----
ここまでやるのだったら、Expect.pmもインストーラを使ってちゃんとインストールしてもよいかもしれないですね。なにぶん自分は、間借りしているサーバだったので、システムレベルのインストールは最小限にしたかったのです。

あ、当然ながら、上記の作業の前には、/usr/local/bin/ や、/usr/sfw/bin の下に既にgccが入っていないかどうか、とかは確認しておきましょう。入っていれば、パスを通すだけで使えるはずです。