perlbrew将模块迁移到新的perl安装,在Mac OS X 10.7.5上

时间:2013-03-20 13:28:20

标签: macos perl upgrade perlbrew

我在perlmonks问了这个问题,并且进展有限,所以我会问这里。我使用perlbrew在Mac OS X 10.7.5上安装了perl 5.16.0,thread。现在,当我尝试将模块传输到新安装时,它会失败,并显示一条我不理解的消息。以下是我使用和输出的命令。

$ perlbrew install --as perl-5.16.0t -Dusethreads perl-5.16.0

然后,关于perlmonks的帖子:

$ perldoc -t perllocal | perl -lane'/"Module"/ && print $F[-1]' | sort -u >/tmp/pms

$ perlbrew switch perl-5.16.0t

$ cpanm -v </tmp/pms &>>/tmp/inst.log & tail -f /tmp/inst.log

然后我尝试将这些命令作为一个简单的检查,并得到输出我无法开始理解:

$ perl -e 1 -MFile::Find
  dyld: lazy symbol binding failed: Symbol not found: _Perl_Istack_sp_ptr
  Referenced from: /Users/abualiga/perl5/lib/perl5/darwin-thread-multi-2level/auto/Cwd/Cwd.bundle
  Expected in: flat namespace

  dyld: Symbol not found: _Perl_Istack_sp_ptr
  Referenced from: /Users/abualiga/perl5/lib/perl5/darwin-thread-multi-2level/auto/Cwd/Cwd.bundle
  Expected in: flat namespace

  Trace/BPT trap: 5

$ perldoc File::Find
  dyld: lazy symbol binding failed: Symbol not found: _Perl_Istack_sp_ptr
  Referenced from: /Users/abualiga/perl5/lib/perl5/darwin-thread-multi-2level/auto/Cwd/Cwd.bundle
  Expected in: flat namespace

  dyld: Symbol not found: _Perl_Istack_sp_ptr
  Referenced from: /Users/abualiga/perl5/lib/perl5/darwin-thread-multi-2level/auto/Cwd/Cwd.bundle
  Expected in: flat namespace

  Trace/BPT trap: 5

我卸载了perl-5.16.0t并删除了文件夹perlbrew和.bash_profile中的行,所以现在我回到系统perl 5.12.3。我想知道如何做到这一点,在我的主目录中有多个perls,而不必使用ActiveState。

1 个答案:

答案 0 :(得分:0)

您是否在默认目录(perl5 / perlbrew)中安装了默认设置的perlbrew?重新安装perlbrew并切换到您首选的perl并检查以下内容:

首先,你是否在perlbrew中安装了cpanm? “哪个cpanm”会告诉你你正在使用哪一个。它应位于路径以“perlbrew / bin”结尾的目录中。如果没有,您可以使用

进行安装
perlbrew install-cpanm

另外,bash_profile中的行是否类似“source~ / perl5 / perlbrew / etc / bashrc”?它是perlbrew bashrc文件的正确路径吗?编辑bash_profile后重启终端了吗? @INC中有什么?检查:

perl -e 'print join "\n", @INC'

如果正确安装了perlbrew,那么@INC中只应存在perlbrew目录的子目录。

从您的错误消息中,看起来perlbrew perl正在寻找该模块,并找到一个针对另一个位于“/ Users / abualiga / perl5 / lib”中的perl构建的模块,这是不兼容的。 Perlbrew perl的模块通常位于“〜/ perl5 / perlbrew /perls/perl-5.16.3/lib”之类的地方。这意味着你没有为你正在使用的特定perlbrew perl正确安装这些模块,或者路径/ @ INC有问题。如果是后者,perlbrew bashrc脚本出现问题(我知道最新版本中的fixed a bug - 0.61 - perlbrew)。但是,如果您没有以默认方式安装perlbrew,那么您可能需要自己修复路径。

另外,将来,如果您想在使用perlbrew安装的不同perls之间传输模块,these instructions可能会有所帮助。