7

如果我错了,请纠正我,但是基于 XS 和 Dynaloader 的模块是那些使用 C/C++ 共享对象 (.so) 而不是 PP (Pure Perl) 的模块?

现在假设我有一台机器,它没有任何网络连接(Solaris 10)并且我想要安装Crypt::OpenSSL::AES(基于 XS 的模块),将AES.pm文件复制到 @INC 中的相关路径不会有任何好处,因为我的系统没有libssl安装。

我的第二个也是最重要的问题是,当我没有 CPAN 时如何安装这些模块?我的方法是:

  1. 首先获取libssl我的平台,编译它,但是我应该把分片对象文件放在哪里以便 perl 可以找到它?
  2. 当我安装并编译了 libssl 并位于它应该在的位置时,现在只需将其复制AES.pm到@INC 中的相关路径就足够了,还是我需要配置/制作它?
4

2 回答 2

7

CPAN 本身是基本 perl 安装的一部分。它将始终可用。

如果您无法使用cpanshell 与 Internet 通信并获取模块,您至少可以从 CPAN 网站获取 tarball,将其放在目标机器上,解压缩,然后运行

$ cpan .

从解压缩的目录中。这将为该发行版运行 CPAN 安装程序。当然,如果它发现缺少的依赖项,您将不得不使用相同的技术自己递归地获取这些依赖项。

于 2012-07-08T18:36:45.673 回答
6
  1. 如果您没有 root 访问权限,我将安装在${HOME}/lib. 只需确保链接器可以找到它,目录应该在您的LD_LIBRARY_PATH环境变量中,或者更好地将 EU::MM 指向库并包含文件

  2. 不,该模块在 C 中也有一部分必须编译。

安装

下载分发包: http ://search.cpan.org/CPAN/authors/id/T/TT/TTAR/Crypt-OpenSSL-AES-0.02.tar.gz

然后按照 INSTALLATION 下的 README 文件中的步骤进行操作

perl Makefile.PL INC="-I $HOME/include" LIBS="-L $HOME/lib"
make
make test
make install

这将确保模块正确构建、测试和安装。

于 2012-07-08T17:58:27.370 回答