加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 21:58:28 所属栏目:大数据 来源:网络整理
导读:我维护多个Perl编写的(unix-ish)应用程序,其当前安装过程由手动编写的Makefile组成,并将配置文件安装到/ etc /中. 我真的想将他们的开发转换为使用 Dist::Zilla ,但到目前为止我还没有找到任何Dist :: Zilla插件或功能,它允许我在make install(或./Build安装
我维护多个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-tools和unburden-home-dir.

解决方法

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

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读