モジュールをインストールしよう

前へ << HTTP proxy サーバを作ってみよう モジュールを使って POP3 クライアントを作ってみよう >> 次へ

モジュール

ここまでは Socket、IO::Socket、IO::Select モジュールを 使ってきましたが、これらは標準モジュールですので わざわざインストールする必要はありませんでした。

この他にも、さらに便利なモジュール

  • Net::POP3 と Mail::POP3Client
  • Net::FTP
などがありますが、どちらも (少なくとも perl5.005_05 の時点では) 標準モジュールではないので、自分でインストールしなければいけません。

まず、モジュールの探し方ですが、 Net::POP3 モジュールは libnet-1.0607.tar.gz というファイルに 含まれています。このように、モジュール名とアーカイブ名が 別々なこともありますので注意して下さい。 アーカイブ名がわかっているなら http://www.ring.gr.jp/local/search-j.html から探すのがお手軽でしょうか。「libnet」をキーワードにすると

/pub/lang/perl/CPAN/authors/id/GBARR/libnet-1.0607.tar.gz
というファイルが見付かるでしょうから、それをダウンロードして下さい。

なお、ring サーバは CPAN サイトをミラーしているだけです。 直接 CPAN から落とすには

とすればよいですが、なるべくネットワーク的に近い RING サーバを 使った方がよいでしょう。

make

ダウンロードしたら
  1. tar (あるいは tar+gzip) でアーカイブを展開
  2. Makefile.PL (perl スクリプト) を実行し、Makefile を生成
  3. make で各種ファイルを生成
  4. root になって make install でインストール
を行います。具体的には以下のような感じです。
% tar zxvf libnet-1.0607.tar.gz
% cd libnet-1.0607/
% perl Makefile.PL (この perl は perl5 を使うこと)
% make
% su (root になる)
# make install (インストール)
ただし、これは root 権限を持っていないとうまくいきません。 個人のホームディレクトリにインストールする場合は、 Makefile 生成時に
% perl Makefile.PL LIB=~/p5-module/ INSTALLMAN1DIR=~/p5-module/man1/ \
                                    INSTALLMAN3DIR=~/p5-module/man3/
なととしましょう。make install 時に /home/username/p5-module/ 以下の ディレクトリにインストールされます。ここではホームディレクトリを 省略して ~/ と書くことができます。

なお、Makefile 生成時のオプションについては、

% perldoc ExtUtils::MakeMaker
で調べることができます。

FreeBSD の場合

ports/packages が用意されていますので、できるだけこちらを使いましょう。 p5- から始まるものがそうです。packages を使うなら
% su
# pkg_add p5-hogehoge.tar.gz
ports を使うなら
% su
# cd /usr/ports/perl5/hogehoge/
# make
# make install
です。

CPAN モジュール

FreeBSD のような簡単なインストール方法がない、あるいは 最新版のモジュールをインストールしたい、という場合は、 CPAN モジュールを使って、もっと楽にモジュールを管理することができます (最新版を使いたい場合でも、FreeBSD なら ports を使う方がいいかもしれない)。
  • モジュールをダウンロード
  • perl Makefile.PL, make, make install
  • 依存するモジュールを一括ダウンロード
  • 最新版のモジュールに更新
を自動で行うことができます。CPAN モジュールは標準でインストールされていますので、
% perl -MCPAN -e shell
とするだけで簡単に使えます。初めて使用する場合は設定に関する質問を 聞いてきます。
hoge hoge fuga fuga? [foo]
いくつかこのような質問されますが、ここで ENTER を押すと [] で囲まれているデフォルト値 (ここでは foo) が使われます。基本的に
  • CPAN サイトの選択
  • Proxy の選択
以外は ENTER を押してもいいでしょう。質問に対する 入力の部分は黄色で書きました。

以下、原文と拙訳です。

% perl -MCPAN -e shell
/home/username/.cpan/CPAN/MyConfig.pm initialized.

CPAN is the world-wide archive of perl resources. It consists of about
100 sites that all replicate the same contents all around the globe.
Many countries have at least one CPAN site already. The resources
found on CPAN are easily accessible with the CPAN.pm module. If you
want to use CPAN.pm, you have to configure it properly.

