2010-06-01 2 views
2

Я пытаюсь настроить приложение в зависимости от нескольких модулей Perl, но сервер, на котором я устанавливаю, не имеет подключения к Интернету. Я читал об автономных установках модулей через ppd-файлы, однако мне пришлось бы решать все зависимости один за другим. Тем более утомительно, учитывая, что у меня нет прямого подключения к Интернету.Могу ли я перенести установку Perl с одного компьютера на другой компьютер?

Я надеюсь найти решение, где я устанавливаю ActivePerl на свой компьютер и устанавливаю все библиотеки, которые я хочу, а затем скопируйте папки на свой сервер. Если это всего лишь вопрос об исправлении некоторых переменных окружения, это будет хорошо. Просто хочу знать окончательный список переменных для изменения. Не знаете, обязательно ли устанавливать библиотеки perl на компьютере, на котором он предназначен? (Один из них - 32-битная платформа, а другой - 64 бит, но на сервере уже запущены различные 32-разрядные приложения, поэтому я надеюсь, что это не является серьезной проблемой). Для лучшей совместимости планирую установить ActivePerl на обеих системах и объединить библиотеку каталоги должны быть идентичными.

+0

кажется дубликат http://stackoverflow.com/questions/2682608/why-cant-i-simply-copy-installed-perl-modules-to-other-machines – Space

+0

Спасибо, я старался изо всех сил искать существующие ответы. – Benny

ответ

1

Из этого link

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

Это возможно, для некоторых модулей, чтобы установить модуль без компиляции ничего, и поэтому вы можете просто перенесите файл на месте и он работает. Не вдаваясь в детали , некоторые модули Perl содержат часть , написанную на другом языке (например, C или C++), а некоторые - , написанные только на Perl. Это последний тип , который этот метод будет работать для. Как вы узнаете? Ну, если там нет файлов, называемых something.c и something.h в пакете, шансы заключаются в том, что это модуль, который содержит только код Perl.

В этих случаях, вы можете просто распаковать файл, а затем скопировать только * .pm файлов в каталог, из которого будет работать модули. Два примера из этого достаточно, чтобы проиллюстрировать, как это делается .

IniConf.pm замечательный маленький модуль, который позволяет считывать информации о конфигурации из файла конфигурации в .ini стиля. IniConf.pm - , записанный только в Perl, и не имеет части C . Когда вы распакуете файл .tar.gz , который вы получили от CPAN, вы найдете несколько файлов, и один из них из них называется IniConf.pm. Это единственный файл, в котором вы фактически находитесь . Скопируйте этот файл в каталог где у вас есть программы Perl , которые будут использовать этот модуль .Затем вы можете использовать модуль как вы, если бы он был установлен `` правильно, «» только с линией:

use IniConf; 

Time :: CTime это еще один очень удобный модуль, который позволяет печатать раз в любой формат, который поражает вашу фантазию. Он написан только на Perl, без компонента C . Вы установите его только так же, как и с IniConf, , за исключением того, что файл под названием CTime.pm, должен быть помещен в подкаталог под названием Time. Двоеточия, а также , указывающие организацию модулей, также указывают на структуру каталогов в вашей файловой системе.

+0

Thats хорошие новости! Теперь я планирую установить 32-разрядный Active perl на свой ПК и обновить все необходимые модули. Затем установите 64-битный Active perl на сервер и передайте только папку библиотеки (или, по крайней мере, только эти файлы выборочно). Я обновлю результат после завершения. Спасибо за Ваш ответ. – Benny

+0

Спасибо! Модули, которые я намеревался использовать, просто копировались, они были всего лишь * .pm-файлами. – Benny

2

Ответ был на Perl FAQ, мой плохой не прошел его должным образом.

I copied the perl binary from one machine to another, but scripts don't work. 
That's probably because you forgot libraries, or library paths differ. 
You really should build the whole distribution on the machine it will 
eventually live on, and then type "make install". Most other approaches 
are doomed to failure. 

One simple way to check that things are in the right place is to print 
out the hard-coded @INC that perl looks through for libraries: 

    % perl -le 'print for @INC' 

If this command lists any paths that don't exist on your system, then 
you may need to move the appropriate libraries to these locations, or 
create symbolic links, aliases, or shortcuts appropriately. @INC is also 
printed as part of the output of 

    % perl -V 

You might also want to check out "How do I keep my own module/library 
directory?" in perlfaq8.