繁体   English   中英

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

[英]perlbrew migrate modules to new perl install, on Mac OS X 10.7.5

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

$ 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。

您是否在默认目录(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正确安装这些模块,或者path / @ INC出了点问题。 如果是后者,则perlbrew bashrc脚本出了点问题(我知道他们已修复了perlbrew的最新版本-0.61中的错误)。 但是,如果您未以默认方式安装perlbrew,则可能需要自己修复路径。

另外,将来,如果您想在安装了Perlbrew的不同Perl之间转移模块, 这些说明可能会有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM