编译可移植的 Perl 并包含 CPAN 模块

问题描述 投票:0回答:2

我正在尝试编译包含 CPAN 模块(特别是 YAML 模块)的可移植版本的 perl。我打算能够将此便携式版本复制到许多 Redhat Linux 计算机上的主目录中,将其添加到我的 $PATH 并使用此版本而不是默认的 perl 版本来运行一些测试。

我已经成功编译了一个可移植版本的 perl 并让它在不同的机器上运行。但是,当我编译 YAML 模块并安装它时,它可以在本地运行,但当我将其复制到其他计算机时会失败。

这是我在本地 YAML 模块的编译步骤

perl Makefile.pl
make test
make install

它在本地安装 YAML 模块,并且当我在脚本中使用 YAML 模块时也可以在本地工作。

这是我将 perl 复制到另一台机器并尝试使用 YAML 模块时出现的错误...

Can't locate loadable object for module YAML::XS::LibYAML in @INC

即使 lib/site_perl/5.10.1/x86_64-linux/YAML/LibYAML.pm 存在于我的本地副本中。

我正在尝试做的事情可能吗?
如果是这样,我哪里出错了?

perl compilation perl-module portable-executable
2个回答
1
投票

也许您应该探索 PAR,您可以使用它创建模块依赖项的存档并将其与您的应用程序一起发布。


0
投票

我使用了here描述的方法成功地做到了这一点。我真的不想为额外的库或处理而烦恼。我想在安装脚本中使用此模块,而不将其安装到操作系统中。

首先,我将模块安装到一台计算机上的本地目录,安装所有必要的系统要求

yum groupinstall "Development Tools"
。然后我用安装程序导出编译后的模块,不再需要在后续机器上进行系统更改。

cd YAML-LibYAML-0.89
perl Makefile.PL PREFIX=../perl
make install

这将在

perl
目录中创建该库的编译版本,包括 C 库。然后,您可以将该
perl
目录复制到新环境并通过脚本加载库。请注意,您必须指向该目录中的特定 lib 目录:

use lib '/path/to/perl/lib64/perl5';
use YAML::XS;

我知道这是一篇非常旧的帖子,但有人可能更喜欢这种更简单的方法。

© www.soinside.com 2019 - 2024. All rights reserved.