如何管理的依赖在Perl以上套餐级和无重点放在CPAN?

问题描述 投票:0回答:1

这涉及到一个关于former question CPAN::Meta::Spec,这似乎并没有被设计成什么,我想我可以使用它。

My use case

我有不同的Perl的应用程序包含了很多包的自理,这取决于一些家庭长大的全系统的效用的东西,当然第三方软件包。这些应用程序可能会提供根据运行时配置,并根据这些特征不同的特征,依赖是不同的。另外,如果自动化测试是可用的,那些可能引入的依赖,以及在最新的例子在默认情况下已经在ActiveState的Perl的5.22适用于Windows的依赖,其中在Ubuntu 16.04那些需要使用APT安装。

我自己的应用程序和实用的东西,它们用Subversion维护和回购至少部分可公开获得的,以客户为好。第三方包优选地将像APT操作系统或Perl发行,像PPM为的ActiveState Perl的Windows上的包管理器来维持。只有一些依赖不可用这种方式,CPAN进场。

What I would like to achieve...

......描述的是我的应用程序和系统广泛实用的东西与他们的依赖关系的方式,让我如区分运行时从开发或测试,并能够区分可选功能和它们的依赖关系。此外,我想保持一定的回购协议,其中例如我自己的应用程序和系统级实用程序可以从以下网址下载。

What I don't want...

......在每一个,我用的地方每个人都包多个地方维护,因为这没有多大意义的我。 APT不一定安装各个Perl的包,而是包含这些,一个完整的应用程序,例如多一些更高层次的分布。如果引入了依赖性,开发人员需要反正检查那些可在所有感兴趣的平台,这是不一定的情况,以及这些分布在每个平台上,例如APT,PPM或CPAN。所以不能在没有检查这些包是如何分布的平台上轻松地介绍了各个软件包的依赖关系。因此,似乎只要我需要管理一个以上包级别,这是大多被保留在平台反正依赖。

此外,这是多么例如Maven和摇篮的工作:一不依赖于个别类,如org.apache.commons.lang3.AnnotationUtilsorg.apache.commons.io.ByteOrderMark,而是包含在一些特定版本的类如Apache Commons Lang中和Apache下议院IO分布。虽然个别类别在年底一些一流的进口,该项目的描述和它的依赖本身不包含的详细程度。我不明白为什么我要在Perl深入了解它是否适​​用于Java的非常好,如果我需要在分配层面反正检查Perl的依赖关系可以在所有的满足。

What I need

所以,我需要的是一些投机/ DSL来形容我的项目的一些名称,版本号,它的依赖和最有可能不同回购从哪里得到的东西。这样的回购将是我自己的SVN-回购或类似APT或PPM的概念,在最好的,即便在那些额外的回购协议,如果一个人决定举办这样。最后,有些像Ansible工具应使用,同时能够自动处理依赖性,使用插件或者额外的工具也好,都基于每个应用程序/项目规格安装我的一些应用程序。

What I've found so far

在Perl这导致我cpanmcpanfileCPAN::Meta::Spec,都能够从测试区别运行时,支持可选的功能等。后者甚至可以模拟不同的回购协议。但两者似乎只支持包,而不是一些更高层次分布的依赖。人们或许可以解决这个使用作为占位分布的封装中,虽然。例如。通过创建sysutils.pmpackage sysutils;,只定义一些版本。然后应用可能依赖于该包使用上述格式。

Downsides recognized so far

但是,人们如建议不要手动编写CPAN::Meta::Spec,但使用一些build and authoring tools代替。这些问题是一些/大部分被认为是通过链接的博客文章本身或other sources和一些例子甚至是提供手写CPAN::Meta::Spec这些工具只有最终弃用。如果没有的话,他们有时干脆期望在一些自定义的配置格式,这似乎没有得到很好的定义为规范本身CPAN::Meta::Spec的相关信息。那么,为什么使用这些工具都代替手工编写规范的?

即使是CPAN::Meta::Spec本身似乎是有问题的,因为最新版本2似乎更喜欢JSON一些无证的原因。这是一个错误的决定手动编写和维护当然是规范的,因为JSON没有意见,这是一个没有去任何一种描述在我看来,人类维持。

Questions

  1. 那么,哪种格式/规格我可以用手动描述使用一些名称和版本一些抽象的分布,包括它的可选功能和依赖性?几乎什么似乎是可能的CPAN::Meta::Spec已,只有包级别的依赖似乎太低级,我现在。
  2. 哪些工具应该被用来解决基于前者规格依赖和支持不同的来源,回购像APT,PPM和SVN依赖呢?
  3. 有了这样Ansible东西来发挥,是否值得保持一定Perl的具体描述在所有再或者应该一个简单的使用Ansible来形容的依赖,让Ansible提供所有那些使用插件或什么的?

感谢您的建议!

perl dependencies dependency-management build-tools
1个回答
1
投票

我想模拟什么CPAN ::元::规格调用一个分布的依赖

当使用的ExtUtils :: MakeMaker的,META_MERGE给了你META spec,让您指定要指定的信息访问领域。从日期时间下面的代码片段::格式::凌说明了这一点:

META_MERGE  => {
   'meta-spec' => { version => 2 },

   prereqs => {
      configure => {
         requires => {
            'ExtUtils::MakeMaker'       => 6.74,
         },
      },
      runtime => {
         requires => {
            'strict'                    => 0,
            'version'                   => 0,
            'warnings'                  => 0,
            'DateTime'                  => 0,
            'DateTime::Format::RFC3339' => 0,
         },
      },
      test => {
         requires => {
            'Test::More'                => 0,
         },
      },
      develop => {
         requires => {
            'FindBin'                   => 0,
            'Pod::Coverage'             => 0.18,
            'Test::Pod::Coverage'       => 1.08,
         },
      },
   },
},

咨询this为全面prereqs规范。


但两者似乎只支持包,而不是一些更高层次分布的依赖。”

你正在做一个关于没什么大惊小怪的。不要紧,你必须使用美孚::酒吧,而不是富酒吧。

© www.soinside.com 2019 - 2024. All rights reserved.