我真的想将他们的开发转换为使用Dist::Zilla
,但到目前为止我还没有找到任何Dist :: Zilla插件或功能,它允许我在make install(或./Build安装)时将给定文件放入/ etc /在使用Module::Build
而不是ExtUtils::MakeMaker
的情况下,由正在安装我的应用程序的本地管理员运行.
使用纯ExtUtils :: MakeMaker,我可以在MY :: postamble中定义其他make目标,并通过depend {install =>让安装目标依赖于其中一个. …}属性.做类似的事情,但通过dzil构建,可能就足够了,但我会欣赏一种更明显的方式.
一种正交的方法是让应用程序不要求/ etc /下的文件存在,但是为了切换到Dist :: Zilla,实际代码似乎发生了很大变化,尽管我现在只想更改构建系统.
对于好奇:我目前想要切换到Dist :: Zilla的两个应用程序是xen-tools和unburden-home-dir.
解决方法
您可以将配置文件放在/ etc /中,如果应用程序知道在那里查找它,但您应该允许自定义该路径(例如在测试系统上,查找本地目录中的文件,或者在用户的主目录).
对于安装只读模块特定数据,Perl中的最佳实践是安装到特定于Perl-install的位置,并且执行该操作的模块是File::ShareDir::Install.您可以使用[ShareDir]插件Dist::Zilla::Plugin::ShareDir从Dist::Zilla开始使用它.它甚至包含在[@Basic]插件包中,所以如果你在dist.ini中使用[@Basic],除了将数据文件放入共享/目录之外,你根本不需要做任何事情.在您的分发存储库中.
要从代码访问sharedir的内容,请使用File::ShareDir.