8

私は複数の Perl で記述された (UNIX っぽい) アプリケーションを維持しており、その現在のインストール プロセスは手動で記述されMakefile、構成ファイルを にインストールします/etc/

私は彼らの開発を を使用するように切り替えたいと思っていますが、これまでのところ、が実行されているとき(またはの代わりにを使用している場合)Dist::Zillaに特定のファイルを配置できる Dist::Zilla プラグインまたは機能は見つかりませんでした。私のアプリケーションをインストールしているローカル管理者。/etc/make install./Build installModule::BuildExtUtils::MakeMaker

pureExtUtils::MakeMakerを使用して、追加の make ターゲットを定義し、属性を介してターゲットをそれらの 1 つに依存MY::postambleさせることができます。同様のことを 経由で行うことでおそらく十分ですが、より明白な方法をいただければ幸いです。installdepend { install => … }dzil build

直交するアプローチの 1 つは、アプリケーションにファイル/etc/が存在することを要求しないようにすることですが、Dist::Zilla に切り替えるだけで、ビルド システムだけを変更したいだけなのに、実際のコードが大幅に変更されているように見えます。

興味深いことに、 Dist::Zilla に切り替えるために現在考えている 2 つのアプリケーションは、xen-toolsunburden-home-dirです。

4

2 に答える 2

4

/etc最善の方法は、Perl ディストリビューションからファイルをインストールしないことです。cpan クライアント (またはインストール ユーザー) がそこにインストールする権限を持っていることを保証することはできず、システムに複数の Perl がインストールされている可能性があるため、それぞれ/etcが別のインストールのファイルを破壊します。ファイルが後続のインストールによって上書きされるのを実際に防ぐことはできないため、失いたくない構成データをそこに置くべきではありません。

/etcアプリケーションがそこを探すことを知っている場合は、構成ファイルを / に置くこともできますが、そのパスをカスタマイズできるようにする必要があります (たとえば、テスト システムでは、ローカル ディレクトリまたはユーザーのホームでファイルを探します)。ディレクトリ)。

読み取り専用のモジュール固有のデータをインストールする場合、Perl でのベスト プラクティスは、Perl インストール固有の場所にインストールすることです。そのためのモジュールはFile::ShareDir::Installです。[ShareDir] プラグインDist::Zilla::Plugin::ShareDirを使用してDist::Zillaから使用できます。[@Basic] プラグイン バンドルにも含まれているため、 で [@Basic] を使用する場合は、データ ファイルを配布リポジトリのディレクトリにドロップする以外、何もする必要はありません。dist.inishare/

コードから共有ディレクトリの内容にアクセスするには、File::ShareDirを使用します。

于 2014-09-29T05:07:12.957 に答える
2

複雑なモジュール インストーラーを Dist::Zilla に移植するには、プラグインMakeMaker::CustomまたはModuleBuild::Customをお勧めします。これらにより、既存のものを保持しMakefile.PLたりBuild.PL、Dist::Zilla に依存関係などの必要なビットをプラグインしたりすることができます。

于 2014-09-25T14:33:19.507 に答える