如何使基于Dist :: Zilla的Perl模块(或应用程序)将文件安装到/ etc /?

前端之家收集整理的这篇文章主要介绍了如何使基于Dist :: Zilla的Perl模块(或应用程序)将文件安装到/ etc /?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我维护多个Perl编写的(unix-ish)应用程序,其当前安装过程由手动编写的Makefile组成,并将配置文件安装到/ etc /中.

我真的想将他们的开发转换为使用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-toolsunburden-home-dir.

解决方法

最好的办法是避免从任何Perl发行版中将文件安装到/ etc中.您无法确保cpan客户端(或安装用户)有权在那里安装,并且系统上可能安装了多个Perls,因此每个Perl都会破坏另一个安装的/ etc文件.您不能真正阻止文件被后续安装覆盖,因此您不应该将配置数据放在那里,您不想丢失.

您可以将配置文件放在/ etc /中,如果应用程序知道在那里查找它,但您应该允许自定义该路径(例如在测试系统上,查找本地目录中的文件,或者在用户的主目录).

对于安装只读模块特定数据,Perl中的最佳实践是安装到特定于Perl-install的位置,并且执行该操作的模块是File::ShareDir::Install.您可以使用[ShareDir]插件Dist::Zilla::Plugin::ShareDirDist::Zilla开始使用它.它甚至包含在[@Basic]插件包中,所以如果你在dist.ini中使用[@Basic],除了将数据文件放入共享/目录之外,你根本不需要做任何事情.在您的分发存储库中.

要从代码访问sharedir的内容,请使用File::ShareDir.

原文链接:https://www.f2er.com/Perl/171783.html

猜你在找的Perl相关文章