web-dev-qa-db-ja.com

CPANを非rootユーザーとして使用するにはどうすればよいですか?

ルートアクセス権がない共有サーバーにPerlモジュールをインストールしたい。これどうやってするの?彼らはまた、CPANの古いバージョンを持っているようです(コマンドを実行するとそれについて文句を言います)、rootアクセスを必要とせずに私のアカウントから使用されているCPANコマンドを更新することは可能ですか?

74
Juan A. Navarro

私がこれまでに見つけた最も簡単な方法は、言うことです

wget -O- http://cpanmin.us | Perl - -l ~/Perl5 App::cpanminus local::lib
eval `Perl -I ~/Perl5/lib/Perl5 -Mlocal::lib`
echo 'eval `Perl -I ~/Perl5/lib/Perl5 -Mlocal::lib`' >> ~/.profile
echo 'export MANPATH=$HOME/Perl5/man:$MANPATH' >> ~/.profile

これは、プロファイルの名前が.profileであると想定しているため、.bash_profile.bashrcなどに変更する必要がある場合があります。その後、次のようにしてモジュールをインストールできます。

cpanm Module::Name

ルートディレクトリにインストールした場合と同じ方法で使用します。


以下は、上記のコマンドが行うことの簡単な説明です。

wget -O- http://cpanmin.uscpanmの最新バージョンを取得してSTDOUTに出力し、Perl - -l ~/Perl5 App::cpanminus local::libにパイプされます。最初の-Perlにプログラムが入ってくることをSTDINに伝えるため、ダウンロードしたPerlのバージョンをcpanmで実行します。 Perlは、残りの引数をcpanmに渡します。 -l ~/Perl5引数は、Perlモジュールをインストールする場所をcpanmに指示し、他の2つの引数はインストールする2つのモジュールです。 [App::cpanmins] 1cpanmをインストールするパッケージです。 local::lib は、ローカルディレクトリでモジュールを実行するために必要な環境変数を管理するヘルパーモジュールです。

それらのモジュールがインストールされた後、実行します

eval `Perl -I ~/Perl5/lib/Perl5 -Mlocal::lib`

ローカルモジュールを使用するために必要な環境変数を設定し、

echo 'eval `Perl -I ~/Perl5/lib/Perl5 -Mlocal::lib`' >> ~/.profile

次回ログイン時にそれらを使用できるようにするため。

echo 'export MANPATH=$HOME/Perl5/man:$MANPATH' >> ~/.profile

うまくいけば、manにローカルモジュールのmanページを見つけさせるでしょう。

130
Chas. Owens

http://web.archive.org/web/20120427144232/http://Perl.jonallen.info/writing/articles/install-Perl-modules-without-root

http://novosial.org/Perl/life-with-cpan/non-root/

両方の命令セットの主なステップには、 local :: lib module が含まれます

私の知る限り、CPANロジックはPerlモジュール(CPAN.pm)に含まれています。つまり、他のPerlモジュールと同じように、ローカルディレクトリに新しいものを簡単にインストールすることもできます。


また、非標準の場所にモジュールをインストールしたら、非標準の場所からライブラリをロードする際の次の2つの質問を確認してください(情報の一部は既に上記のリンクから入手できます)。

Perlプログラムは、使用するPerlモジュールを含むファイルの場所をどのようにして知るのですか?

Perlの@INCはどのように構築されますか? (別名Perlモジュールの検索場所に影響を与えるすべての方法は何ですか?)

11
DVK

完全を期すため、OSXでcpanmをインストールするプロセスは、Perl5~/Library

curl -L http://cpanmin.us | Perl - -l ~/Library/Perl5 App::cpanminus local::lib
eval `Perl -I ~/Library/Perl5/lib/Perl5 -Mlocal::lib=~/Library/Perl5`
echo 'eval `Perl -I ~/Library/Perl5/lib/Perl5 -Mlocal::lib=~/Library/Perl5`' >> ~/.bash_profile
5
Juan A. Navarro

Cpanminusがインストールされているモジュールのマニュアルページも読みたい場合は、選択したライブラリパスの正しいサブディレクトリがMANPATHにあることも確認する必要があります。したがって、cpanmのインストールプロセスを示す上記のソリューションには、次の追加コマンドが必要です。

 export MANPATH=$HOME/Library/Perl5/man:$MANPATH' >> ~/.bash_profile
2
Britton Kerin