首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >升级后无法加载(并重新安装) Socket.pm

升级后无法加载(并重新安装) Socket.pm
EN

Stack Overflow用户
提问于 2013-11-26 09:50:13
回答 1查看 4.5K关注 0票数 0

我刚刚将Slackware64升级到14.1,并在其中找到Perl5.18。Socket.pm现在抱怨它是为另一个Perl版本编译的,这个版本是5.16。以下是错误:

代码语言:javascript
复制
Perl API version v5.16.0 of Socket does not match v5.18.0 at /usr/share/perl5/XSLoader.pm line 92.

不幸的是,即使使用Socket.pm,我也无法重新安装cpan

代码语言:javascript
复制
$ cpan Socket
Reading '/home/francesco-salix/.cpan/Metadata'
  Database was generated on Tue, 26 Nov 2013 09:08:12 GMT
Running install for module 'Socket'
Running make for P/PE/PEVANS/Socket-2.013.tar.gz
Checksum for /home/francesco-salix/.cpan/sources/authors/id/P/PE/PEVANS/Socket-2.013.tar.gz ok

  CPAN.pm: Building P/PE/PEVANS/Socket-2.013.tar.gz

Attempt to reload Socket.pm aborted.
Compilation failed in require at /usr/share/perl5/IPC/Cmd.pm line 46.
BEGIN failed--compilation aborted at /usr/share/perl5/IPC/Cmd.pm line 46.
Compilation failed in require at /usr/share/perl5/ExtUtils/CBuilder/Base.pm line 11.
BEGIN failed--compilation aborted at /usr/share/perl5/ExtUtils/CBuilder/Base.pm line 11.
Compilation failed in require at /usr/share/perl5/ExtUtils/CBuilder/Platform/Unix.pm line 4.
BEGIN failed--compilation aborted at /usr/share/perl5/ExtUtils/CBuilder/Platform/Unix.pm line 4.
Compilation failed in require at (eval 6) line 2.
BEGIN failed--compilation aborted at (eval 6) line 2.
Compilation failed in require at Makefile.PL line 19.
Warning: No success on command[/usr/bin/perl5.18.1 Makefile.PL]
'YAML' not installed, will not store persistent state
  PEVANS/Socket-2.013.tar.gz
  /usr/bin/perl5.18.1 Makefile.PL -- NOT OK
Running make test
  Make had some problems, won't test
Running make install
  Make had some problems, won't install
Could not read metadata file. Falling back to other methods to determine prerequisites

据我所知,Socket.pm是一个Perl核心模块。所以,我认为它应该与Perl一起升级。

下面是当前在@INC中的目录

代码语言:javascript
复制
$ perl -E'say for @INC'
/home/francesco-salix/perl5/lib/perl5/x86_64-linux-thread-multi
/home/francesco-salix/perl5/lib/perl5
/usr/local/lib64/perl5
/usr/local/share/perl5
/usr/lib64/perl5/vendor_perl
/usr/share/perl5/vendor_perl
/usr/lib64/perl5
/usr/share/perl5
.

我看到一些文件夹看起来是重复的,但我不知道它们是否应该是那样的。但是,在前两条路径中没有Socket.pm (假设cpan在我的用户下运行时添加了这个路径,同时为/usr/local/lib64/perl5//usr/lib64/perl5提供了一个Socket.pm文件)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-19 04:05:55

解决方案是清除旧模块,遵循3 3rensho的评论

代码语言:javascript
复制
sudo rm -rf /usr/local/lib64/perl5/*
sudo rm -rf /usr/local/share/perl5/*

它起作用了!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20213527

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档