You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WSL2中通过cpan安装Perl::LanguageServer失败求助

问题:安装Perl::LanguageServer时IO::AIO编译失败

尝试给VS Code安装Perl::LanguageServer,执行命令:

sudo cpan install Perl::LanguageServer

出现错误,日志提示当前Perl版本不适配IO::AIO,但不确定降级Perl会不会破坏其他程序。关键错误片段:

checking for gcc... x86_64-linux-gnu-gcc
checking whether the C compiler works... no  <-- 我之前成功编译过C代码生成可执行文件
Warning: No success on command[/usr/bin/perl Makefile.PL INSTALLDIRS=site]

完整日志:

Continue anyways?  [y] y
checking for gcc... x86_64-linux-gnu-gcc
checking whether the C compiler works... no
Warning: No success on command[/usr/bin/perl Makefile.PL INSTALLDIRS=site]
  MLEHMANN/IO-AIO-4.8.tar.gz
  /usr/bin/perl Makefile.PL INSTALLDIRS=site -- NOT OK
  MLEHMANN/AnyEvent-AIO-1.1.tar.gz
  Has already been unwrapped into directory /root/.local/share/.cpan/build/AnyEvent-AIO-1.1-2
  MLEHMANN/AnyEvent-AIO-1.1.tar.gz
  Has already been prepared
Running make for M/ML/MLEHMANN/AnyEvent-AIO-1.1.tar.gz
The content of '/root/.local/share/.cpan/build/AnyEvent-AIO-1.1-2/META.yml' is not a HASH reference. Cannot use it.
Warning: Prerequisite 'IO::AIO => 3' for 'MLEHMANN/AnyEvent-AIO-1.1.tar.gz' failed when processing 'MLEHMANN/IO-AIO-4.8.tar.gz' with 'writemakefile => NO '/usr/bin/perl Makefile.PL INSTALLDIRS=site' returned status 19712'. Continuing, but chances to succeed are limited.
cp AIO.pm blib/lib/AnyEvent/AIO.pm
Manifying 1 pod document
  MLEHMANN/AnyEvent-AIO-1.1.tar.gz
  /usr/bin/make -- OK
Running make test for MLEHMANN/AnyEvent-AIO-1.1.tar.gz
PERL_DL_NONLAZY=1 "/usr/bin/perl" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/00_load.t .. 
Dubious, test returned 2 (wstat 512, 0x200)
Failed 1/1 subtests

解决办法

1. 绝对不要降级系统Perl

系统自带Perl绑定了大量系统工具,降级必然破坏依赖,优先用隔离环境解决:

  • 用perlbrew安装独立Perl版本:
    curl -L https://install.perlbrew.pl | bash
    source ~/perl5/perlbrew/etc/bashrc
    perlbrew install perl-5.36.0  # 选择IO::AIO兼容的版本,比如5.36
    perlbrew switch perl-5.36.0
    # 无需sudo,直接安装目标模块
    cpan install Perl::LanguageServer
    
    该方式完全隔离系统Perl,所有模块都安装在独立环境中,不影响系统工具。

2. 排查并修复IO::AIO编译问题

如果不想更换Perl版本,先定位编译失败原因:

  • 验证gcc可用性:执行gcc --version和echo 'int main(){}' | gcc -o test test.c && ./test,确认编译链正常。
  • 安装IO::AIO依赖库:Debian/Ubuntu系统执行sudo apt-get install libaio-dev,RedHat/CentOS执行sudo yum install libaio-devel。
  • 尝试安装兼容版本的IO::AIO:比如cpan install MLEHMANN/IO-AIO-4.7.tar.gz。

3. 用cpanm替代原生cpan

cpanm错误提示更清晰,依赖处理更高效,先安装:

# Debian/Ubuntu直接安装
sudo apt-get install cpanminus
# 或通过perl脚本安装
curl -L https://cpanmin.us | perl - --sudo App::cpanminus

然后执行:

cpanm Perl::LanguageServer

内容的提问来源于stack exchange,提问作者darkfrobozz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 13:45:09