有没有一种最简单的方法来构建perl包

Jes*_*pin 12 ubuntu perl build

我在Ubuntu上写了一些Perl库(.pm)和Perlscripts(.pl),我需要将它们分发给我办公室的同事.这些脚本和库需要第三方库.我想让它变得非常简单.

关于我的信息.

  • 我知道如何创建一个Perl脚本.
  • 我知道如何创建bash文件.
  • 我没有创建MAKE文件,rpm,Deb等的经验.

小智 15

我建议使用Module::Starter为每个模块设置模板.安装完成后,您可以module-starter从命令行调用,例如:

module-starter --module=My::Module --author="Jessada Thutkawkorapin" --email=your@email.com
Run Code Online (Sandbox Code Playgroud)

或者,如果您想要一个包含多个模块的发行版:

module-starter --distro=Foo --module=Foo,Foo::Bar,Foo::Baz --author="Jessada Thutkawkorapin" --email=your@email.com
Run Code Online (Sandbox Code Playgroud)

然后,只需.pm用您的模块覆盖文件,包括您要运行的任何单元测试(默认测试基本上检查模块的语法以及pod语法).然后通过以下方式完成模块的基本安装

perl Makefile.PL
make
make test
make install
Run Code Online (Sandbox Code Playgroud)

(从技术上讲,make test是可选的,但强烈建议).

现在,如果这些模块依赖于其他CPAN模块,那么您可以使用该模块CPAN来安装它们,例如:

use strict;
use warnings;
use CPAN;

#populate however you'd like, either hard-coded, read from a file, etc.
my @modules_to_install=(); 

foreach(@modules_to_install)
{
  CPAN::Shell->install($_);
}
Run Code Online (Sandbox Code Playgroud)

因此,您可以将zip/tarball/etc与module-starter包含上述脚本的文件夹和文件(以及您修改过的文件)一起分发,以安装任何CPAN依赖项,然后调用它cpan_install.pl.如果你愿意,你可以将所有内容包装在最终的脚本中,比如说,install.pl它可以完成所有这些工作.

  • Downvote [自己调用CPAN来安装缺少的模块](http://stackoverflow.com/q/8183293).而是使用[`PREREQ_PM`](https://metacpan.org/module/ExtUtils::MakeMaker#PREREQ_PM)声明依赖项,以便它们最终出现在发行版元文件中,另请参阅http://stackoverflow.com/中的示例a/7664993和http://stackoverflow.com/a/2606677. (8认同)
  • 好吧,对于每个模块(对于发行版,如果你使用`--distro`选项),`module-starter`包括`lib`和`t`目录,以及你可以忽略的其他一些样板.一旦安装了模块(通过`perl Makefile.PL; make; make test; make install`),它们就会安装到你正在使用的Perl发行版的`site_perl`子目录中. (2认同)