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版本:
该方式完全隔离系统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
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
相关产品推荐
相关产品推荐