CPAN は perl のモジュールを集めているところで、全世界に100以上の
ミラーサイトがある。CPAN のデータには CPAN.pm モジュールを使って
簡単にアクセスできる。もし CPAN.pm を使いたいなら、適切に設定しなきゃ
いけない。

If you do not want to enter a dialog now, you can answer 'no' to this
question and I'll try to autoconfigure. (Note: you can revisit this
dialog anytime later by typing 'o conf init' at the cpan prompt.)

もしあなたが今設定を行いたくなかったら、
次の質問に `no' と答えてくれ。そしたら自動設定を行う。
ただし、CPAN プロンプト上で `o conf init' と
タイプしたら、いつでもここで省略した設定を行えるので、
心配しないように。

Are you ready for manual configuration? [yes] (ENTER)

手動設定の準備はいい? 
ENTER を押す (yes と答えたのと同じこと)

The following questions are intended to help you with the
configuration. The CPAN module needs a directory of its own to cache
important index files and maybe keep a temporary mirror of CPAN files.
This may be a site-wide directory or a personal directory.

設定を行うために、これからいくつかの質問をする。
CPAN モジュールは、キャッシュやテンポラリファイルのために
専用のディレクトリを必要とする。これは、共用のディレクトリでも
よいし、個人のディレクトリでもよい。

I see you already have a  directory
    /home/username/.cpan
Shall we use it as the general CPAN build and cache directory?

CPAN build and cache directory? [/home/username/.cpan] (ENTER)

モジュール構築用ディレクトリと、キャッシュ用ディレクトリを指定して。
省略したら /home/username/.cpan/ を使うけといい?
ENTER を押す。


If you want, I can keep the source files after a build in the cpan
home directory. If you choose so then future builds will take the
files from there. If you don't want to keep them, answer 0 to the
next question.

もし望むなら、コンパイルした後のソースファイルを
CPAN ディレクトリに保存しておくことができる。
保存しておくなら、次回のコンパイル時にその
ファイルが使われる。もし保存しておかないなら、
次の質問に対して 0 と回答すること。

How big should the disk cache be for keeping the build directories
with all the intermediate files?

Cache size for build directory (in MB)? [10] 20

コンパイルの際のファイルなどをキャッシュしておく
ディレクトリのサイズはどれくらいにする?

キャッシュディレクトリのサイズを MB 単位で答えてくれ (デフォルトは 10)

ここではなんとなく 20MB としてみた。

By default, each time the CPAN module is started, cache scanning
is performed to keep the cache size in sync. To prevent from this,
disable the cache scanning with 'never'.

