【问题标题】:How to downgrade Perl on Mac OS X Mavericks如何在 Mac OS X Mavericks 上降级 Perl
【发布时间】:2013-11-05 16:34:43
【问题描述】:

新发布的 Mavericks 已从其存储库中删除了已弃用的模块“Switch.pm”。 但是,我最近尝试构建 AOSP 源代码树,它以某种方式使用此模块生成“make-hash-tools.pl”

小牛队的 perl 版本是 5.16.2,其前身 Mountain Lion 是 5.12.4。有没有办法降级我的 Perl?

编译错误如下:

  Can't locate Switch.pm in @INC (@INC contains: /Library/Perl/5.16/darwin-thread-\ 
  multi-2level /Library/Perl/5.16 /Network/Library/Perl/5.16/darwin-thread-multi-2level\
  /Network/Library/Perl/5.16 /Library/Perl/Updates/5.16.2\
  /System/Library/Perl/5.16/darwin-thread-multi-2level /System/Library/Perl/5.16\
  /System/Library/Perl/Extras/5.16/darwin-thread-multi-2level \
  /System/Library/Perl/Extras/5.16 .) at external/webkit/Source/WebCore\
  /make-hash-tools.pl line 23.

谢谢~!

【问题讨论】:

  • 或者从 CPAN 安装 Switch.pm。
  • 降级系统 perl 不是一个好主意。你会破坏一切依赖它的东西。正如@SlavenRezic 所说,只需从CPAN 安装Switch。或者使用 perlbrew 构建本地 perl。
  • 我尝试使用 CPANM 安装 Switch,但提示找不到 Switch!
  • @FangBoy 请显示您使用的确切命令以及来自失败的 cpanm 安装的构建日志 - cpanm Switch 应该可以工作。
  • edit您的问题包含输出而不是将其发布到多个列中。强制安装损坏的模块是一个坏主意,因为它可能毫无用处。有趣的是,我在 Linux 上使用 perl 5.18.1 时遇到了相同的测试失败 (2-3),这表明模块已损坏。为我安装的最新版本是 2.06。 编辑:已经有lots of bugs关于测试失败,我们不是第一个……⇒移植你的代码

标签: macos perl osx-mavericks perl-module


【解决方案1】:

您可以使用perlbrew 将并行版本的 Perl 安装在其自己的目录中,并带有自己的模块。目前,它允许您安装 Perl 早至 5.003_07,尽管 Perl Porters 并不支持所有这些版本的安全修复。

不过install Switch from CPAN 可能会更简单。

【讨论】:

  • 你能给我一步一步的命令吗?我尝试了 CPAN,但它说找不到模块 Switch。谢谢
  • cpan Switch 对我来说安装得很好。
  • ~$ cpan Switch Reading '/Users/USER_NAME/.cpan/Metadata' 数据库是在 2013 年 10 月 26 日星期六 14:53:02 GMT 生成的 为模块 'Switch' 运行安装无法创建目录 /用户/USER_NAME/.cpan/prefs
  • 您以什么用户身份运行 cpan?拥有/Users/USER_NAME/.cpan有什么用?
  • 测试总结报告 -------------------- t/given.t (Wstat: 0 测试: 293 失败: 2) 测试失败: 2 -3 Files=3, Tests=590, 1 wallclock secs (0.07 usr 0.01 sys + 0.40 cusr 0.02 csys = 0.50 CPU) 结果:FAIL 1/3 测试程序失败。 2/590 子测试失败。 make: *** [test_dynamic] Error 255 RGARCIA/Switch-2.16.tar.gz /usr/local/bin/make test -- NOT OK //hint// 要查看安装此模块的 cpan-testers 结果,请尝试: 报告 RGARCIA/Switch-2.16.tar.gz 运行 make install make test 已返回错误状态,不会强制安装
【解决方案2】:

看起来运行 sudo cpanm Switch --force 对我有用

【讨论】:

    【解决方案3】:

    我发现这些命令有效。

    sudo perl -MCPAN -e shell
    
    cpan > force install Switch 
    

    【讨论】:

      【解决方案4】:

      你也可以这样用:

      $ sudo defaults write '/Library/Preferences/com.apple.versioner.perl' Version 5.12
      

      它使 perl 对大多数东西运行版本 12。不幸的是,不适用于apache ...

      【讨论】:

        【解决方案5】:

        在 10.9.2 上为我工作,没有“强制”。


        cpan[2]> install Switch
        Running install for module 'Switch'
        Running make for C/CH/CHORNY/Switch-2.17.tar.gz
        Fetching with LWP:
        

        ...一堆获取的东西...

        CPAN.pm: Building C/CH/CHORNY/Switch-2.17.tar.gz
        
        Checking if your kit is complete...
        Looks good
        Writing Makefile for Switch
        Writing MYMETA.yml and MYMETA.json
        

        ...一堆 xcode 许可证的东西...

        cp Switch.pm blib/lib/Switch.pm
        Manifying blib/man3/Switch.3pm
          CHORNY/Switch-2.17.tar.gz
          /usr/bin/make -- OK
        'YAML' not installed, will not store persistent state
        Running make test
        PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
        t/given.t ... ok       
        t/nested.t .. ok   
        t/switch.t .. ok       
        All tests successful.
        Files=3, Tests=590,  0 wallclock secs ( 0.04 usr  0.01 sys +  0.22 cusr  0.01 csys =  0.28 CPU)
        Result: PASS
          CHORNY/Switch-2.17.tar.gz
          /usr/bin/make test -- OK
        Running make install
        Installing /Library/Perl/5.16/Switch.pm
        Installing /usr/local/share/man/man3/Switch.3pm
        Appending installation info to /Library/Perl/Updates/5.16.2/darwin-thread-multi-2level/perllocal.pod
          CHORNY/Switch-2.17.tar.gz
          /usr/bin/make install  -- OK
        

        然后我运行了之前出现“Can't locate Switch.pm in @INC”错误的代码,并且代码运行良好。

        【讨论】:

          【解决方案6】:

          我找到了另一个命令:

          sudo cpan -f Switch
          

          我必须执行该命令 2 次,但对我来说它适用于优胜美地。谢谢blog

          【讨论】:

            猜你喜欢
            • 2013-06-11
            • 1970-01-01
            • 2014-05-06
            • 2013-12-27
            • 1970-01-01
            • 1970-01-01
            • 2014-07-08
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多