4

私は Perl に比較的慣れていないので、非コア モジュールの再配布について助けが必要です。これが全体の話です。

Perl スクリプトで使用された 2 つの非コア モジュールがあります: XML::SimpleSOAP::Liteです。私が (現在 Windows で) 使用しているバージョンは Strawberry Perl であるため、これら 2 つのモジュールは既に含まれています。ただし、エンド ユーザー (Unix/Linux システム) がこれら 2 つのモジュールを持っているかどうかはわかりません。標準バージョンしか持っておらず、コア モジュールしか持っていない可能性があるからです。私の目標は、エンド ユーザーの構成やインストールをできるだけ少なくすることです。

まず、 XML::SimpleSOAP::Liteに似たコア モジュールがないか調べてみました。残念ながら見つかりませんでした(間違っていたら訂正してください)。

したがって、2 つのモジュールを再配布するしか方法はないと思います。これら 2 つのモジュールで再配布が許可されていることを確認しました。今の私の課題は、それをどうするかです。「perl redistribute」というキーワードでグーグル検索を試みましたが、有用なものは見つかりませんでした。私の推測では、これを実現するためにエクスポーター ツールを使用しています。しかし、これらの 2 つのモジュールはかなり複雑なモジュールであり、いくつかのネストされたフォルダー/pm ファイル (および MAKE、pod、ini ファイルなどの他のファイル全体) があるため、どうすればよいかわかりません。エクスポーターを使用して見つけた例はかなり単純です。1つのpmファイルと1つのplファイルしかなく、1つのフォルダーに配置されています。

また、問題に対処するための他のより良い方法を受け入れます。目標は、すべてのエンド ユーザーが最小限の構成/インストール作業で私のスクリプトを使用できるようにすることです。これは、互換性の問題が多数発生することを望んでいないためです。

どんな助けでも大歓迎です。ありがとう!=D

4

3 に答える 3

5

@ikegamiが言ったことについて少し詳しく説明したいと思います。

SOAP::Liteには多数の CPAN 依存関係があるため、モジュールをインストールする人は、モジュールを提供するか依存関係としてリストするかに関係なく、ビルドするために CPAN アクセスが必要になります。それ以外の場合は、依存関係ツリー全体を提供する必要があります。その時点で、perlbrew、カートン、場合によっては local::lib を使用することになり、次に高いレベルが必要であると判断して、RPM と DEB を生成する可能性があります。

おそらく、CPAN モジュールとしてパッケージ化されたスクリプトを提供し、その中に依存関係をリストし、チップをどこにでも配置できるようにする方がよいでしょう。

于 2012-07-05T16:33:15.197 に答える
4

Makefile.PL または Build.PL 内のモジュールへの依存関係を記述してから、次のインストール手順を実行してください。

cpanm script.tar.gz
于 2012-07-05T15:37:42.800 に答える
3

Perl の最も優れた点の 1 つは、包括的な Perl アーカイブ ネットワークである CPAN です。これは、Perl 5 が最初に登場した頃から、Perl に付属のクライアントである標準の共通ツールと同様にXML::Simple、またはそれを介して、有用なアドオン モジュールを共有できるミラーリング サービスです。ほとんどすべての Perl ディストリビューション (Strawberry Perl や Linux に付属するほとんどの Perl ディストリビューションなど) には、CPAN クライアントが構成されて含まれています。このクライアントを使用すると、モジュールの名前を知るだけで、CPAN からモジュールをダウンロードしてインストールできます。SOAP::Litecpan

CPAN のほとんどすべてのモジュール配布は、まったく同じレイアウトに従います。通常、Makefile.PLファイル (ExtUtils::MakeMaker を使用してインストール スクリプトを生成するBuild.PL場合)、ファイル (Module::Build を使用してインストール スクリプトを生成する場合)、またはその両方があります。これらの Perl スクリプトを実行すると、モジュールをインストールしてすべての前提条件が満たされていることを確認できる「Makefile」または「Build」ファイルが作成されます。

以前に Perl ディストリビューションを作成したことがない場合は、必要なディストリビューションを CPAN からダウンロードして、どのように配置されているかを確認できます。フォルダーとファイルの場所は、一度見れば非常に直感的です。これらは通常、インストール スクリプトとサポート ファイル (readme など) をルート ディレクトリに配置し、カスタム モジュール (作成したモジュール) をlibディレクトリに配置し、単体テストをtディレクトリに配置します。

Build.PLあなたが初心者なら、ベースのものを見ることをお勧めします。これらは純粋な Perl ベースのインストール スクリプトです。Module.PL ベースのディストリビューションを作成することにした場合、モジュール ディストリビューションに と が必要XML::Simpleであることを指定するのは非常に簡単SOAP::Liteです。まず、基本的な Module::Build ベースのインストール スクリプトを作成します。これは次のようになります。

use Module::Build;
my $build = Module::Build->new(
    module_name => 'Foo::Bar',
    license  => 'perl',
    requires => {
        'perl'          => '5.6.1',
        'Some::Module'  => '1.23',
        'Other::Module' => '>= 1.2, != 1.5, < 2.0',
    },
);
$build->create_build_script;

(これは、Module::Build::Authoringドキュメントから引用したものです)。

次に、必要なライブラリとそれらの最小バージョンを指定します。気にしなければゼロ (0) でもかまいませんが、それは「何でも」良いことを意味します。少なくとも、テストしているマシンにインストールされているライブラリのバージョンを指定することをお勧めします。

(きちんとしたショートカット: $VERSION パッケージ変数が定義されているライブラリのバージョンは、次のようにして確認できます。

perl -MSome::Lib -E "say Some::Lib->VERSION()"

.)

モジュールをインストールする手順は次のようになります。

cd folder\where\my\lib\is
perl Build.PL
Build
Build test
Build install

これにより、インストール ツールが作成され、テスト用のフォルダーが準備され (通常は単純なモジュールのビルド ライブラリ エリアにコピーされます)、tフォルダー内のすべての .t スクリプトが実行されます (「テスト」、通常Test::Moreはモジュールの単体テストに使用されます)。インストール前)、最後にモジュールを PC の Perl サイト ライブラリにインストールします。

スクリプトは、「設定」フェーズのBuild一部として、前提条件を確認し、それらがまだない場合は警告します。

次に、 ikegami's answerで指摘されているように、cpanm クライアントを使用してライブラリをインストールすると、cpan クライアントが自動的に出て、依存関係をダウンロード、テスト、およびインストールします! または、Build.PLベースのインストーラーには「installdeps」オプションもあり、同じことを行います。次に、すべての依存関係 (および潜在的に再帰的な依存関係) が、将来変更されたとしても、自動的にダウンロード、テスト、およびインストールされます。

于 2012-07-05T16:34:26.350 に答える