无法安装Net :: SSH2 perl模块

时间:2017-05-23 21:36:22

标签: linux perl module cpan

我正在尝试安装一个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行调用

3 个答案:

答案 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选项,则必须指定-icpan -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目录是。