2006-08-16

ユーザー領域にCPANをインストールする方法

Last updated $Date: 2011/03/22 06:19:28 $

追記

いまは local::lib (devel/p5-local-lib) を使えば下記の設定と同じ事が出来ます。そのモジュールを使う事を強くお勧めします。

追記2

さらに今時は cpanm (devel/p5-App-cpanminus) をインストールしても同様のことが出来ます。

CPANとは?

CPANはComprehensive Perl Archive Networkの略で、Perlのさまざまなモジュールを簡単にインストールできるシステムです。lang/perl5.8がインストールされていればcpanコマンドで使用出来ます。またperl -MCPAN -e shellでも実行できます。

ユーザー領域にインストールする理由

サーバー管理者であればroot権限を持っているので、p5-から始まるportsを使用してモジュールをインストールすれば通常はOkです。 ここではroot権限を持たない一般ユーザーが、自分の自由になるホームディレクトリへCPANモジュールをインストールして使う方法を解説します。 Perlそのものはシステムにインストールされたものを使用することを想定しています。 インストールはユーザーディレクトリの~/local以下を使うことを前提にして説明します。

インストール前の準備

あらかじめ~/localを作成しておきます。

$ mkdir -p ~/local

cpanの初期設定ファイルを作ります。

$ echo no | cpan

設定ファイルの~/.cpan/CPAN/MyConfig.pmの該当部分を書き換えます。(mbuildpl_argの項目は存在しないので、追記してください)

'make_install_arg' => qq[SITEPREFIX=$ENV{HOME}/local],
'makepl_arg' => qq[INSTALLDIRS=site INSTALL_BASE=$ENV{HOME}/local LIB=$ENV{HOME}/local/lib/perl5 PREFIX=$ENV{HOME}/local],
'mbuildpl_arg' => qq[./Build --install_base $ENV{HOME}/local],
'urllist' => [q[ftp://ftp.ring.gr.jp/pub/lang/perl/CPAN/], q[ftp://ftp.kddilabs.jp/CPAN/]],

~/.cshrcにPATHとPERL5LIB環境変数の設定を追記します。(bashを使っている場合はexport PERL5LIB=$HOME/local/lib/perl5などと読み替えてください)

$ echo 'setenv PATH $HOME/local/bin:$PATH' >> ~/.cshrc
$ echo 'setenv PERL5LIB $HOME/local/lib/perl5:$HOME/local/lib/perl5/site_perl' >> ~/.cshrc
$ source ~/.cshrc

BSDPANのエラーを回避する

FreeBSDのcpanには、portsとCPANモジュールを連動して管理できるBSDPANという仕組みが有ります。ユーザー権限でcpanインストールをする時に、BSDPANが/var/db/pkgへ書き込みをしようとしてパーミッションエラーがでます。 それを回避したい場合は、インストールする前に以下の環境設定を~/.cshrcなどに追記してsource ~/.cshrcで読み込んでおきます。 (この設定はCPANを使うために必須では無いので、省略してもかまいません)

setenv PKG_DBDIR $HOME/local/var/db/pkg
setenv PORT_DBDIR $HOME/local/var/db/pkg
setenv INSTALL_AS_USER
setenv LD_LIBRARY_PATH $HOME/local/lib

インストール前にあらかじめBSDPANデータの保存先ディレクトリを作成しておきます。

$ mkdir -p ~/local/var/db/pkg

CPANをアップデートして初期設定

CPANを最新版にアップデートします。 途中の質問は全てリターンでOkです。

$ cpan -i Bundle::CPAN

インストールが終わったらcpanコマンドで新しいCPANシステムの初期設定を実行します。

$ cpan

ミラーサイトの選択は(2) Asiaと(7) Japanを選択します。他の質問はリターンでOkです。

設定が終わればユーザー領域でCPANが使えるようになります。

Net::SSLeayのインストール

この設定をしている場合にNet::SSLeayをインストールしようとすると、make時にOpenSSLライブラリをユーザー領域から探そうとするため失敗することがあります。その場合はmakepl_argの先頭に--を一時的に入れます。

cpan> o conf makepl_arg "-- INSTALLDIRS=site LIB=$ENV{HOME}/local/lib/perl5 PREFIX=$ENV{HOME}/local"
cpan> install Net::SSLeay

XML::Parserのインストール

この設定をしている場合にXML::parserをインストールしようとすると、make時にexpatライブラリが見つからないため失敗することがあります。その場合はmakepl_argにEXPATLIBPATHとEXPATINCPATHを一時的に入れます。システムにportsのtextproc/expat2がインストールされている場合は/usr/local/libと/usr/local/includeを指定します。ユーザー領域にexpatをインストールする場合は$ENV{HOME}/local/libなど該当する場所を指定する必要が有ります。

cpan> o conf makepl_arg "INSTALLDIRS=site LIB=$ENV{HOME}/local/lib/perl5 PREFIX=$ENV{HOME}/local EXPATLIBPATH=/usr/local/lib EXPATINCPATH=/usr/local/include"
cpan> install XML::Parser

参考

Permanent link | Trackback | | このエントリーを含むはてなブックマーク livedoor Clip View blog reactions del.icio.us

otsune posted at 08:19 in
WriteBacks
TrackBack ping me at
http://www.otsune.com/bsd/tips/usercpaninstall.
Post a comment

writeback message: