在Mac OSX上安装JSON :: XS

时间:2012-10-03 23:02:47

标签: macos perl perl-module

我希望你已经准备好通过我的挫折进行长期冒险了:

我在Mac OSX上使用Perl 5.10:Snow Leopard,使用XCode 3.2.6。

我想要做的是在程序中使用模块JSON :: XS。

这是我第一次使用Perl做过一些事情,所以我查看一些简单的示例程序并试用它们,它们都可以工作。然后我去使用JSON :: XS。我明白了:

Can't locate JSON/XS.pm in @INC (@INC contains: /Library/Perl/Updates/5.10.0 /System/Library/Perl/5.10.0/darwin-thread-multi-2level /System/Library/Perl/5.10.0 /Library/Perl/5.10.0/darwin-thread-multi-2level /Library/Perl/5.10.0 /Network/Library/Perl/5.10.0/darwin-thread-multi-2level /Network/Library/Perl/5.10.0 /Network/Library/Perl /System/Library/Perl/Extras/5.10.0/darwin-thread-multi-2level /System/Library/Perl/Extras/5.10.0 .) at part1.pl line 5.
BEGIN failed--compilation aborted at part1.pl line 5.

我做一些谷歌搜索,并认为它需要安装。同样在我的谷歌搜索中,我发现使用cpanm的重要建议。所以我首先尝试使用cpan(我已经拥有)安装cpanm。

我得到一个非常长的打印输出,基本上说不,不行,“成功的机会有限”,并且一遍又一遍地失败。整个包含的时间太长了,但我觉得有趣的是:

Warning (usually harmless): '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
Could not read '/Users/danielgierl/.cpan/build/ExtUtils-ParseXS-3.15-VSmBrZ/META.yml'. Falling back to other methods to determine prerequisites

我考虑安装YAMl,因为上面的输出部分(我反复得到)让我觉得这就是问题所在。基本上它也失败了,除了其他原因,它给了我如上所述的警告。

输出的另一部分说:

make: *** No rule to make target `/System/Library/Perl/5.10.0/darwin-thread-multi-2level/CORE/config.h', needed by `Makefile'.  Stop.

我在线查看,虽然我理解为什么它说它做了什么,但我认为我无法解决这个问题,因为这些是来自cpan或其他地方的Makefile。

另一部分:

Running install for module 'version'
Running make for J/JP/JPEACOCK/version-0.9901.tar.gz
Has already been unwrapped into directory /Users/danielgierl/.cpan/build/version-0.9901-U8IMPt
Could not make: Unknown error
Warning (usually harmless): '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

一般来说有很多未知错误。它告诉我的部分我也很麻烦:

Testing if you have a C compiler
ld: library not found for -lbundle1.o
collect2: ld returned 1 exit status
lipo: can't open input file: /var/folders/1C/1CnzBuv+F5y+8M5YPm6I4k+++TI/-Tmp-//ccTWRqov.out (No such file or directory)
error building /var/folders/1C/1CnzBuv+F5y+8M5YPm6I4k+++TI/-Tmp-/compilet.bundle from /var/folders/1C/1CnzBuv+F5y+8M5YPm6I4k+++TI/-Tmp-/compilet.o at /System/Library/Perl/5.10.0/ExtUtils/CBuilder/Base.pm line 213.

I cannot determine if you have a C compiler
so I will install a perl-only implementation

You can force installation of the XS version with

perl Makefile.PL --xs

我知道我有一个c编译器,因为gcc -v告诉我它是版本4.2.1。从好的方面来说,它确实告诉我我的工具包看起来很好(不管是什么)。如果我尝试运行他们推荐我的命令,我会被告知没有这样的文件或目录。

经过一番谷歌搜索后,我不断看到XCode重新引用了Mac用户。我已经有了一个版本的XCode,但由于它可能有问题,我将其卸载,然后获得版本3.2.6(我的操作系统对于较新版本来说太旧了)。安装失败原因不明,它告诉我联系软件公司。但是,在它失败之前,它会安装UNIX工具,包括gcc(我后来得到了最新版本),所以我认为这不是问题。

总而言之,这已经消耗了我今天大约6个小时的时间,而且我有压力和身体不适(虽然我今天早上开始这个徒劳无益的冒险,但它已经加剧了),我不知道在哪里我应该去接下来。

我希望有经验的用户在10秒钟内完成一些愚蠢的错误,但我担心最坏的情况。总的来说,我已经完成了我所发现的每一条建议,从用--sudo到牺牲山羊到太阳神。我很感激任何帮助。

1 个答案:

答案 0 :(得分:5)

最好不要单独离开系统perl。而是使用perlbrew安装您自己的perl

您可以在不使用cpan

的情况下安装cpanm

curl -L http://cpanmin.us | perl - App::cpanminus

为您的本地perl

此外,您可能必须安装command line tools for XCode

如果你不能,你可能需要考虑从MacPorts安装构建工具并将它们放在你的路径之前的系统路径中,但是在你的本地perl之后,因为你没有一定要搞乱MacPorts可能安装的perl