4

アプリ固有のミニ CPAN を使用する方法はありますか (さまざまなアプリの特定のモジュール バージョンを確保し、ネット アクセスなしでインストールを機能させるため)。「標準」の mini-cpan の方法は、CPAN/Config.pm でファイル URL を使用して「o conf urllist」を設定することに依存しています。

mini-cpan 1個で十分です。ただし、アプリごとに異なるバージョン要件があるため、アプリごとに異なるディレクトリ (アプリのローカル) から CPAN をインストールすることを自動化する必要があります。

以下はほとんど$file_url機能しますが、シェルは部分的にしか機能せず、場所から mini-cpan を使用する代わりに Web から取得します。

use CPAN;
use FindBin qw($Bin);

my $file_url="file:///$Bin/../cpan";
CPAN::Shell->o(qw( conf urllist ),$file_url);

CPAN::shell();
4

1 に答える 1

5

アプリケーションごとに異なる構成ファイルをロードします。最新のcpanコマンドには、-jまさにそれを行うためのスイッチがあります。

$ cpan -j some/app/Config.pm -i Foo::Bar

この最新の機能は、実験的なものであるため、CPAN.pmディストリビューションにはまだ含まれていません。ただし、DPANの作業の一環として、数か月間使用しています。

それが気に入らない場合は、CPAN::ConfigPerl が個人用またはサイト全体のバージョンを見つける前に、アプリケーション固有のモジュールを Perl が見つけられる場所に提供する必要があります。現在のCPAN/Config.pmをアプリケーション モジュール ディレクトリにコピーし、そのディレクトリが @INC の最初にあることを確認します (おそらくPERL5LIB環境変数を使用)。CPAN.pm は最初にそれを見つけて使用する必要があります。最初に見つかったものだけを使用します。これは、構成が固定されている場合に便利ですが、モジュールでコードを実行できるため、少し柔軟です。Perl コードとしての構成です。

これで十分でない場合はCPAN::HandleConfig()、アプリケーションでオーバーライドして、CPAN.pm がファイルをロードしないようにすることができます。次に、自分で値を設定します。これは、構成値の一部を把握するために解決するアプリケーション ロジックが多数ある場合に特に便利です。CPAN.pm 構成は単なる%CPAN::Configハッシュであるため、適切なキーに適切な値を設定するだけで済みます。

いずれにせよ、おそらく "connect_to_internet_ok" 構成を false の値に設定し、"urllist" を消去してローカルのミニパンのみを保持する必要があります。

于 2009-07-19T17:45:57.807 に答える