2

のようなファイルのような perl 配布ファイルが与えられた場合、Archive-Zip-1.30.tar.gz配布に必要な前提条件 (つまり、他の perl モジュール) を決定する最新の方法は何ですか?

手順は次のようになると思います。

  1. アーカイブを解凍する
  2. ファイルが見つかった場合Makefile.PLは...
  3. ファイルが見つかった場合Build.PLは...

または多分モジュールがありますか?

依存関係をリストする perl コードに興味があることを付け加えておきます。

更新: 答えは、すべての dist ファイルに含める必要があるMETA.jsonorファイルを調べることだと思います。META.yml

Update2: すべての dist ファイルに META ファイルがあるわけではありません。それらを生成する方法については、以下の私の回答を参照してください。

4

3 に答える 3

1

Dist::Zilla の --listdeps コマンドがどのように機能するかから判断すると、 https: //metacpan.org/module/CPAN::Meta::Requirementsとそこで requirements_for() を探していると思います。

于 2013-08-08T19:26:58.913 に答える
1

私が判断できたのはここまでです。おそらく、これで私の質問が明確になります。

  1. META.ymldist にまたはMETA.jsonファイルがある場合、それらのファイルのいずれかからモジュール要件を取得できます。

  2. がある場合は、次を使用してMakefile.PL生成できます。META.yml

    perl Makefile.PL; make metafile

    META.ymlこれにより、サブディレクトリに作成されますDISTVNAME。はDISTVNAMEとして定義されます{distname}-{distversion}。つまり、distArchive-Zip-1.30.tar.gzの場合DISTVNAMEは ですArchive-Zip-1.30

  3. ファイルがある場合は、次を使用してファイルをBuild.PL生成できます。MYMETA.yml

    perl Build.PL

    MYMETA.ymlファイルは現在の作業ディレクトリに作成されます。

古い dist ファイルには META ファイルがありません。たとえば、2001 年の dist Digest-1.00.tar.gz (リンク)Makefile.PLにはファイルしかありませんが、最新バージョンDigest-1.17.tar.gz (リンク)にはMETA.ymlファイルが含まれています。

DISTVNAMEこれは、ファイルを持つ dists を正確に取得する方法の問題を提起しMakefile.PLます。

最善の方法は、次のような行を実行perl Makefile.PLしてから解析することです。Makefile

DISTVNAME = ...

非常に厄介ですが、より良い方法があるかどうかはわかりません。

于 2013-08-11T21:47:31.777 に答える