2009-02-12 3 views
56

Я использую размещенную машину Linux, поэтому у меня нет прав на запись в каталог /usr/lib.Как установить модуль CPAN в локальный каталог?

Когда я пытаюсь установить модуль CPAN, делая обычный:

perl Makefile.PL 
make test 
make install 

Этот модуль извлекается в папку blib/lib/. Я сохранил use blib/lib/ModuleName, но он все еще компилятор говорит, что модуль не может быть найден . Я попытался скопировать файл .pm в локальный каталог и сохранил require ModuleName, но все же он дает мне некоторую ошибку.

Как установить модуль в другой каталог и использовать его?

+1

В общем, вы должны предоставить сообщение об ошибке. «Некоторая ошибка» не очень помогает. – jrockway

+5

Возможный дубликат [Как я могу использовать новый модуль Perl без разрешения на установку?] (Http://stackoverflow.com/questions/251705/how-can-i-use-a-new-perl-module-without-install -permissions) – daxim

+0

ВАЖНО .. некоторые модули используют Build.PL вместо Makefile.PL (или обертывают его тем или иным), в некоторых случаях (например, при запуске тестов), устанавливая из/в путь с пробелами в это смутит MANIFEST и вызовет сбой теста (ов), обычно это происходит только при установке RELEASE_TESTING, поэтому убедитесь, что он не находится на вашем компьютере. Если есть ошибки MANIFEST, подобные этому, то, вероятно, другие скрываются, придерживаются путей, у которых нет пробелов (пробел, табуляция, unispace и т. Д.). – osirisgothra

ответ

32

У меня была аналогичная проблема, где я не мог даже установить локальный :: Lib

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

Установочный идет как:

perl Makefile.PL PREFIX=./modulos 
make 
make install 

Затем в файле .pl, который требует модуль, который находится в ./

use lib qw(./modulos/share/perl/5.8.8/); # You may need to change this path 
use module::name; 

Остальные файлы (makefile.pl, module.pm и т. Д.) Не требуют изменений.

Вы можете назвать файл .pl с только

perl file.pl 
+13

Нет причин для изменения вашего скрипта - установите PERL5LIB вместо , используя 'use lib'. local :: lib заботится об этом для вас - следуйте его инструкциям, и все должно быть в порядке. – jrockway

+9

используйте INSTALL_BASE вместо PREFIX. –

+0

perl Makefile.PL INSTALL_BASE =/home/irraju/PadWalker дал мне эту ошибку «INSTALL_BASE» не является известным именем параметра MakeMaker ». Даже опция PREFIX дала мне то же самое – Ram

19

local::lib поможет вам. Он убедит «make install» (и «Build install») установить в каталог, в который вы можете писать, и сообщит perl, как получить эти модули.

В общем, если вы хотите использовать модуль, который находится в каталоге blib /, вы хотите сказать perl -Mblib ..., где ... - это то, как вы обычно вызываете свой скрипт.

+0

Я ** действительно ** рекомендую использовать локальный :: lib. Он заботится обо всех мелочах. – melo

+0

К сожалению, он не может выполнить «make test», когда я пытаюсь его установить. – reinierpost

59

Другие ответы уже на Stackoverflow:

От perlfaq8:


How do I keep my own module/library directory?

При создании модулей, скажите Perl, где установить модули.

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

perl Makefile.PL INSTALL_BASE=/mydir/perl 

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

% 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 mbuildpl_arg '--install_base /mydir/perl' 
cpan> o conf commit 
+1

Я думаю, вы должны добавить цитаты: 'o conf mbuild_arg '--install_base/mydir/perl'' – Amro

+4

Я думаю, что люди, которые находят проблемы, должны отредактировать сообщение. :) –

+0

Брайан, один вопрос - ссылка, которую вы указали, указывает, что параметр '--install_base' передается' perl Build.PL'; но 'mbuild_arg' - это аргументы для'./Build'. Может быть, вы имеете в виду 'mbuildpl_arg'? Или есть ошибка в perlfaq? – skaurus

3

Я настоятельно рекомендую Perlbrew. Он позволяет запускать несколько версий Perl, устанавливать пакеты, взломать внутренние элементы Perl, если вы хотите, все обычные разрешения пользователя.

+0

Является ли ссылка мертвой? – ceving

2

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

perl Makefile.PL INSTALL_BASE=/mydir/perl 
Смежные вопросы