ActivePerl在安装过程中“重定位”文件时做了什么?

时间:2009-11-20 03:11:31

标签: perl activeperl relocation

鉴于我编译了一些unix程序,我需要做些什么才能将其重新定位到不同的目录并使其继续正常运行。

我正在考虑Perl,但是会对像Apache这样的其他系统感兴趣,这些系统在完成后似乎也会失败。为了激发这个问题,在将其他系统捆绑为产品安装的一部分时,能够执行此类重定位将非常有用。

对于它的价值,ActivePerl的安装过程似乎包含了一些在安装过程中执行重定位的魔法。

Installing ActivePerl...
Copying files to /opt/ActivePerl-5.8...done
Relocating...done (164 files relocated)
Generating HTML documentation...done
Syncing perl PPM database with .packlists...done 

ActivePerl has been successfully installed at /opt/ActivePerl-5.8.

任何人都可以告诉我“重新定位......”背后发生的事情吗?

5 个答案:

答案 0 :(得分:7)

编译perl时,它需要某些位置的某些文件。您可以使用perl -V查看其中一些路径。对于ActivePerl,当您想要移动整个安装时,您必须更新perl期望找到的内容以及各种帮助程序期望找到perl的位置。请参阅ActiveState的reloc_perl文档,如果有,请查看源代码。

ActivePerl的作用与您对其他程序的处理方式无关。这取决于他们每个人的期望和期望。

答案 1 :(得分:3)

很多都取决于程序。有些程序是相当自包含的,因此比在外部配置文件或其他不太宽容的元素中具有目录路径的其他程序更优雅地处理移动。

答案 2 :(得分:3)

Active Perl不会在您的系统上编译perl,只需解压缩并将其复制到正确的位置。

问题是Perl安装有许多文件需要具有特定于安装的信息,例如查找库的位置,安装位置等等。修改这些文件以在重定位阶段获得正确的信息。

答案 3 :(得分:0)

这取决于你在“重新定位”下的含义。您可以运行二进制文件,然后将其移动到另一个目录,它应该在Linux下运行。

因此,您可以编写一个程序,将所有二进制文件和配置文件移动到另一个目录中,然后只需更改当前工作目录。

答案 4 :(得分:0)

使用UltraEdit搜索并替换Perl安装下的所有文件:例如,当从C:\ Perl64移动到G:\ Perl64时,将包含“C:\ Perl64”的所有文件替换为“G:\ Perl64” 。在这个过程中,我们需要取消选中几个配置文件和exe文件的只读属性,然后重做替换。