Невозможно использовать модуль Net::SFTP в Perl

Я использую perl v5.10.1 на своей машине с Linux Ubuntu. Я попытался установить модуль Net::SFTP через приглашение cpan, но за последние 2 дня он выдает следующие ошибки.

предупреждение:

Warning: no success downloading
'/root/.cpan/sources/authors/01mailrc.txt.gz.tmp19821'. Giving up on
it. at /usr/share/perl5/CPAN/Index.pm line 225

ошибка:

Connecting to www.perl.org|207.171.7.51|:80... failed: Connection
timed out.

Connecting to www.perl.org|207.171.7.41|:80... failed: Connection
timed out.

Затем я установил его методом tar-файла через сайт CPAN. теперь, когда я запускаю приведенный ниже пример сценария, он выдает мне ошибку.

сценарий:

use Net::SFTP;

my $host = "169.144.106.231";
my %args = ( 
        user => "root",
        password => "******" );

my $sftp = Net::SFTP->new($host, %args);

Ошибка:

Can't locate Net/SSH/Perl/Buffer.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 .) at /usr/local/share/perl5/Net/SFTP/Buffer.pm line 6.
BEGIN failed--compilation aborted at /usr/local/share/perl5/Net/SFTP/Buffer.pm line 6.
Compilation failed in require at /usr/local/share/perl5/Net/SFTP/Attributes.pm line 7.
BEGIN failed--compilation aborted at /usr/local/share/perl5/Net/SFTP/Attributes.pm line 7.
Compilation failed in require at /usr/local/share/perl5/Net/SFTP.pm line 8.
BEGIN failed--compilation aborted at /usr/local/share/perl5/Net/SFTP.pm line 8.
Compilation failed in require at ankur_sftp.pl line 6.
BEGIN failed--compilation aborted at ankur_sftp.pl line 6.

У меня не установлен Net/SSH/Perl/Buffer.pm, и несколько модулей, таких как Buffer.pm, находятся по другому пути.

/root/Net-SFTP-0.10/blib/lib/Net/SFTP/Buffer.pm
/root/Net-SFTP-0.10/lib/Net/SFTP/Buffer.pm

Мой @INC содержит

/usr/local/lib64/perl5
/usr/local/share/perl5
/usr/lib64/perl5/vendor_perl
/usr/share/perl5/vendor_perl
usr/lib64/perl5
/usr/share/perl5

Кто-нибудь может помочь здесь? Почему метод приглашения cpan выдает эту ошибку? Далее для метода tar-файла, если есть проблема с зависимостью модуля, то как решить ее с помощью метода tar-файла CPAN? Также как установить модули по правильному пути, потому что я не хочу добавлять все необходимые пути модулей в путь @INC в начале моего скрипта. Я пользователь root здесь.


person user2611539    schedule 30.05.2014    source источник
comment
Вы неправильно установили модуль Net::SFTP. Устраните проблему, мешающую работе CPAN, а затем используйте ее.   -  person    schedule 30.05.2014
comment
используйте Net::SFTP::Foreign, который доступен в Ubuntu как libnet- sftp-иностранный перл. Он также предоставляет API совместимости (Net::SFTP::Foreign::Compat), который имитирует Net::SFTP.   -  person salva    schedule 09.06.2014


Ответы (1)


Не удается найти Net/SSH/Perl/Buffer.pm

Это означает, что модуль Net::SSH::Perl::Buffer отсутствует. Вам необходимо установить его.

Net/SFTP/Buffer.pm — это не то же самое, что Net::SSH::Perl::Buffer.

Вы столкнулись с проблемой зависимости, либо вам нужно будет перейти на CPAN и загрузить файл tar и установить модуль, и вам придется делать это для каждого отсутствующего модуля. Я бы посоветовал вам попробовать CPAN-клиент или App::cpanminus, чтобы зависимости могли устанавливаться автоматически.

Для этого см. это: Автоматическая установка зависимости perl в perl

Я не хочу добавлять все необходимые пути модулей в путь @INC в начале моего скрипта.

Затем убедитесь, что @INC содержит путь, по которому устанавливаются ваши модули. Вы можете сказать это по

export PERL5LIB=/home/foobar/code (для Linux) (добавьте это к ~/.bashrc, чтобы оно всегда было доступно при входе в систему.)

set PERL5LIB = c:\path\to\dir (для Windows)

person Chankey Pathak    schedule 30.05.2014
comment
Спасибо... Я сделал то, что вы сказали... Мой @INC теперь содержит необходимые пути (/roo/Net-SSH-Perl-1.37/blib/lib & /root/Net-SFTP-0.10/blib/lib), но это все еще показывает ошибку. – Ошибка НАЧАЛА -- компиляция прервана в /root/Net-SSH-Perl-1.37/blib/lib/Net/SSH/Perl/Util/SSH2MP.pm, строка 6. Ошибка компиляции по требованию в /root/Net-SSH-Perl -1.37/blib/lib/Net/SSH/Perl/Util.pm строка 56. и многое другое для других модулей... - person user2611539; 30.05.2014
comment
Проверьте строку, где он дает ошибку. Я думаю, что для модуля будет отсутствовать строка require/use. Так что вам нужно установить это также. - person Chankey Pathak; 30.05.2014