2013-06-12 4 views
0

Я пытаюсь использовать SFTP-модуль в Perl. Мой код выглядит это нравится: Проблемы с использованием модуля SFTP perl

#!/usr/local/bin/perl5 

use lib "/some_path/Net-SFTP-0.10/lib"; 
use lib "/some_path/Net-SSH-Perl-1.25/lib"; 
use lib "/some_path/Math-Pari-2.010709"; 

use Net::SFTP; 

Я получаю эту ошибку при его запуске:

Can't locate Math/Pari.pm in @INC 

Математика-Pari-2,010709 каталог содержит Pari.pm. У меня нет разрешения на создание каталога Math и файл Pari.pm. Что я могу сделать, чтобы исправить эту проблему?

+2

Вы действительно уверены, что не хотите правильно устанавливать свои модули? Я вижу, что 'Math :: Pari' содержит некоторые файлы' .xs', поэтому шаг компиляции представляется полезным. – amon

+1

Это должно подвести итог вам [здесь] (http://stackoverflow.com/questions/16423392/perl-cant-locate-loadable-object-for-module-mathpari-in-inc). – chrsblck

+2

Я считаю, что у вас нет контроля над этой системой. Это сервер? Можете ли вы, чтобы ваш ИТ-отдел установил для вас NET :: SFTP и Net :: SSH? Кроме того, взгляните на [Net :: SFTP :: Foreign] (http://search.cpan.org/~salva/Net-SFTP-Foreign-1.75/lib/Net/SFTP/Foreign.pm) и [Net :: SFTP :: Зарубежные :: Compat] (http://search.cpan.org/~salva/Net-SFTP-Foreign-1.75/lib/Net/SFTP/Foreign/Compat.pm). Они могут обеспечить все необходимое и потребовать меньше модулей. –

ответ

2

Я использую local::lib и установить $PERL5LIB в $HOME/perl5 так здание и установка недостающих модулей довольно легко:

% cpanm Math::Pari 
--> Working on Math::Pari 
Fetching http://www.cpan.org/authors/id/I/IL/ILYAZ/modules/Math-Pari-2.01080605.tar.gz ... OK 
Configuring Math-Pari-2.01080605 ... OK 
Building and testing Math-Pari-2.01080605 ... 
Successfully installed Math-Pari-2.01080605 
1 distribution installed 

Вам необходимо установить App::cpanminus, следуя инструкциям на https://github.com/miyagawa/cpanminus, которые по существу являются:

curl -L http://cpanmin.us | perl - App::cpanminus 

После этого с cpanm в вашем $PATH (здесь он находится в $HOME/perl5/bin) instal ling модули в вашем собственном $ HOME справочник - легкий ветерок.

+1

Ваш следующий шаг - начать использовать ['' 'perlbrew'''] (http://www.perlbrew.pl) и более полностью отделить установку системы perl от вашей среды разработки. –

+0

Будьте очень осторожны, рекомендуя «perlbrew», или OP может быть вне работы. Если эта машина является производственным сервером, установка второй версии Perl может быть нарушением корпоративной ИТ-политики OP. Я работаю в крупных финансовых учреждениях, и у них есть много юридических требований, которым они должны следовать, и много проверок, чтобы убедиться. Неутвержденная исполняемая установка вызовет звонок. –

+0

Давид, взятые точки, но '' 'perlbrew, cpanm''' и * локальные для пользователя * - не системные установки - это способ изолировать приложения уровня системы от тестовых и сред разработки на * любой * системе. Кроме того, кто-либо, устанавливающий модули perl на живом производственном оборудовании, вероятно, не работает над основными ИТ-активами банка. Если бы они были, у них были бы точные дубликаты изолированных тестовых сред и не будет устанавливать SFTP (!) Из CPAN. –

2

После комментариев, я закончил использовать Net::SFTP::Foreign. Достаточно получить материал, и меньше зависимостей облегчили мне жизнь. Спасибо за помощь!