デフォルトでは、CPAN モジュールが実行されたときに
(perl -MCPAN -e shell を実行したとき)、ネットワークに接続して、
キャッシュしておいたモジュールの一覧が最新のものかどうかを調べる。
これを行いたくないなら、キャッシュチェックを `never' にすること。

Perform cache scanning (atstart or never)? [atstart] (ENTER)

キャッシュチェックを有効にする?
「実行直後 (atstart)」か「チェックを行わない (never)」を選択。
デフォルトは「実行直後」。
まぁ、atstart を選んでおくのが無難か。なので、ENTER。

The CPAN module can detect when a module that which you are trying to
build depends on prerequisites. If this happens, it can build the
prerequisites for you automatically ('follow'), ask you for
confirmation ('ask'), or just ignore them ('ignore'). Please set your
policy to one of the three values.

Policy on building prerequisites (follow, ask or ignore)? [follow] (ENTER)

CPAN モジュールは、あなたがインストールしようとしている
モジュールが、他のモジュールに依存するかどうか (他のモジュールを
必要とするか) を自動的に調べることができる。その場合、
自動的に取得・コンパイルするか (follow)、ユーザに
問い合わせるか (ask)、無視する (ignore) という3通りの
方針がある。どの方針を選択するか選べ。

必要とするモジュールの構築方針は? (follow か ask か ignore) [デフォルトは follow]
follow か ask がいいだろう。とりあえず ENTER で follow を選択。

The CPAN module will need a few external programs to work
properly. Please correct me, if I guess the wrong path for a program.
Don't panic if you do not have some of them, just press ENTER for
those.

CPAN モジュールは、いくつかの外部プログラムを必要とする。
こちらで勝手に推測したプログラムのフルパスを表示するが、
間違っていたら修正してくれ。以下のプログラムを持っていなかったら
ENTER キーを押すだけでいいよ。

Where is your gzip program? [/usr/bin/gzip] (ENTER)
Where is your tar program? [/usr/bin/tar] (ENTER)
Where is your unzip program? [/usr/local/bin/unzip] (ENTER)
Where is your make program? [/usr/bin/make] (ENTER)
Where is your lynx program? [/usr/local/bin/lynx] (ENTER)
Warning: ncftpget not found in PATH
Where is your ncftpget program? [] (ENTER)
Warning: ncftp not found in PATH
Where is your ncftp program? [] (ENTER)
Where is your ftp program? [/usr/bin/ftp] (ENTER)
What is your favorite pager program? [jless] (ENTER)
What is your favorite shell? [/usr/local/bin/tcsh] (ENTER)

gzip,tar,unzip,make,lynx,ncftpget,ncftp,ftp,ページャ(moreやless),
シェル (tcsh や bash) を選んでいる。ここでは全ての質問に ENTER キーを
押した。ncftpget と ncftp が見付からない、と警告されているが、無視。

Every Makefile.PL is run by perl in a separate process. Likewise we
run 'make' and 'make install' in processes. If you have any parameters
(e.g. PREFIX, INSTALLPRIVLIB, UNINST or the like) you want to pass to
the calls, please specify them here.

If you don't understand this question, just press ENTER.

Makefile.PL は perl によって別プロセスとして実行される。
make や make install も同様に別のプロセスである。
各段階で指定したいパラメータがあれば以下に指定してくれ。

この質問が理解できなかったら、ENTER キーを押してね。

Parameters for the 'perl Makefile.PL' command? [] LIB=~/p5-module/ INSTALLMAN1DIR=~/p5-module/man1/ INSTALLMAN3DIR=~/p5-module/man3/
Parameters for the 'make' command? [] (ENTER>
Parameters for the 'make install' command? [] (ENTER>

'perl Makefile.PL' に指定するオプションは?
'make' に指定するオプションは?
'make install' に指定するオプションは?

ここでは perl Makefile.PL の引数に LIB、INSTALLMAN1DIR、
INSTALLMAN3DIR を指定した。つまり、
  % perl Makefile.PL LIB=~/p5-module/ INSTALLMAN1DIR=~/p5-module/man1/ \
                                      INSTALLMAN3DIR=~/p5-module/man3/
  % make
  % make install
とすることと同じで、ホームディレクトリにモジュールがインストール
されることになる。個人のディレクトリにインストールするならこういう
風にすればよい。そうでないなら、全て ENTER でいいだろう。

Sometimes you may wish to leave the processes run by CPAN alone
without caring about them. As sometimes the Makefile.PL contains
question you're expected to answer, you can set a timer that will
kill a 'perl Makefile.PL' process after the specified time in seconds.

If you set this value to 0, these processes will wait forever. This is
the default and recommended setting.

Timeout for inactivity during Makefile.PL? [0]

また、Makefile.PL があなたに質問してくることもある。
そこで `perl Makefile.PL' のプロセスを殺すまでの時間を
設定することができる。

値を0にすれば、プロセスは永遠に待ち続ける。これは
デフォルトの設定で、この設定を推奨する。

Makefile.PL 実行時のタイムアウト時間は? [デフォルト値は0]
ENTER で 0 にする。

If you're accessing the net via proxies, you can specify them in the
CPAN configuration or via environment variables. The variable in
the $CPAN::Config takes precedence.

もし proxy サーバを経由してネットワークに接続している場合は、
指定してくれ。

Your ftp_proxy? (ENTER)
Your http_proxy? proxy.cs.gunma-u.ac.jp:8080
Your no_proxy? (ENTER)
You have no /home/username/.cpan/sources/MIRRORED.BY
  I'm trying to fetch one
CPAN: Net::FTP loaded ok
Fetching with Net::FTP:
  ftp://ftp.perl.org/pub/CPAN/MIRRORED.BY

ftp proxy は?
http proxy は?
proxy を経由しないサイトは?
/home/username/.cpan.sources/MIRRORED.BY がないので、
今から取得する。
Net::FTP を使って ftp://ftp.perl.org/pub/CPAN/MIRRORED.BY を取得中 ...

