Как я могу сказать cpan изменить цель для установки модуля? - PullRequest
4 голосов
/ 12 марта 2010

Когда я установил Perl из исходного кода, первым приятным сюрпризом было то, что без каких-либо действий все установленные с этого момента модули были доступны для нового Perl. Так как я не нашел ни одного модуля на cpan, который поставляется с моей ОС, я должен использовать для некоторых сценариев встроенный perl. Для одного из этих сценариев я хотел бы установить Text :: Format или Text :: Autoformat (не нашел документацию для этого модуля на cpan). Мой вопрос: как я могу сказать cpan установить этот модуль один раз для OS-distro-perl?

Ответы [ 4 ]

2 голосов
/ 17 марта 2010

Не существует специального способа указать cpan для установки модулей в новом месте только для одного вызова. Эта функция, однако, находится в моем списке дел вместе с поддержкой local :: lib. Я действительно понимаю вашу боль и хочу такую ​​же особенность. Мне просто нужно время (или патч), чтобы все заработало.

До этого вы должны войти в оболочку CPAN.pm и изменить значения для mbuild_arg и makefilepl_arg, как указано в perlfaq8: Как мне сохранить каталог моего собственного модуля? :


Когда вы собираете модули, скажите Perl, где устанавливать модули.

Для дистрибутивов на основе Makefile.PL используйте опцию INSTALL_BASE при генерации Makefile:

perl Makefile.PL INSTALL_BASE=/mydir/perl

Вы можете установить это в своей конфигурации CPAN.pm, чтобы модули автоматически устанавливались в каталог вашей частной библиотеки при использовании оболочки CPAN.pm:

% cpan
cpan> o conf makepl_arg INSTALL_BASE=/mydir/perl
cpan> o conf commit

Для дистрибутивов на основе Build.PL используйте параметр --install_base:

perl Build.PL --install_base /mydir/perl

Вы также можете настроить CPAN.pm для автоматического использования этой опции:

% cpan
cpan> o conf mbuild_arg "--install_base /mydir/perl"
cpan> o conf commit
1 голос
/ 12 марта 2010

Каждая установка Perl имеет свое собственное представление о том, где «жить» библиотекам, которое модуль CPAN использует в качестве руководства для того, где выполнять свои установки. Вы можете увидеть, что это за значения, выполнив perl -V, и найти значение @INC (внизу). Если вы вызываете CPAN с другим Perl (например, установленным в вашей системе Perl), вы автоматически установите модули в предпочтительное расположение этого Perl:

/usr/bin/perl -MCPAN -e shell

или просто установить один модуль без явного вызова оболочки CPAN:

/usr/bin/cpan <modulename>

Также доступны опции конфигурации CPAN, в которых вы можете временно или навсегда изменить место установки, но в вашем случае это не требуется.

1 голос
/ 12 марта 2010

/ путь / к / system / perl -MCPAN -e shell

0 голосов
/ 12 марта 2010

Я предполагаю, что вы хотите просто установить модули в другое место, а затем запустить их из этого места - ваш вопрос мне не слишком понятен.

Полностью прочитайте perldoc на local::lib. С моей стороны было бы большой неудачей попытаться написать это лучше. Это также самый последний и продвинутый способ решения этой задачи. Если другое решение не ссылается на этот модуль, то мое личное предложение было бы избежать его, как чумы.

...