2011-07-08 36 views
0

我們的系統管理員最近升級了我的操作系統和perl(到5.12.3)。當我加載了本地:: lib中的環境變量,它的出現打破任何依賴於XS:系統/ perl升級後如何緩解local :: lib問題?

demianshell~> perl -e 'use Storable; store({a=>1}, 'test')' 
demianshell~> eval $(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib) 
demianshell~> perl -e 'use Storable; store({a=>1}, 'test')' 
Assertion ((svtype)((_svi)->sv_flags & 0xff)) >= SVt_RV failed: file "Storable.xs", line 3753 at blib/lib/Storable.pm (autosplit into blib/lib/auto/Storable/_store.al) line 263, at -e line 1 

是有一個容易解決這個?

回答

6

如果您的意思是說您唯一的Perl已經從Perl 5.12。*以外的版本升級而來,並且您的安裝的二進制組件沒有,那麼對不起,除了重建以外,沒有簡單的解決方法將local::lib模塊添加到您的新Perl中。 Perl XS組件在主要的Perl版本中不可行。

這就是爲什麼不信任任何系統Perl的好主意,因爲它在你的控制之外。使用自己的Perl安裝總是一個很好的計劃,所以你可以通過App::perlbrew或者只是一個單獨的Perl安裝來控制它。

+0

經驗教訓!謝謝。 – Demian

+0

有沒有辦法告訴cpanm只需繼續並重新安裝local :: lib中的所有內容? – Demian

+0

我不知道一個。在所有情況下都很難做到,因爲在此期間所涉及的模塊實際上可能已經發生變化,分裂等等。 cpanm --scandeps可能會有所幫助。不過,這是一個有趣的場景。 –