Now we need to know where your favorite CPAN sites are located. Push
a few sites onto the array (just in case the first on the array won't
work). If you are mirroring CPAN to your local workstation, specify a
file: URL.

あなたの好きな CPAN サイトを決める。
もしローカルに CPAN のミラーを行っているなら、file:.. という
形式で指定してくれ。

First, pick a nearby continent and country (you can pick several of
each, separated by spaces, or none if you just want to keep your
existing selections). Then, you will be presented with a list of URLs
of CPAN mirrors in the countries you selected, along with previously
selected URLs. Select some of those URLs, or just keep the old list.
Finally, you will be prompted for any extra URLs -- file:, ftp:, or
http: -- that host a CPAN mirror.

まず、最も近い地域を選んでくれ。

(1) Africa
(2) Asia
(3) Australasia
(4) Central America
(5) Europe
(6) North America
(7) South America
Select your continent (or several nearby continents) [] 2

地域を選ぶ。大抵の場合 (2) Asia だろう。

(1) China
(2) Hong Kong
(3) Indonesia
(4) Israel
(5) Japan
(6) Saudi-Arabia
(7) Singapore
(8) South Korea
(9) Taiwan
(10) Thailand
Select your country (or several nearby countries) [] 5

国を選ぶ。(5) の Japan だね。

(1) ftp://ftp.dti.ad.jp/pub/lang/CPAN/
(2) ftp://ftp.jaist.ac.jp/pub/lang/perl/CPAN/
(3) ftp://ftp.lab.kdd.co.jp/lang/perl/CPAN/
(4) ftp://ftp.meisei-u.ac.jp/pub/CPAN/
(5) ftp://ftp.ring.gr.jp/pub/lang/perl/CPAN/
(6) ftp://mirror.nucba.ac.jp/mirror/Perl/
Select as many URLs as you like [] 5

ネットワーク的に近い URL を選択してくれ。
今回は (5) の RING を選んだ。

Enter another URL or RETURN to quit: [] RETURN

これでよければ RETURN を押せ。もし別の URL が良ければ URL を入力してくれ。
これでよいので、RETURN を押す。

New set of picks:
  ftp://ftp.ring.gr.jp/pub/lang/perl/CPAN/

ftp://ftp.ring.gr.jp/pub/lang/perl/CPAN/ が選択された。

WAIT support is available as a Plugin. You need the CPAN::WAIT module
to actually use it.  But we need to know your favorite WAIT server. If
you don't know a WAIT server near you, just press ENTER.

WAIT サポートが利用可能である。実際に使うには CPAN::WAIT モジュールが
必要になる。使用したい WAIT サーバを教えてくれ。もしネットワーク的に
近い WAIT サーバを知らなければ、次の質問で ENTER を押してくれ。

