2010-06-01 100 views
2

我试图设置一个依赖于几个Perl模块的应用程序,但是我要安装的服务器没有Internet连接。我通过ppd文件阅读了离线模块安装,但是我必须逐一解决所有的依赖关系。考虑到我没有直接的互联网连接,所有这些更乏味。我可以将Perl安装从一台计算机移动到另一台计算机吗?

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

+0

似乎复制http://stackoverflow.com/questions/2682608/why-cant-i-simply-copy-installed-perl-modules-to-other-machines的 – Space 2010-06-01 11:47:13

+0

谢谢,我尽我所能搜索现有的答案。 – Benny 2010-06-01 14:16:29

回答

1

从这个link

有时,您将无法 使用任何方法来安装 模块。这可能是这种情况,如果你 是特别是在特权用户 - 也许你是一个服务器,在这里你是不是 赋予的权利做任何事情上租用网络 空间。

这是可能的,对于一些模块, 安装模块无需编译 任何东西,所以你能不能别再 文件的地方,它的工作。 没有进入很多 的细节,一些Perl模块包含用其他语言 (如C或C++)编写的 部分,有些Perl模块仅用Perl编写。它是 后一种类型,这种方法将工作 为。你怎么知道?哦,如果有 没有称为something.c和 something.h包中的文件,机会 是,它是一个包含 只有Perl代码的模块。

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

IniConf.pm是一个美妙的小 模块,使您可以读出 的.ini风格的配置文件的 配置信息。 IniConf.pm是仅用Perl编写的 ,并且没有C 部分。当您打开。tar.gz的 文件,你从CPAN了,你会发现 在有多个文件,其中一个 被称为IniConf.pm。这是 唯一对 感兴趣的文件。将该文件复制到 目录中,在此目录中将使用此 模块的Perl 程序。然后,您可以使用该模块作为 你,如果它被安装 ``正确“”只用线:

use IniConf; 

时间:: CTime的是另一种非常方便的 模块,可让您在 打印时间任何形式都会引起你的幻想。它 仅用Perl编写,没有C 组件。除了名为CTime.pm, 的文件必须放在名为Time的子目录 之外,您将按照与IniConf相同的方式安装它 , 。冒号以及指示模块组织的 , 也指示文件系统上的目录结构 。

+0

那真是个好消息!现在我计划在PC上安装32位Active perl并更新所有必需的模块。然后,在服务器上安装64位Active perl,并只传输库文件夹(或者至少只选择那些文件)。 我将在完成后更新结果。感谢您的回答。 – Benny 2010-06-01 14:20:00

+0

非常感谢!我打算使用的模块仅仅通过复制粘贴工作,它们都只是* .pm文件。 – Benny 2010-08-03 23:56:51

2

答案是在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. 
相关问题