4

我正在尝试设置一个依赖于几个 Perl 模块的应用程序,但我要安装的服务器没有 Internet 连接。我通过 ppd 文件阅读了有关离线模块安装的信息,但是我必须一一解决所有依赖项。考虑到我没有直接的互联网连接,这更加乏味。

我希望找到一个解决方案,在我的 PC 上安装 ActivePerl 并安装我想要的所有库,然后将目录复制粘贴到我的服务器。如果只是修复一些环境变量的问题,那很好。只想知道要修改的变量的最终列表。不确定是否必须在要运行它的计算机上安装 perl 库?(一个是 32 位平台,一个是 64 位,但是服务器已经在运行各种 32 位应用程序,所以我希望这不是一个大问题)为了获得最佳兼容性,我计划在两个系统上安装 ActivePerl 并合并库目录相同。

4

2 回答 2

5

答案在Perl FAQ上,我的错误没有正确完成。

I copied the perl binary from one machine to another, but scripts don't work.
That's probably because you forgot libraries, or library paths differ.
You really should build the whole distribution on the machine it will
eventually live on, and then type "make install". Most other approaches
are doomed to failure.

One simple way to check that things are in the right place is to print
out the hard-coded @INC that perl looks through for libraries:

    % perl -le 'print for @INC'

If this command lists any paths that don't exist on your system, then
you may need to move the appropriate libraries to these locations, or
create symbolic links, aliases, or shortcuts appropriately. @INC is also
printed as part of the output of

    % perl -V

You might also want to check out "How do I keep my own module/library
directory?" in perlfaq8.
于 2012-08-22T10:07:00.340 回答
1

从这个链接

有时,您将无法使用任何方法来安装模块。如果您是特权特别低的用户,则可能会出现这种情况 - 也许您正在服务器上租用网络空间,而您无权做任何事情。

对于某些模块,可以在不编译任何内容的情况下安装模块,因此您只需将文件放置到位并使其工作。无需赘述,一些 Perl 模块包含用其他语言(例如 C 或 C++)编写的部分,而一些仅用 Perl 编写。此方法适用于后一种类型。你怎么知道?好吧,如果包中没有名为 something.c 和 something.h 的文件,则很可能它是一个仅包含 Perl 代码的模块。

在这些情况下,您只需解压缩文件,然后将 *.pm 文件复制到您将运行模块的目录中。这方面的两个例子应该足以说明这是如何完成的。

IniConf.pm 是一个很棒的小模块,它允许您从 .ini 样式的配置文件中读取配置信息。IniConf.pm 仅用 Perl 编写,没有 C 部分。当您解压从 CPAN 获得的 .tar.gz 文件时,您会发现其中有几个文件,其中一个名为 IniConf.pm。这是您真正感兴趣的唯一文件。将该文件复制到您拥有将使用此模块的 Perl 程序的目录。然后,您可以像“正确”安装模块一样使用该模块,只需以下行:

    use IniConf;

Time::CTime 是另一个非常方便的模块,可让您以任何您喜欢的格式打印时间。它只是用 Perl 编写的,没有 C 组件。您将按照与 IniConf 相同的方式安装它,除了名为 CTime.pm 的文件必须放在名为 Time 的子目录中。冒号不仅表示模块的组织,还表示文件系统上的目录结构。

于 2010-06-01T11:53:42.357 回答