系统管理员最近升级了我的操作系统和perl(到5.12.3)。当我加载本地::lib环境变量时,它似乎破坏了任何依赖于xs:
的内容。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
有一个简单的解决办法吗?
如果您说您唯一的Perl是从Perl 5.12以外的版本升级的。*,并且您的local::lib
安装的二进制组件没有,那么对不起,除了将local::lib
模块重新构建到您的新Perl之外,没有简单的解决方案。Perl XS组件在主要的Perl版本中是不可行的。
这就是为什么不相信任何Perl系统通常是一个好主意,因为它超出了您的控制。使用您自己的Perl安装总是一个好的计划,这样您就可以控制它,或者使用App::perlbrew
,或者只是在某个地方单独安装Perl。