Можно ли перенести установку Perl с одного компьютера на другой?
Я пытаюсь настроить приложение, зависящее от нескольких модулей Perl, но сервер, на который я устанавливаю, не имеет подключения к Интернету. Я читал об автономных установках модуля через ppd-файлы, однако мне пришлось бы разрешить все зависимости по очереди. Тем более утомительно, что у меня нет прямого подключения к Интернету.
Я надеюсь найти решение, в котором я устанавливаю ActivePerl на свой компьютер и устанавливаю все необходимые библиотеки, а затем копирую и вставляю каталоги в мой сервер. Если это просто вопрос исправления некоторых переменных среды, это было бы хорошо. Просто хочу знать окончательный список переменных для изменения. Не уверены, обязательно ли устанавливать библиотеки perl на компьютер, на котором он предназначен для работы? (Одна - 32-битная платформа, а другая - 64-битная, но на сервере уже запущены различные 32-битные приложения, поэтому я надеюсь, что это не является серьезной проблемой). Для лучшей совместимости я планирую установить ActivePerl в обеих системах и объединить библиотеку. каталоги должны быть идентичными.
2 ответа
По этой ссылке
Иногда вы не сможете использовать какие-либо методы для установки модулей. Это может быть в том случае, если вы являетесь пользователем с особенно ограниченными правами - возможно, вы арендуете веб-пространство на сервере, где вам не дают права что-либо делать.
Для некоторых модулей возможно установить модуль без компиляции, поэтому вы можете просто поместить файл на место и заставить его работать. Не вдаваясь в подробности, некоторые модули Perl содержат часть, написанную на каком-то другом языке (например, C или C++), а некоторые написаны только на Perl. Это последний тип, для которого этот метод будет работать. Как ты узнаешь? Что ж, если в пакете нет файлов с именем нечто.c и something.h, есть вероятность, что это модуль, который содержит только код Perl.
В этих случаях вы можете просто распаковать файл, а затем скопировать только файлы *.pm в каталог, из которого вы будете запускать модули. Два примера этого должно быть достаточно, чтобы проиллюстрировать, как это делается.
IniConf.pm - это замечательный маленький модуль, который позволяет вам считывать информацию о конфигурации из файла конфигурации в стиле.ini. IniConf.pm написан только на Perl и не имеет C-части. Когда вы распаковываете файл.tar.gz, полученный из CPAN, вы найдете там несколько файлов, один из которых называется IniConf.pm. Это единственный файл, который вас действительно интересует. Скопируйте этот файл в каталог, где находятся программы Perl, которые будут использовать этот модуль. Затем вы можете использовать модуль так, как если бы он был установлен `` правильно '', используя только строку:
use IniConf;
Time:: CTime - еще один очень удобный модуль, который позволяет вам печатать время в любом формате, который вам нравится. Он написан только на Perl, без компонента Си. Вы установите его точно так же, как и с IniConf, за исключением того, что файл с именем CTime.pm должен быть помещен в подкаталог Time. Двоеточие, а также указание на организацию модулей, также указывает на структуру каталогов в вашей файловой системе.
Ответ был на 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.