1

私の環境では正常に実行される perl スクリプトを作成しましたが、クライアント環境では失敗します。

Can't locate loadable object for module Math::Pari in @INC (@INC contains: Error-0.17020/lib        JSON-2.57/lib URI-1.60 libwww-perl-5.836/lib Net-Address-IP-Local-0.1.2/lib Math-GMP-2.06/ Net-     SSH-Perl-1.35/lib/ /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2  /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl  .) at Net-SSH-Perl-1.35/lib//Net/SSH/Perl/Util/SSH2MP.pm line 6
Compilation failed in require at Net-SSH-Perl-1.35/lib//Net/SSH/Perl/Util/SSH2MP.pm line 6,  <GEN0> line 1.
BEGIN failed--compilation aborted at Net-SSH-Perl-1.35/lib//Net/SSH/Perl/Util/SSH2MP.pm line  6,  <GEN0> line 1.
Compilation failed in require at Net-SSH-Perl-1.35/lib//Net/SSH/Perl/Util.pm line 56, <GEN0>  line 1.
BEGIN failed--compilation aborted at Net-SSH-Perl-1.35/lib//Net/SSH/Perl/Kex/DH1.pm line 10,  <GEN0> line 1.
Compilation failed in require at Net-SSH-Perl-1.35/lib//Net/SSH/Perl/Kex.pm line 6, <GEN0>  line 1.
BEGIN failed--compilation aborted at Net-SSH-Perl-1.35/lib//Net/SSH/Perl/Kex.pm line 6,  <GEN0> line 1.
Compilation failed in require at Net-SSH-Perl-1.35/lib//Net/SSH/Perl/SSH2.pm line 6, <GEN0>  line 1.
BEGIN failed--compilation aborted at Net-SSH-Perl-1.35/lib//Net/SSH/Perl/SSH2.pm line 6,  <GEN0> line 1.
Compilation failed in require at Net-SSH-Perl-1.35/lib//Net/SSH/Perl.pm line 52, <GEN0> line   1.
the user: ll was successfully added to the automation machine.notroot@ubuntu:~/autom    ation$ vim install.pl 

use lib 'Math'; を追加しようとしました。Math-Pari-2.0305_01080605 モジュールのコンテンツが含まれていますが、うまくいきません:/

クライアントが自分で cpan パッケージをインストールすることを望んでいません。完全に環境に依存しない製品でなければなりません。

私のコードの大部分は Net-SSH-Perl-1.35 に依存しているため、「Net-SSH-Perl-1.35」からの切り替えは避けたいと思っています。

10倍前倒し!

更新:私は物事を明確にするために更新を書き直しています:

私の出発点は、次のライブラリでした。

use lib 'Net-SSH-Perl-1.35/lib/'; 
use lib 'Math-GMP-2.06/'; 
use lib 'Net-Address-IP-Local-0.1.2/lib';
use lib 'libwww-perl-5.836/lib';
use lib 'URI-1.60';
use lib 'JSON-2.57/lib';
use lib 'Error-0.17020/lib';
use Net::SSH::Perl;
use LWP::Simple;
use JSON qw( decode_json );
use POSIX qw/strftime/;
use Net::Address::IP::Local;

以下を出力します。

Can't locate Math/Pari.pm in @INC (@INC contains: Error-0.17020/lib JSON-2.57/lib URI-1.60 libwww-  perl-5.836/lib Net-Address-IP-Local-0.1.2/lib Math-GMP-2.06/ Net-SSH-Perl-1.35/lib/ /etc/perl    /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5     /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl .) at Net-SSH-Perl-  1.35/lib//Net/SSH/Perl/Util/SSH2MP.pm line 6, <GEN0> line 1.
BEGIN failed--compilation aborted at Net-SSH-Perl-1.35/lib//Net/SSH/Perl/Util/SSH2MP.pm line 6,  <GEN0> line 1.
Compilation failed in require at Net-SSH-Perl-1.35/lib//Net/SSH/Perl/Util.pm line 56, <GEN0> line   1.
 BEGIN failed--compilation aborted at Net-SSH-Perl-1.35/lib//Net/SSH/Perl/Kex/DH1.pm line 10  ,  <GEN0> line 1.
Compilation failed in require at Net-SSH-Perl-1.35/lib//Net/SSH/Perl/Kex.pm line 6, <GEN0> line 1.
BEGIN failed--compilation aborted at Net-SSH-Perl-1.35/lib//Net/SSH/Perl/Kex.pm line 6, <GEN0> line 1.
Compilation failed in require at Net-SSH-Perl-1.35/lib//Net/SSH/Perl/SSH2.pm line 6, <GEN0> line 1  .

BEGIN が失敗しました -- コンパイルが中止されました ...

それを修正するために、次のステートメントを追加しました。

lib 'Math-Pari-2.010709' を使用します。

そしてエラーは次のように変わりました:

