6.8.使用 Perl

如果 MASTER_SITES 被设置为 CPAN, 通常会自动选择正确的子目录。如果默认的子目录是错误的, 可以用 CPAN/Module 来改变它。MASTER_SITES 也可以设置为旧的 MASTER_SITE_PERL_CPAN, 那么 MASTER_SITE_SUBDIR 的首选值就是顶层的层次结构名称。例如,p5-Module-Name 的推荐值是 Module。顶层的层次结构可以在 cpan.org 上查看。这可以在模块的作者发生变化时保持 Port 的工作。

这一规则的例外情况是, 相关的目录不存在, 或 distfile 不存在于该目录中。在这种情况下, 使用作者的 id 作为 MASTER_SITE_SUBDIR 是允许的。可以使用 CPAN:AUTHOR 宏, 它将被翻译成哈希的作者目录。例如,CPAN:AUTHOR 将被转换为 authors/id/A/AU/AUTHOR

当一个 port 需要 Perl 支持时, 它必须设置 USES=perl5, 以及 perl5 USES 描述中的可选 USE_PERL5

表 14. 使用 Perl 的 Port 的只读变量

Read only variablesMeans

PERL

Perl 5 解释器的完整路径,可以是系统中的,也可以是从一个 Port 安装的,但没有版本号。当软件需要 Perl 解释器的路径时,就使用这个。要替换脚本中的“#!”行,请使用 shebangfix

PERL_VERSION

安装的 Perl 的完整版本(例如,5.8.9)。

PERL_LEVEL

已安装的 Perl 版本是一个整数,形式为MNNNPP(例如,500809)。

PERL_ARCH

Perl 存储依赖架构的库的地方。默认为${ARCH}-freebsd

PERL_PORT

所安装的 Perl Port 的名称(例如,“perl5”)。

SITE_PERL

放置特定站点 Perl 包的目录名称。这个值被添加到 PLIST_SUB 中。

注意

没有官方网站的 Perl 模块的 port 必须在 Makefile 的 WWW 行中链接到 cpan.org。首选的 URL 形式是 https://search.cpan.org/dist/Module-Name/ (包括尾部的斜线)。

注意

请不要在依赖关系声明中使用 ${SITE_PERL}。这样做的前提是 perl5.mk 已经包含在内, 但这并不总是真实的。如果这个 port 的文件在以后的升级中被移动, 依赖于这个 port 的 port 将会有错误的依赖关系。声明 Perl 模块依赖关系的正确方法在下面的例子中显示。

例67. Perl 依赖性实例

p5-IO-Tee>=0.64:devel/p5-IO-Tee

对于安装手工页面的 Perl port, 可以在 pkg-plist 中使用宏 PERL5_MAN3 和 PERL5_MAN1。举例来说、

lib/perl5/5.14/man/man1/event.1.gz
lib/perl5/5.14/man/man3/AnyEvent::I3.3.gz

可以替换为

%%PERL5_MAN1%%/event.1.gz
%%PERL5_MAN3%%/AnyEvent::I3.3.gz

注意

其他部分(2中的x和4至9)没有 PERL5_MAN_x_ 宏,因为这些宏会被安装在常规目录中。

例68. 一个只需要 Perl 来构建的 Port

由于默认的 USE_PERL5 值是建立和运行的,因此将其设置为:

USES=		perl5
USE_PERL5=	build

例69. 一个同样需要用 Perl 进行修补的 Port

时常使用 sed(1) 进行修补是不够的。当使用 perl(1) 更容易时,请使用:

USES=		perl5
USE_PERL5=	patch build run

例70. 一个需要 ExtUtils::MakeMaker 来构建的 Perl 模块

大多数 Perl 模块都有一个 Makefile.PL 配置脚本。在这种情况下,设置:

USES=		perl5
USE_PERL5=	configure

例71. 一个需要 Module::Build 来构建的 Perl 模块

当一个 Perl 模块带有 Build.PL 配置脚本时,它可能需要 Module::Build,在这种情况下,设置

USES=		perl5
USE_PERL5=	modbuild

如果它需要 Module::Build::Tiny,请设置

USES=		perl5
USE_PERL5=	modbuildtiny

最后更新于

FreeBSD 中文社区