1. ホーム
  2. perl

[解決済み] 非 root ユーザーで CPAN を使用するにはどうすればよいですか?

2023-06-27 15:30:05

質問

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

どのように解決するのですか?

私がこれまでに発見した最も簡単な方法は、次のとおりです。

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.us の最新版を取得します。 cpanm にプリントします。 STDOUT に出力し、それをパイプで perl - -l ~/perl5 App::cpanminus local::lib . 最初の -perl に来ることを期待する。 STDIN に来ることを期待するのであれば、これは perl のバージョンを実行します。 cpanm ダウンロードしたばかりの perl は残りの引数を cpanm . そのため -l ~/perl5 引数は cpanm は Perl モジュールをインストールする場所を指定し、 他の二つの引数はインストールするモジュールを二つ指定します。 [App::cpanmins ] 1 をインストールするパッケージです。 cpanm . 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 ページを見つけるようになります。