几天来,我一直在绞尽脑汁尝试让旧版 Perl 脚本在 apache2 服务器中以 cgi 形式运行。它需要 Crypt::OpenSSL::AES。来自 Apache 错误日志:
Can't locate Crypt/OpenSSL/AES.pm in @INC
最简单的方法是使用 ubuntu 软件包来安装它,但我找不到任何包含正确文件的软件包。以下返回的内容为空:
apt-file search AES.pm
作为普通用户,我已经安装了 cpan 并使用它来安装 perl 模块,以便 Crypt::OpenSSL::AES是安装在我的用户目录下/home/user/.cpan/build/Crypt-OpenSSL-AES-0.02-H74J64/lib
。不幸的是,无论我手动将 AES.pm 复制到其正确位置(/usr/local/lib/perl/5.10.1/...
按照@INC)还是在 apache2 配置文件中添加 PERL5LIB 环境变量(SetEnv PERL5LIB /home/user/.cpan/build/Crypt-OpenSSL-AES-0.02-H74J64/lib
),错误日志现在都显示缺少共享对象:
Can't locate loadable object for module Crypt::OpenSSL::AES in @INC
错误信息与第一个有细微的不同(我一开始没有注意到):现在它做找到 AES.pm,但还有另一个依赖项,未指定“可加载对象”,我不知道是哪一个。Openssl 已安装在我的系统上。
所以:
一般来说,在 Linux-ubuntu 系统上,安装 perl 模块以与 apache2 服务器一起工作的正确方法是什么?(我搜索了一下,这个问题有很多答案,但仍然不起作用)。
具体来说,我如何才能正确满足我的 cgi perl 应用程序对 Crypt::OpenSSL::AES 的依赖?
答案1
我解决了我的问题:
安装包
Debian 和 Ubuntu
aptitude install libssl-dev
CentOS 或 Fedora
yum install -y openssl-devel`
手动编译模块
sudo cpan Crypt/OpenSSL/AES.pm
答案2
Ubuntu 存储库中通常会有 *-dev 软件包,供开发人员和管理员构建其他软件。因此,仅用于运行程序的软件包体积会更小。
答案3
你应该看看http://debian.pkgs.cpan.org/。它为您提供了一种从 CPAN 包生成您自己的 .deb 文件的方法。您可以尝试直接使用他们预先打包的文件,但请注意,由于它们所针对的 Debian 机器与您所使用的 Ubuntu 版本之间的差异,它们可能会崩溃:“这里有龙。”
答案4
如何使用dh-make-perl
(创建包https://wiki.debian.org/PerlFAQ)?有点太晚了,但可能会对某些人有帮助。