Могу ли я переместить установку Perl с одного компьютера на другой?

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

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


person Benny    schedule 01.06.2010    source источник
comment
кажется дубликатом stackoverflow.com/questions/2682608/   -  person Space    schedule 01.06.2010
comment
Спасибо, я старался изо всех сил искать существующие ответы.   -  person Benny    schedule 01.06.2010


Ответы (2)


По этой ссылке

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

Для некоторых модулей можно установить модуль без компиляции, поэтому вы можете просто бросить файл на место и заставить его работать. Не вдаваясь в подробности, некоторые модули 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. Двоеточия не только указывают на организацию модулей, но и указывают на структуру каталогов в вашей файловой системе.

person Space    schedule 01.06.2010
comment
Это хорошие новости! Теперь я планирую установить 32-битный Active perl на свой компьютер и обновить все необходимые модули. Затем установите 64-битный Active perl на сервер и перенесите только папку библиотеки (или, по крайней мере, только эти файлы выборочно). Я обновлю результат, как только закончу. Спасибо за Ваш ответ. - person Benny; 01.06.2010
comment
Огромное спасибо!! Модули, которые я намеревался использовать, работали просто путем копирования и вставки, все они были просто файлами *.pm. - person Benny; 04.08.2010

Ответ был на Часто задаваемые вопросы по Perl, моя ошибка не прошла его должным образом.

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.
person Benny    schedule 22.08.2012