Your favorite WAIT server?
   [wait://ls6.informatik.uni-dortmund.de:1404]

好きな WAIT サーバはある? デフォルトは
  wait://ls6.informatik.uni-dortmund.de:1404
WAIT サーバとは何なのか よくわからないので、ENTER を押す。

commit: wrote /home/username/.cpan/CPAN/MyConfig.pm

これまで行った設定を /home/username/.cpan/CPAN/MyConfig.pm に
出力した。


cpan shell -- CPAN exploration and modules installation (v1.48)
ReadLine support available (try ``install Bundle::CPAN'')
ここまでで設定は終了です。画面には cpan> というプロンプトが 表示されているはずです。一度ここで終了してみましょう。
cpan> quit
再度実行します。
% perl -MCPAN -e shell
今度は設定に関する質問は聞かれません。前回設定したものが ~/.cpan/ に保存されているからです。 ただし、前回
Perform cache scanning (atstart or never)? [atstart]
キャッシュチェックを有効にする?
で、tstart を選択 (ENTER を入力) した場合は、最新の モジュールの一覧を取得しようとします。

モジュールのインストール

さて、ここで POP3 に関するモジュールの一覧を見てみましょう。 perl と同じく m /.../ というコマンドで調べることができます (m と /.../ の間にスペースを空けることに注意)。
cpan> m /POP3/
Fetching with Net::FTP:
  ftp://ftp.ring.gr.jp/pub/lang/perl/CPAN/authors/01mailrc.txt.gz
Going to read /home/username/.cpan/sources/authors/01mailrc.txt.gz
Fetching with Net::FTP:
  ftp://ftp.ring.gr.jp/pub/lang/perl/CPAN/modules/02packages.details.txt.gz
Going to read /home/username/.cpan/sources/modules/02packages.details.txt.gz
Scanning cache /home/username/.cpan/build for sizes

  There's a new CPAN.pm version (v1.52) available!
  You might want to try
    install Bundle::CPAN
    reload cpan
  without quitting the current session. It should be a seamless upgrade
  while we are running...

Fetching with Net::FTP:
  ftp://ftp.ring.gr.jp/pub/lang/perl/CPAN/modules/03modlist.data.gz
Going to read /home/username/.cpan/sources/modules/03modlist.data.gz
Module          Mail::POP3Client (SDOWD/POP3Client-2.6.tar.gz)
Module          Net::POP3       (GBARR/libnet-1.0701.tar.gz)
Mail::POP3Client と Net::POP3 というモジュールがあり、 それぞれ POP3Client-2.6.tar.gz、libnet-1.0701.tar.gz という アーカイブに含まれていることがわかります。 これはこの時点での最新版です。 SDOWD や GBARR は、作者名の省略形です。 CPAN ではモジュールの作者名が大きな意味をしめており、 頻繁に使うことになります。

モジュールのインストールには、3つの方法があります。

  1. モジュール名を指定

    普通はこれを使うといいでしょう。

    cpan> install Net::POP3
    
    モジュール名がわかっているなら、それをインストールします。

  2. アーカイブ名を指定

    cpan> install SDOWD/POP3Client
    
    この場合は、作者名 (の略称) から書き始めないといけません。 バージョン名は省略できます。

  3. Bundle を指定

    Bundle とは、複数のモジュールのリストです。

    cpan> install Bundle::libnet
    

基本的に最新版がインストールされます。 ただし、モジュールには開発版と安定版があり、 開発版は動作が安定していない場合もありますので、 その場合は古いバージョンがインストールされることもあります。
cpan> install GBARR/libnet-1.0701.tar.gz
と、作者名や最後の .tar.gz も含めて記述すると、 指定したバージョンが必ずインストールされます。

CPAN の再設定

先ほど行った初期設定は、 ~/.cpan/CPAN/MyConfig.pm に保存されます。再度
% perl -MCPAN -e shell
として、「o conf」とすると、現在の設定一覧が表示されます。
% perl -MCPAN -e shell
cpan> o conf
CPAN::Config options and /home/username/.cpan/CPAN/MyConfig.pm:
    commit             Commit changes to disk
    defaults           Reload defaults from disk
    init               Interactive setting of all options

    build_cache        10
    build_dir          /home/username/.cpan/build
    cpan_home          /home/username/.cpan
    ftp                /usr/bin/ftp
    ftp_proxy
    getcwd             cwd
    gzip               /usr/bin/gzip
    http_proxy
    inactivity_timeout 0
    index_expire       1
    inhibit_startup_message 0
    keep_source_where  /home/username/.cpan/sources
    lynx               /usr/local/bin/lynx
    make               /usr/bin/make
    make_arg
    make_install_arg
    makepl_arg
    ncftp
    ncftpget
    no_proxy
    pager              jless
    prerequisites_policy follow
    scan_cache         atstart
    shell              /usr/local/bin/tcsh
    tar                /usr/bin/tar
    unzip              /usr/local/bin/unzip
    urllist
    wait_list
        wait://ls6.informatik.uni-dortmund.de:1404
「o conf オプション名」で、そのオプションの設定が表示されます。
cpan> o conf make
    make              /usr/bin/make
さらにその後に文字列を書けば、オプション内容を変更できます。
cpan> o conf make /usr/local/bin/gmake
    make              /usr/local/bin/gmake
これは、例として出しただけで、gmake を使う必要は特にないでしょう。
前へ << HTTP proxy サーバを作ってみよう モジュールを使って POP3 クライアントを作ってみよう >> 次へ

ご意見・ご指摘は Twitter: @68user までお願いします。