Как узнать и контролировать, где модули Perl хранятся локально? - PullRequest
0 голосов
/ 04 февраля 2012

Некоторые модули Perl, такие как DBI, необходимо загрузить, скомпилировать и установить .

Я подключаюсь к удаленному производственному тестовому компьютеру, для которого у меня есть толькомой локальный пароль пользователя (без рута, по понятным причинам).Я использовал wget для загрузки некоторых необходимых мне внешних модулей, таких как DBI, и распаковал их, в результате чего появились такие каталоги, как ~/modules/DBI-<version>.

Обычно при компиляции чего-либо для Linux вы запускаете configure предварительно все настроить перед установкой;и один из его ключей - --prefix=<some_dir>, который контролирует, где скомпилированный исполняемый файл и все скомпилированные зависимости в конечном итоге окажутся.

Но для модулей Perl вы не запускаете configure, поэтому мой первый вопрос::

  • Могу ли я контролировать, куда идут скомпилированные модули (например, DBI.pm) при запуске make?Если да, то как?

В противном случае мне нужно обновить хотя бы @INC, чтобы я мог обратиться к модулю;поэтому мой второй вопрос:

  • Как я могу узнать, куда делись скомпилированные модули, когда я запускал make?

Я не могу выдать make install послесоставление, и более того, меня попросили не делать этого.(Меня попросили спроектировать сценарий так, чтобы он не зависел от внешних модулей, находящихся в стандартном системном пути.)

Ответы [ 3 ]

1 голос
/ 04 февраля 2012

Вы можете использовать local::lib для установки модулей Perl в пользовательский каталог.Установленные таким образом модули можно использовать из сценариев Perl:

use local::lib '/path/to/custom/directory';  # Custom modules can be `use`d from hereon

cpanm использует local::lib для внутреннего использования при использовании -l или -Lфлаг.Чтобы установить модуль в текущем каталоге:

cpanm -l. DBI
1 голос
/ 04 февраля 2012
Модули

perl должны быть установлены вместе с системой дистрибутива, как вы это сделали с gentoo или pkg_add на BSD и т. Д., Или с использованием CPAN.Не делайте то, что вы делаете, это может запутать вас и систему.

perl -MCPAN -e "install DBI"
0 голосов
/ 04 февраля 2012

Каталог установки устанавливается при сборке make-файла для модуля.Каждый модуль поставляется с Makefile.PL, который должен быть запущен для сборки make-файла с учетом текущей конфигурации Perl.У Makefile.PL есть опция PREFIX, в которой указано, куда будет установлена ​​сборка, поэтому после распаковки дистрибутива модуля и cd в распакованный каталог вы можете сказать

perl Makefile.PL PREFIX=/module/directory/path
make test
make install

Этот процессописано в документации по Perl - читайте perldoc perlmodinstall.Вы можете зайти в оболочку CPAN и использовать оприон 'o' (в нижнем регистре), который позволяет изменить параметры, переданные на makefile.PL, но я думаю, что ручная сборка / тестирование / установка более проста и дает вам больше контролячерез процесс.

Не забудьте добавить

use lib qw(/module/directory/path);

в начало вашей программы, чтобы убедиться, что Perl ищет в новом каталоге модули.

...