0

我在我的机器上运行 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(如此的建议):

pkg install gcc-45 
pkg install system/header

但是在尝试安装 Bit::Vector 时我仍然遇到同样的错误。事实上,当我cc在命令行上键入时,我得到了command not found错误。但是,当我键入gcc时,我得到gcc: no input files.

4

2 回答 2

2

该错误意味着Bit::Vector(Date::Calc 的依赖项)由于某种原因无法安装。Bit::Vector 需要编译 C 代码,这意味着您的 CPAN 配置将需要访问用于构建 perl 的 C 编译器和库(和头文件)。

据我了解,这在 Solaris 上有时会很痛苦。

如果您有另一个可用的 C 编译器,您可以考虑使用perlbrew构建和安装本地 Perl 。

于 2013-05-20T15:46:51.077 回答
0

所以事实证明,唯一的选择是在安装需要编译 C 代码的新 perl 模块之前安装Oracle Solaris Studio 。

来自Oracle Solaris 论坛的相关讨论

/usr/perl5/5.12/lib/i86pc-solaris-64int/Config.pm 中的 CC 修改不会解决编译问题。将产生新的错误,并且某些部分不会使用此变量。

默认情况下,这种构建模块的方法将使用 perl 编译选项。在这种情况下,由于我们使用了 Oracle Studio,因此需要此软件,因为 gcc 不提供某些选项。

我用Oracle Studio试了一下,编译成功了。

如果你想使用 gcc,那么修改几个 perl 配置文件将非常棘手。另一种方法是在自定义每个 Makefile 之后手动编译每个必要的模块。

于 2013-05-27T13:15:19.040 回答