2013-03-20 109 views
2

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

$ 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,并从.bash_profile中删除了文件夹perlbrew和该行,所以现在我回到了系统perl 5.12.3。我想知道如何做到这一点,在我的主目录中有多个perls,而不必使用ActiveState。

回答

0

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

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

perlbrew install-cpanm 

而且安装它,是线在你的.bash_profile像 “源〜/ 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 - perlbrew是0.61)。但是,如果您没有以默认方式安装perlbrew,那么您可能需要自己修复路径。另外,在未来,如果您想在perlbrew安装的不同perls之间传输模块,these instructions可能会有所帮助。