我正在尝试安装一个perl模块:net :: SSH2 with cpan但实际上并不起作用。
cpan -f install Net::SSH2
输出:
CPAN:可以加载好(v2.20)去读 '/root/.cpan/sources/authors/01mailrc.txt.gz' .................................................. .......................... DONE 打算阅读'/root/.cpan/sources/modules/02packages.details.txt.gz' 数据库于2017年5月22日星期一22:29:03 GMT HTTP :: Date生成 不可用.............新的CPAN.pm版本(v2.16)可用 [目前运行的版本是v1.9402]您可能想尝试 安装CPAN 重新加载cpan以升级CPAN.pm并运行新版本而不离开当前会话。
............................................... ................ DONE 去读'/root/.cpan/sources/modules/03modlist.data.gz'不能 通过包“CPAN :: Modulelist”定位对象方法“data”(也许 你忘了在(eval 16)第1行加载“CPAN :: Modulelist”?) /usr/share/perl5/CPAN/Index.pm第518行 CPAN :: Index :: rd_modlist('CPAN :: Index','/ root / cpan / sources / modules3modlist.data.gz') /usr/share/perl5/CPAN/Index.pm第85行 CPAN :: Index :: reload('CPAN :: Index')在/usr/share/perl5/CPAN.pm第955行调用 CPAN :: exists('CPAN = HASH(0x21fd2f0)','CPAN :: Module','install')在/usr/share/perl5/CPAN/Shell.pm第1243行调用 CPAN :: Shell :: expandany('CPAN :: Shell','install')在/usr/share/perl5/CPAN/Shell.pm第1639行调用 CPAN :: Shell :: rematein('CPAN :: Shell','force','install','install')调用于/usr/share/perl5/CPAN/Shell.pm 1935行 CPAN :: Shell :: ANON ('CPAN :: Shell','install','install')在/ usr / bin / cpan行318调用 main :: _ default('ARRAY(0x1938f18)')在/ usr / bin / cpan第278行调用
答案 0 :(得分:1)
您的CPAN安装似乎不完整或已损坏。操作系统和Perl版本可能会有所帮助。在许多当前的Linux发行版中,可以使用常规系统软件实用程序(如yum(RHEL / CentOS),apt(Debian / Ubuntu)和yast(SuSE))安装Perl模块及其依赖项。缺点是版本可能不是最新版本。
答案 1 :(得分:0)
此PerlMonks thread让其他人遇到类似问题。看起来这个答案在这种情况下有效:
在我看来,你的.cpan目录中有一些损坏的数据。我把它吹走然后再试一次:
$ rm -rf /home/user/.cpan
自行承担风险。在您的情况下,您需要删除/root/.cpan
。
此外,正确使用cpan
是在命令后列出模块名称。因此,您应该使用cpan install Net::SSH2
而不是cpan Net::SSH2
。如果您使用-f
选项,则必须指定-i
:cpan -f -i Net::SSH2
,但请先尝试不强制执行。您不希望在系统perl
中安装已损坏的模块。
事实上,一般来说,你根本不想弄乱系统perl
。建立自己的perl
并尽可能多地混淆它。
PS:install是一个虚拟模块,正是因为很多人犯了这个错误。
答案 2 :(得分:0)
安装Perl模块最安全,最方便的方法可能取决于分发。例如,the recommended method on Fedora是:
$ sudo dnf install 'perl(Net::SSH2)'
如该示例所示,在系统上安装Perl模块通常需要sudo或root用户。所以如果你是一个sudoer,你可能想用sudo尝试你的命令。
如果您没有这种电源,则可能需要在本地安装。这通常意味着将其下载到您在主目录中创建的Perl库目录,并以某种方式包括@INC
中的路径,例如更新$PERL5LIB
以包含/home/user/perl/modules/Net-SSH2/lib/
或任何路径到模块lib目录是。