在指定目录中安装Perl模块

问题描述 投票:0回答:1

我正在尝试在服务器中安装Perl模块之一(来自Digital Ocean的Ubuntu液滴)。我希望将此模块安装在已经创建的/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=中提到的正确路径。

这很奇怪,我在shebang行中提到了一个模块路径来编写了一个使用Email::Reply模块的小脚本

下面的代码:

#!/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/中如何实现这一目标。请帮助我。

perl install perl-module
1个回答
0
投票

这是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;

© www.soinside.com 2019 - 2024. All rights reserved.