Установка модуля Perl в указанный каталог - PullRequest
1 голос
/ 14 октября 2019

Я пытаюсь установить один из модулей Perl на моем сервере (капля ubuntu из Digital Ocean). Я хотел, чтобы этот модуль был установлен в каталог /home/vinod/my_test_folder/perl_practice/scripts/lib/, который я уже создал.

Это относится только к одному модулю. Я не хочу устанавливать его по умолчанию, как /usr/bin/perl. Я хотел, чтобы он был установлен по указанному выше пути.

Вот список команд, которые я выполнил для установки Email::Reply модуля perl.

Downloaded module from metacpan
tar xvfz Email-Reply-1.204.tar.gz
cd Email-Reply-1.204/
perl Makefile.PL PREFIX=/home/vinod/my_test_folder/perl_practice/scripts/lib/
su
<password_for_root>
make
make test 
make install

Когда я выполняю make installкоманда выводит следующий вывод на экран терминала

Manifying 1 pod document
Installing /home/vinod/my_test_folder/perl_practice/scripts/lib/share/perl/5.26.1/Email/Reply.pm
Installing /home/vinod/my_test_folder/perl_practice/scripts/lib/man/man3/Email::Reply.3pm
Appending installation info to /home/vinod/my_test_folder/perl_practice/scripts/lib//lib/x86_64-linux-gnu/perl/5.26.1/perllocal.pod

И я вижу, что модуль установлен по пути /home/vinod/my_test_folder/perl_practice/scripts/lib/share/perl/5.26.1/Email/Reply.pm, который не является правильным путем, о котором я упоминал в PREFIX=.

Странная вещь, здесь я написал один небольшой скрипт, который использует модуль Email::Reply, упомянув путь к модулю в строке shebang

Код ниже:

#!/usr/bin/perl -I/home/vinod/my_test_folder/perl_practice/scripts/lib/share/perl/5.26.1/

use EMail::Reply;

print "Hi\n";

все еще выдает ошибку

Can't locate EMail/Reply.pm in @INC (you may need to install the EMail::Reply module) (@INC contains: /home/vinod/my_test_folder/perl_practice/scripts/lib/share/perl/5.26.1/ /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.26.1 /usr/local/share/perl/5.26.1 /usr/lib/x86_64-linux-gnu/perl5/5.26 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.26 /usr/share/perl/5.26 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base) at test.pl line 3.
BEGIN failed--compilation aborted at test.pl line 3.

Я хочу, чтобы этот модуль был установлен в /home/vinod/my_test_folder/perl_practice/scripts/lib/ Как этого добиться. Пожалуйста, помогите мне.

1 Ответ

3 голосов
/ 14 октября 2019

Это то, для чего local :: lib может использоваться, и cpanm поддерживает его по умолчанию:

$ cpanm -l /home/vinod/my_test_folder/perl_practice/scripts Email::Reply

Это установит его на /home/vinod/my_test_folder/perl_practice/scripts/lib/perl5.

В качестве альтернативы вы можете воссоздать наборы параметров local :: lib для этого случая. Важным для этого случая является PERL_MM_OPT .

$ env PERL_MM_OPT='INSTALL_BASE=/home/vinod/my_test_folder/perl_practice/scripts' cpanm Email::Reply

Важно отметить, чточто все это чувствительно к регистру, вы должны use Email::Reply;.

...