如何从模块创建RPM并为依赖项递归创建单独的独立RPM?

时间:2019-07-10 06:25:07

标签: perl rpm packaging cpan

给出一个模块,我如何不仅创建该模块的转速,还创建所有模块依赖项的转速?

从创建测试模块开始

$ module-starter --author "Evan Carroll" --email "me@evancarroll.com" --module Foo::Bar
Added to MANIFEST: Changes
Added to MANIFEST: ignore.txt
Added to MANIFEST: lib/Foo/Bar.pm
Added to MANIFEST: Makefile.PL
Added to MANIFEST: MANIFEST
Added to MANIFEST: README
Added to MANIFEST: t/00-load.t
Added to MANIFEST: t/manifest.t
Added to MANIFEST: t/pod-coverage.t
Added to MANIFEST: t/pod.t
Added to MANIFEST: xt/boilerplate.t
Created starter directories and files

现在,我编辑Makefile.pl,并添加Mojolicious作为先决条件。

...
PREREQ_PM => {                                                         
      'Mojolicious' => '0'
....

现在我可以跑步

perl Makefile.PL
make dist

但是跑步,

$ sudo cpantorpm -y /tmp/yum /tmp/Foo-Bar/Foo-Bar-0.01.tar.gz 

我明白了

error: Failed build dependencies:
        perl >= 5.006 is needed by perl-Foo-Bar-0.01-1.noarch
        perl(ExtUtils::MakeMaker) is needed by perl-Foo-Bar-0.01-1.noarch
        perl(Mojolicious) is needed by perl-Foo-Bar-0.01-1.noarch

这很有意义,但是我希望它为这些要求创建RPM。我希望Foo::Bar要求从cpan生成的代表Mojolicious的rpm,并且要使构建系统输出两个RPM(Foo::Bar的一个rpm也需要提供的{{1} } RPM)。

1 个答案:

答案 0 :(得分:2)

要绕过依赖地狱太容易了。我会去一些项目 像cpan-dependecy一样。有人已经做了 为您工作。

这是它的工作方式:

  

1)如何安装需要以下CPAN模块。

     
      
  • CPANPLUS
  •   
  • RPM :: Specfile
  •   
     

2)如何使用创建Linux :: Smaps的rpm bin / cpan-dependency.pl --conf = config / conf.yml Linux :: Smaps

     

3)conf.yml

     
      
  • filter_requires ..从软件包中删除指定的需求。
  •   
  • build_skip ..跳过以构建软件包。
  •   
  • build_requires ..在构建软件包之前,先构建并安装指定的软件包。
  •   
  • 需要..将指定的程序包添加到程序包的依赖项中。
  •   

您需要调整conf.yml以满足您的依赖。

要构建您的项目,请执行以下操作:

bin/cpan-dependency.pl --conf=config/conf.yml Foo::Bar