Eva*_*oll 9 perl packaging cpan rpm
给定模块,我如何不仅创建模块,还创建所有模块依赖项的rpm?
首先创建一个测试模块
$ 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
Run Code Online (Sandbox Code Playgroud)
现在,我编辑Makefile.pl,并添加Mojolicious为先决条件。
...
PREREQ_PM => {
'Mojolicious' => '0'
....
Run Code Online (Sandbox Code Playgroud)
现在我可以跑步
perl Makefile.PL
make dist
Run Code Online (Sandbox Code Playgroud)
但是跑步
$ sudo cpantorpm -y /tmp/yum /tmp/Foo-Bar/Foo-Bar-0.01.tar.gz
Run Code Online (Sandbox Code Playgroud)
我明白了
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
Run Code Online (Sandbox Code Playgroud)
这是有道理的,但我希望它为这些要求创建RPM。我想Foo::Bar要求从也代表Mojolicious的cpan生成一个rpm,并使构建系统输出两个RPM(一个rpm Foo::Bar也需要提供MojoliciousRPM)。
这太容易绕过依赖地狱了。我会选择一些像cpan-dependecy这样的项目。有人已经为你完成了这项工作。
下面是它的工作原理:
1) 如何安装 需要以下CPAN模块。
- CPANPLUS
- RPM::规格文件
2) 如何使用 创建 Linux::Smaps bin/cpan-dependency.pl --conf=config/conf.yml Linux::Smaps 的 rpm
3)conf.yml
- filter_requires .. 从包中删除指定的需求。
- build_skip .. 跳过构建包。
- build_requires .. 在构建包之前构建并安装指定的包。
- 需要 .. 将指定的包添加到包的依赖项中。
您需要调整conf.yml以满足您的依赖关系。
要构建您的项目,您将执行以下操作:
bin/cpan-dependency.pl --conf=config/conf.yml Foo::Bar
| 归档时间: |
|
| 查看次数: |
243 次 |
| 最近记录: |