0

perlbrew を使用してホーム ディレクトリでローカルの perl を実行し、cpan を使用して新しいモジュールをインストールしています。ただし、設定が間違っているようです。cpan を使用すると、ライブラリは常に ~/perl ディレクトリにインストールされますが、私の perlbrew は ~/perl5 ディレクトリにあります。これにより、適切な PERL5LIB ディレクトリを作成する際に問題が発生します。むしろ、perl または perl5 ライブラリをどのような順序で含める必要がありますか。最初にインクルードすると間違ったモジュールがロードされるか、間違ったバージョンが使用されているという苦情が発生するという、ニワトリと卵の問題に遭遇し続けているようです。具体的には、5.8.8 perl バージョン (最初にインストールしたのは、少し古いバージョンにアップグレードすることを決定する前であり、まだ /bin/perl のバージョンです) が、使用している 10.1 ライブラリと競合していると不平を言っています。

これは、構成ファイルを更新することでおそらく修正できると思いますが、何を変更すればよいかわかりません。cpan config.pm を確認しましたが、インストール方向を定義するものは何も表示されません。実際、グローバル cpan ディレクトリにインストールしようとするのではなく、ローカルにインストールすることを cpan がどのように認識しているかわかりません。

2 つの個別のライブラリを取得するのではなく、cpan で perlbrew ライブラリを更新するために変更する必要がある適切な構成値を教えてもらえますか?

編集

さて、私は非常に盲目です。答えは ~/.cpan/CPAN/MyConfig.pm の構成ファイルにありました。~/perl ディレクトリを指している可能性のある行を見つけるために perl という単語を検索しても、ファイルを数回確認したことを誓いますが、探していた非常に明白な構成オプションをどういうわけか見逃していました...方法がわからない。

とにかく、それを見たら、指している場所を変更する必要がありました。これには、少し試行錯誤が必要でした. この行を変更しました:

'makepl_arg' => q[PREFIX=~/perl],

'makepl_arg' => q[PREFIX=~/perl5/perlbrew/perls/perl-5.10.1/],

もちろん、これは私が perlbrew に使用している perl バージョンの場所です。これで問題は解決したようです。盲目でなければ簡単だったはずです。

この行と PERL5LIB 変数の両方が ~/.bashrc に設定されており、perl-5.10.1 バージョンの perllib を指すように効果的にハードコードされています。つまり、別の perl バージョンに切り替えることにした場合、両方の参照を更新するか、再び問題が発生する必要があります。cpan や私の PERL5Lib に、perls ディレクトリからどのバージョンの perl を使用すべきかを推測させる方法がわかりません。それは私にとってそれほど大きな問題ではありません.5.10.1以降にアップグレードすることは許可されないと思います(私はしたいのですが). それ以外の場合は、現在正常に動作します。

4

1 に答える 1

1

2 つの問題。

  1. CPAN は、モジュールをインストールする場所を上書きするように部分的に構成されています。をクリアして、このオーバーライドを削除しますmakepl_arg

    中からcpan

    o conf makepl_arg ""
    o conf commit
    

    からsh:

    echo -e -n 'o conf makepl_arg ""\no conf commit\n' | cpan
    
  2. あなたは、モジュールを探すべきではない場所を探すようにPERL5LIB言っています。perlで設定する命令を削除して、設定を解除し~/.bashrcます。

sh他にも問題がある可能性がありますが、確実に知るには、次のコマンドの出力を知る必要があります。

set | grep ^PERL ; echo 'o conf' | cpan | grep 'makepl_\|make_\|mbuild_'
于 2016-01-08T17:02:24.517 に答える