2006-08-16

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

Last updated $Date: 2008/02/22 14:47:41 $

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 | 15 Trackback | | このエントリーを含むはてなブックマーク livedoor Clip View blog reactions del.icio.us

otsune posted at 08:19 in
WriteBacks

Planet tDiary

inetd.co.jp のユーザー領域にPlaggerを仕込んだのでPlanet tDiary なるものを作ってみた。とは言っても

otsune's FreeBSD memo :: ユーザー領域にCPANをインストールする方法
void GraphicWizardsLair( void ); // Planet W-ZERO3をPlaggerで簡単に作成してみた

を何も考えずにインスパイヤしただけ。あと、tDiaryの場合ツッコミSPAMを消さないとほとんど使い物にならないのでYAMLは以下のような感じでruleを追加。ツッコミは全部消えちゃうけどPlanetだから別によさげ。

- module: Bundle::Planet
config:
extra_rule:
- expression: $args->{entry}->title !~ /\d{4}-\d{2}-\d{2}\x{306E}\x{30C4}\x{30C3}\x{30B3}\x{30DF}\[\d+\]/

後は

#!/bin/tcsh
setenv PATH $HOME/local/bin:$PATH
setenv PERL5LIB $HOME/local/lib/perl5:$HOME/local/lib/perl5/site_perl
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
plagger -c /home/44/hsh0700/plagger/config.tdiary.yaml

みたいなスクリプトを作って、cronで1時間おきに回すことに。

Posted by at 2006/08/17 (Thu) 21:14:10

CPAN→Plaggerインストール(レンタルサーバさくら)

日常的に Perl を触る機会がなく、CPAN など利用した事すらないのだが、とりあえず「じゃぁPla」と言ったので調べてインスコするまでしてみた。参考)http://www.otsune.com/bsd/tips/usercpaninstall.html

Posted by at 2006/08/30 (Wed) 12:56:40

はてなブックマークをMovableTypeにPOSTする…ために。

ふと、思い立って、 自分のはてなブックマークを、MovableTypeにPOST...

Posted by at 2006/09/21 (Thu) 00:11:44

さくらインターネットでCPANを利用する

さくらインターネットを利用しており,サーバを丸ごと借り切っていない場合は,ルート...

Posted by at 2007/01/13 (Sat) 16:09:49

役に立ったページ

今回、さくらインターネットのサーバに Plagger をインストールするに当たってすごく参考になったホームページを以下に記します。 ・ユーザー領域にCPANをインストールする方法 http://www.otsune.com/bsd/tips/usercpaninstall.html ・一般ユーザ環境におけるCPANモジュ..

Posted by at 2007/03/16 (Fri) 17:02:10

Peace Pipe: Plagger で遊んでたら週末が終わっていた [plagger]

前から試そう,試そうと思っていた話題の Plagger を導入してみました.

Posted by at 2007/03/26 (Mon) 03:02:11

さくらインターネットのレンタルサーバ(スタンダード)にCPANを入れる

さくらインターネットのレンタルサーバ(スタンダード)は安価で割と自由度が高く、総じて良さげなのですが、PHPは4だったりして、PHPってXML関係が4と5で違っていたりするし、そもそもPHP4ってもうアレでしょ?ってことで、やっぱ小ネタプログラムはPerlで書くことにし、...

Posted by at 2007/09/11 (Tue) 12:27:40

CORESERVE で CPAN

CORESERVE で CPAN を稼働させる。 予め入ってるみたい。 CPAN...

Posted by at 2008/02/16 (Sat) 15:56:19

覚書/Perl

STDIN から行を読み込んで数でソートする perl -e 'while(<>){ chomp; $d->{$_}++;} map { print "$_ => $d->{$_}, \n"} sort {$d->{$a} <=> $d->{$b}} keys %${d};' シェルだけでできるはず。。。 ▲ ▼ローカルにモジュー...

Posted by at 2008/07/09 (Wed) 14:48:15

さくらインターネットの共用サーバに Encode::JP::Mobile をインストールする

ports の使えないさくらの共用サーバー環境に、cpan を使って Encode::JP::Mobile をインストールする。

Posted by at 2008/11/02 (Sun) 10:35:55

Perlの裾野が広がらない問題について

どこで読んだか忘れましたが、Perlのコミュニティの中では中堅クラスが少ない、と...

Posted by at 2009/02/14 (Sat) 22:05:22

local::libを使った非rootでのCPAN環境構築

miyagawaさんが紹介されていたlocal::libを使って非rootでのCPAN環境を作ってみました。平たく言えばさくらインターネットのレンタルサーバで一般ユーザーでCPAN環境を作ってみまし...

Posted by at 2009/02/17 (Tue) 00:05:01

さくらインターネットのレンタルサーバにcpanをセットアップ

cpanモジュールをユーザ領域にインストール可能とする Link cpanモジュールをユーザ領域にインストール可能とする ほぼこのページを参照した。手順は以下。 ディレクトリをあらかじめ用意 $ mkdir -p ~/local/var/db/pkg cpanを一旦立ち上げ、デフォルトの環境...

Posted by at 2009/05/04 (Mon) 00:57:19

XREA/CORESERVERに於けるlocal::libを使ったCPAN環境の構築

一連のArkサンプルアプリケーションネタは、作りながら記事を書くということをして...

Posted by at 2009/07/27 (Mon) 02:08:25

Net::TwitterをCPANでさくらのレンタルサーバにインストールした

twitterのbotが作りたい。 ってことでperlで作るならまずNet::T...

Posted by at 2009/12/14 (Mon) 08:09:37
TrackBack ping me at
http://www.otsune.com/bsd/tips/usercpaninstall.trackback
Post a comment

writeback message: Ready to post a comment.