2

Linux Ubuntu マシンで perl v5.10.1 を使用しています。プロンプトからNet::SFTPモジュールをインストールしようとしましたが、過去 2 日間、以下のエラーが発生しました。cpan

警告:

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.

次に、CPANサイトからtarファイル方式でインストールしました。以下のサンプルスクリプトを実行すると、エラーが発生します。

脚本:

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 ファイル メソッドでは、CPAN tar ファイル メソッドを使用してそれを解決するにはどうすればよいですか? @INCまた、スクリプトの先頭に必要なすべてのモジュールのパスをパスに追加したくないため、正しいパスにモジュールをインストールする方法。ここでは root ユーザーです。

4

1 に答える 1

3

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の場合)

于 2014-05-30T07:46:54.677 に答える