Can't locate loadable object for module Math::Pari in @INC (@INC contains: Math-Pari-2.010709 Error- 0.17020/lib JSON-2.57/lib URI-1.60 libwww-perl-5.836/lib Net-Address-IP-Local-0.1.2/lib Math-GMP-2.06/  Net-SSH-Perl-1.35/lib/ /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5  /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl .) at Net-SSH-Perl- 1.35/lib//Net/SSH/Perl/Util/SSH2MP.pm line 6
Compilation failed in require at Net-SSH-Perl-1.35/lib//Net/SSH/Perl/Util/SSH2MP.pm line 6, <GEN0> line   1.
BEGIN failed--compilation aborted at Net-SSH-Perl-1.35/lib//Net/SSH/Perl/Util/SSH2MP.pm line 6, <GEN0>  line 1.
Compilation failed in require at Net-SSH-Perl-1.35/lib//Net/SSH/Perl/Util.pm line 56, <GEN0> line 1.
BEGIN failed--compilation aborted at Net-SSH-Perl-1.35/lib//Net/SSH/Perl/Kex/DH1.pm line 10, <GEN0>  line 1.
Compilation failed in require at Net-SSH-Perl-1.35/lib//Net/SSH/Perl/Kex.pm line 6, <GEN0> line 1.
BEGIN failed--compilation aborted at Net-SSH-Perl-1.35/lib//Net/SSH/Perl/Kex.pm line 6, <GEN0> line 1.
Compilation failed in require at Net-SSH-Perl-1....

これは Math-Pari-2.010709 の内容です:

drwxr-xr-x  3 notroot notroot 4096 May  7 14:38 ./
drwxr-xr-x 11 notroot notroot 4096 May  7 21:30 ../
drwxr-xr-x  7 notroot notroot 4096 May  7 14:38 Math/

数学-Pari-2.010709/数学:

total 240
drwxr-xr-x 7 notroot notroot  4096 May  7 14:38 ./
drwxr-xr-x 3 notroot notroot  4096 May  7 14:38 ../ 
-r--r--r-- 1 notroot notroot 27440 Oct 25  2006 Changes
-r--r--r-- 1 notroot notroot 17793 Feb  1  2004 func_codes.h
-r--r--r-- 1 notroot notroot  8676 Aug  9  2006 INSTALL 
drwxr-xr-x 2 notroot notroot  4096 Oct 25  2006 libPARI/
-r--r--r-- 1 notroot notroot  7573 Oct 25  2006 Makefile.PL
-r--r--r-- 1 notroot notroot   780 Nov 11  2005 MANIFEST
-r--r--r-- 1 notroot notroot   297 Oct 25  2006 META.yml
-r--r--r-- 1 notroot notroot  1322 Aug 23  2006 PariInit.pm
-r--r--r-- 1 notroot notroot 35680 Oct 25  2006 Pari.pm
-r--r--r-- 1 notroot notroot 79499 Oct 18  2006 Pari.xs
drwxr-xr-x 2 notroot notroot  4096 Oct 25  2006 patches/
-r--r--r-- 1 notroot notroot  4286 Jan 30  2004 README
drwxr-xr-x 2 notroot notroot  4096 Oct 25  2006 t/
drwxr-xr-x 2 notroot notroot  4096 Oct 25  2006 test_eng/
-r--r--r-- 1 notroot notroot  1142 Jan 20  2005 TODO
-r--r--r-- 1 notroot notroot  1361 Jul  8  2001 typemap
drwxr-xr-x 3 notroot notroot  4096 Oct 25  2006 utils/

Math-Pari-2.010709 にはもともとフォルダ Math が存在しなかったので、それを作成し、Perl が探していた場所に Math-Pari-2.010709 のコンテンツを移動しました。

この段階で追加しました: Math::Pari を使用

しかし、違いはないようです:

Can't locate loadable object for module Math::Pari in @INC (@INC contains: Math-Pari-2.010709 Error- 0.17020/lib JSON-2.57/lib URI-1.60 libwww-perl-5.836/lib Net-Address-IP-Local-0.1.2/lib Math-GMP-2.06/    Net-SSH-Perl-1.35/lib/ /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5  /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl .) at ./install.pl  line 24
Compilation failed in require at ./install.pl line 24.
BEGIN failed--compilation aborted at ./install.pl line 24.

これまでのすべての試みをまとめたものです。

助けていただければ幸いです!

4

2 に答える 2

4

ビルドとインストールのプロセスを経なければならない多くの CPAN ディストリビューションがあります。CPAN からファイルを展開して perl でそれらを指定することはできません。

Math::Pari は 1 です。外部ライブラリへのバインディングをコンパイルする必要があります (これも存在する必要があります)。

あなたはこのアプローチでは運が悪い.

于 2013-05-07T22:35:19.443 に答える
0

Net::OpenSSH::Compat::Perlのほとんどと API レベルで互換性があり、依存関係のインストールが少なくて簡単なNet::OpenSSH::Compat::Perlに切り替えることができる場合があります。

その唯一の非純粋な Perl 依存関係は、パスワード認証をサポートするために必要なIO::Ptysshと、Linux および BSD システム用のマシンに既にインストールされているか、Solaris およびおそらく他のいくつかの unixen 用のパッケージとして利用可能な OpenSSH バイナリです。

于 2013-05-08T09:30:09.690 に答える