安装 Perl 模块 Sys::Info::Driver::Linux 时出现问题

安装 Perl 模块 Sys::Info::Driver::Linux 时出现问题

我在 Windows(Ubuntu)上运行 Linux 来安装生物信息学软件(MEME Suite - 安装指南)请记住,我没有太多使用 Linux 的经验。

我正在按照说明进行操作,我需要安装一些 Perl 模块。

我能够通过 sudo cpanexcept安装所有必需的Sys::Info

当我运行时,sudo cpan Sys::Info这是我在日志中发现的第一个错误:

正在运行模块‘Sys::Info’
的安装 /root/.cpan/sources/authors/id/B/BU/BURAK/Sys-Info-0.7811.tar.gz 的校验和正常
未安装‘YAML’,不会存储持久状态
使用 Makefile.PL 配置 B/BU/BURAK/Sys-Info-0.7811.tar.gz
检查您的套件是否完整...
看起来不错
警告:未找到先决条件 Sys::Info::Driver::Linux 0.78。

然后,当它尝试安装时Sys::Info::Driver::Linux,我收到以下错误:

t/03-basic.t ............. UNAME:Linux DESKTOP-IO6J8UE 4.4.0-19041-Microsoft #1237-Microsoft 2021 年 9 月 11 日星期六 14:32:00 PST x86_64 x86_64 x86_64 GNU/Linux
t/03-basic.t ............. 1/? /root/.cpan/build/Sys-Info-Driver-Linux-0.7905-8/blib/lib/Sys/Info/Driver/Linux/OS.pm 第 102 行的字符串 eq 中使用未初始化值 $name。 /root/.cpan/build/Sys-Info-Driver-Linux-0.7905-8/blib/lib/Sys/Info/Driver/Linux/OS.pm 第 102 行的字符串 eq 中使用未初始化值 $name。 /root/.cpan/build/Sys-Info-Driver-Linux-0.7905-8/blib/lib/Sys/Info/Driver/Linux/OS.pm 第 102 行的字符串 eq 中使用未初始化值 $
name
。 /root/.cpan/build/Sys-Info-Driver-Linux-0.7905-8/blib/lib/Sys/Info/Driver/Linux/OS.pm 第 102 行。
在 /root/.cpan/build/Sys-Info-Driver-Linux-0.7905-8/blib/lib/Sys/Info/Driver/Linux/OS.pm 第 102 行的字符串 eq 中使用未初始化的值 $name。在 /root/.cpan/build/Sys-Info-Driver-Linux-0.7905-8/blib/lib/Sys/Info/Driver/Linux/OS.pm
第 102 行的字符串 eq 中使用未初始化
的值 $name。 /root/.cpan/build/Sys-Info-Driver-Linux-0.7905-8/blib/lib/Sys/Info/Driver/Linux/OS.pm 第 102 行。
在 /root/.cpan/build/Sys-Info-Driver-Linux-0.7905-8/blib/lib/Sys/Info/Driver/Linux/OS.pm 第 102 行的字符串 eq 中使用未初始化的值 $name。
在 /root/.cpan/build/Sys-Info-Driver-Linux-0.7905-8/blib/lib/Sys/Info/Driver/Linux/OS.pm 第 102 行的字符串 eq 中使用未初始化的值 $name。
我无法打开文件 /proc/swaps 进行读取:在 /usr/local/share/perl/5.30.0/Test/Sys/Info/Driver.pm 第 92 行没有这样的文件或目录。
看起来你的测试65 之后立即以 2 退出。

这可能与我在 Windows 上安装的 Linux 有关,但我完全搞不懂。如果需要,我可以提供完整的日志。

编辑:我发现了 OS.pm 文件和可能的错误:

# user methods
sub is_root {
    return 0 if defined &Sys::Info::EMULATE;
    my $name = login_name();
    my $id   = POSIX::geteuid();
    my $gid  = POSIX::getegid();
    return 0 if $@;
    return 0 if ! defined $id || ! defined $gid;
    return $id == 0 && $gid == 0 && $name eq 'root';
}

任何建议都将非常感谢!

相关内容