为什么Perl找不到我已安装的SSH2模块?

时间:2019-01-05 16:52:43

标签: perl module centos

因此,我试图在Centos机器上运行perl脚本。我已经尝试过Centos 5,6,7,但没有成功。每次我运行脚本时,都会得到以下信息:

Can't locate Net/SSH2.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .)

我已经安装了libssh2

Package libssh2-1.4.3-12.el7.x86_64 already installed and latest version

我尝试使用cpan,但是无论我做什么,似乎都行不通。 我只是不明白为什么perl找不到模块...我错过了什么吗? 如果有人可以指导我实际安装SSH2模块,因为我到处都是,似乎什么也没有用。 预先感谢。

更新: 当我尝试通过cpan安装时:

cpan[1]> install Net::SSH2
Reading '/root/.cpan/Metadata'
Reading '/root/.cpan/sources/authors/01mailrc.txt.gz'
........................................................................DONE
Reading '/root/.cpan/sources/modules/02packages.details.txt.gz'
Database was generated on Fri, 04 Jan 2019 22:17:03 GMT
HTTP::Date not available
.............
New CPAN.pm version (v2.22) available.
[Currently running version is v1.9800]
You might want to try
install CPAN
reload cpan
to both upgrade CPAN.pm and run the new version without leaving
the current session.


........................................Killed

仍然出现相同的错误...

2 个答案:

答案 0 :(得分:4)

libssh是SSH的C库。 Net :: SSH2是Perl模块。它们是不同的软件(尽管Net :: SSH2可能取决于libssh)。

您需要安装Net :: SSH2。

请参见What's the easiest way to install a missing Perl module?

答案 1 :(得分:1)

正如Quentin中提到的his answerlibssh2是SSH的C库,而Net::SSH2是Perl模块。由于Net::SSH2将从源安装(这是cpan命令在后台执行的操作),因此您需要确保已安装一些先决条件:

sudo yum install libssh2 libssh2-devel gcc

libssh2软件包已添加到此列表中,以确保完整性。需要libssh2libssh2-devel)和gcc(C编译器)的开发包,因为从源安装Net::SSH2的过程需要构建一个库。这样Net::SSH2可以和libssh2通话。

从源代码安装Perl模块时,默认情况下会运行该模块的测试套件,以在实际运行安装步骤之前检查一切正常。因此,您需要确保已安装perl-Test-Simple,因为Net::SSH2使用它来运行其测试:

sudo yum install perl-Test-Simple

我个人发现通过cpanm来安装Perl模块要比cpan容易得多,因此我建议安装它(它以yum软件包的形式提供):

sudo yum install perl-App-cpanminus

现在Net::SSH2的安装应该很简单:

cpanm Net::SSH2

如果要在系统范围内安装模块,则需要在cpanm调用前加上sudo

sudo cpanm Net::SSH2