Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有最简单的方法来构建perl包_Perl_Ubuntu_Build - Fatal编程技术网

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

有没有最简单的方法来构建perl包,perl,ubuntu,build,Perl,Ubuntu,Build,我在Ubuntu上编写了一些Perl库(.pm)和PerlScript(.pl),我需要将它们分发给我办公室的同事。这些脚本和库需要第三方库。我想让它变得非常简单 关于我的信息 我知道如何创建Perl脚本 我知道如何创建bash文件 我在创建MAKE文件、rpm、Deb等方面没有经验 我建议使用为每个模块设置模板。安装后,您可以从命令行调用模块启动器,例如: module-starter --module=My::Module --author="Jessada Thutkawkorapin"

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

关于我的信息

  • 我知道如何创建Perl脚本
  • 我知道如何创建bash文件
  • 我在创建MAKE文件、rpm、Deb等方面没有经验
我建议使用为每个模块设置模板。安装后,您可以从命令行调用
模块启动器
,例如:

module-starter --module=My::Module --author="Jessada Thutkawkorapin" --email=your@email.com
或者,如果您想要具有多个模块的发行版:

module-starter --distro=Foo --module=Foo,Foo::Bar,Foo::Baz --author="Jessada Thutkawkorapin" --email=your@email.com
然后,只需用模块覆盖
.pm
文件,包括您想要运行的任何单元测试(默认测试基本上检查模块的语法以及pod语法)。然后通过以下方式完成模块的基本安装:

perl Makefile.PL
make
make test
make install
(从技术上讲,
make test
是可选的,但强烈建议使用)

现在,如果这些模块依赖于其他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($_);
}

因此,您可以分发一个zip/tarball/etc,其中包含
modulestarter
启动(以及您修改过的)的文件夹和文件以及上述脚本,以安装任何CPAN依赖项,并将其称为
CPAN\u install.pl
。如果您愿意,您可以将所有内容封装在一个名为
install.pl
的最终脚本中,该脚本可以完成所有这些操作。

现在我常用的方法是从我现有的发行版中复制一个
Build.pl
文件,然后从那里开始。显然,对于第一种策略,这不是一个有用的策略,但是CPAN中充满了数千个这样的文件

对于一个简单的-
.pm
文件纯perl发行版,从复制其他人的
Build.PL
文件开始并根据您的情况编辑字段可能是最容易的。您可能只需要更改
模块名称
需要
字段

这是我的一个简单的例子,你可以从中得到启发:

use strict;
use warnings;

use Module::Build;

my $build = Module::Build->new(
   module_name => 'Your::Name::Here',
   requires => {
      'Your::Requirements::Here' => '1.23',
   },
   build_requires => {
      'Test::More' => 0,
   },
   license => 'perl',
   create_makefile_pl => 'traditional',
   create_license => 1,
   create_readme  => 1,
);

$build->create_build_script;
这些字段按顺序表示:

  • 发行版中主要模块的名称-这是发行版本身的名称以及版本和摘要的来源
  • 此发行版将依赖于构建或运行的其他模块
  • 此发行版将依赖于构建的其他模块,但安装后不再需要(通常是
    Test::
    modules或其他构建工具)
  • 适用于分销的许可条款
  • 为不理解
    Build.PL
    协议的旧CPAN客户端创建一个遗留
    Makefile.PL
  • 根据上面声明的许可条款自动创建一个
    许可
    文件
  • 通过将主模块的POD文档转换为纯文本,自动创建
    自述文件

如果你的同事都有Ubuntu(最好是同一版本),而且有足够多的Ubuntu,那么学习如何构建
*.deb
包是值得的。@BasileStarynkevitch,我不想具体说明。它们要么是linux要么是Mac用户,你读过吗?@Konerak,我还没试过。这是最简单的方法吗?起初,我认为rpm是最简单的,但我坚持使用许多不同版本的“howto”。所以我决定在这里请教专家。@Konerak,事实上,在我问这个问题之前,我自己试着学习这些东西的时候,确实通过了好几次这样的页面。我的主要问题是我只看到了构建和安装模块的标准过程:perl Build.PL./Build./Build test./Build install,但不知道在哪里创建这个make文件以及如何让它知道我的脚本。我这里的主要问题是如何以及在哪里指定脚本的位置?所有我的脚本都在/bin下,my.pm在/bin/libWell下,对于每个模块(对于发行版,如果您使用
--distro
选项),
模块启动程序
包括
lib
t
目录,以及一些您通常可以忽略的其他样板文件。一旦安装了模块(通过
perl Makefile.PL;make;make test;make install
),它们就被安装到您正在使用的任何perl发行版的
site\u perl
子目录中。向下投票。相反,使用声明依赖项,以便它们最终出现在发行版元文件中,另请参见和中的示例。