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



所以我正试图在我的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

仍然得到相同的错误。。。

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

您需要安装Net::SSH2。

请参阅安装丢失的Perl模块的最简单方法是什么?

正如Quentin在回答中提到的,libssh2是SSH的C库,而Net::SSH2是Perl模块。由于Net::SSH2将从源代码安装(这就是cpan命令在后台所做的),因此您需要确保安装了几个先决条件:
sudo yum install libssh2 libssh2-devel gcc

为了完整起见,已将libssh2软件包添加到此列表中。需要libssh2(libssh2-devel)和gcc(C编译器)的开发包,因为从源代码安装Net::SSH2的过程需要构建一个库,以便Net::SSH2可以与libssh2对话。

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

sudo yum install perl-Test-Simple

我个人发现通过cpanm安装Perl模块比通过cpan安装Perl模块容易得多,因此我建议安装它(它作为yum包提供):

sudo yum install perl-App-cpanminus

现在Net::SSH2的安装应该像一样简单

cpanm Net::SSH2

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

sudo cpanm Net::SSH2

最新更新