2013-03-20 112 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可能會有所幫助。