我在我的机器上运行Solaris,我需要安装Date :: Calc perl模块才能让我的一个脚本工作。
当我运行以下命令时:
sudo perl -MCPAN -e 'install Date::Calc'
我收到以下错误:
Tests succeeded but one dependency not OK (Bit::Vector)
STBEY/Date-Calc-6.3.tar.gz
[dependencies] -- NA
Running make install
make test had returned bad status, won't install without force
我在Perl开发方面没有任何经验,所以我不知道错误可能是什么或从何处获取更多信息。
我该怎么做才能解决这个问题?
首先尝试安装Bit :: Vector时,即运行以下命令时:
sudo perl -MCPAN -e 'install Bit::Vector'
我收到以下错误消息:
Checking if your kit is complete...
Looks good
Writing Makefile for Bit::Vector
Writing patchlevel.h for /usr/bin/perl (5.012003)
cp lib/Bit/Vector/Overload.pm blib/lib/Bit/Vector/Overload.pm
cp Vector.pm blib/lib/Bit/Vector.pm
cp Vector.pod blib/lib/Bit/Vector.pod
cp lib/Bit/Vector/Overload.pod blib/lib/Bit/Vector/Overload.pod
cp lib/Bit/Vector/String.pod blib/lib/Bit/Vector/String.pod
cp lib/Bit/Vector/String.pm blib/lib/Bit/Vector/String.pm
cc -c -DPTR_IS_LONG -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DPERL_USE_SAFE_PUTENV -xO4 -DVERSION=\"7.2\" -DXS_VERSION=\"7.2\" -KPIC "-I/usr/perl5/5.12/lib/i86pc-solaris-64int/CORE" BitVector.c
sh: line 1: cc: not found
*** Error code 127
make: Fatal error: Command failed for target `BitVector.o'
STBEY/Bit-Vector-7.2.tar.gz
/usr/bin/make -- NOT OK
'YAML' not installed, will not store persistent state
Running make test
Can't test without successful make
Running make install
Make had returned bad status, install seems impossible
我通过以下命令安装了gcc(如建议here):
pkg install gcc-45
pkg install system/header
但是在尝试安装Bit :: Vector时我仍然遇到同样的错误。实际上,当我在命令行中键入cc
时,我收到command not found
错误。但是,当我输入gcc
时,我会收到gcc: no input files
。
答案 0 :(得分:2)
错误意味着Bit::Vector(Date :: Calc的依赖关系)由于某种原因无法安装。 Bit :: Vector需要编译C代码,这意味着您的CPAN配置需要访问用于构建perl的C编译器和库(和头文件)。
据我了解,在Solaris上有时会很痛苦。
如果您有其他可用的C编译器,您可以考虑使用perlbrew构建和安装本地Perl。
答案 1 :(得分:0)
事实证明,唯一的选择是在安装需要编译C代码的新perl模块之前安装Oracle Solaris Studio。
来自a related discussion at Oracle Solaris forum:
/usr/perl5/5.12/lib/i86pc-solaris-64int/Config.pm中的CC修改 不会解决编译问题。将产生新的错误 有些部分不会使用这个变量。
默认情况下,构建模块的方法将使用perl编译 选项。在这种情况下,我们使用Oracle Studio这个软件 将是必需的,因为gcc没有一些选项。
我尝试使用Oracle Studio,编译成功完成。
如果你想使用gcc,那么修改它将非常棘手 几个perl配置文件。另一种方法是手动编译 自定义每个Makefile后,每个必需的模块。