vkk05
vkk05

Reputation: 3222

Installing Perl Module in specified directory

I am trying to install one of the Perl module in my server (ubuntu droplet from Digital Ocean). I wanted this module to be installed in /home/vinod/my_test_folder/perl_practice/scripts/lib/ directory which I have already created.

This is specific to one module. I don't want to install it in default path like /usr/bin/perl. I wanted it to be installed in above mentioned path.

Here are the list of commands which I executed to install the Email::Reply perl module.

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

When I execute make install command the following output got displayed on terminal screen

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

And I could see the module got installed in /home/vinod/my_test_folder/perl_practice/scripts/lib/share/perl/5.26.1/Email/Reply.pm path, which is not right path which I mentioned in PREFIX=.

Strange thing here I wrote one small script which uses Email::Reply module by mentioning module path in shebang line

Code below:

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

use EMail::Reply;

print "Hi\n";

still its throws an error

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.

I want this module to be installed in /home/vinod/my_test_folder/perl_practice/scripts/lib/ How to achieve this. Please help me.

Upvotes: 1

Views: 1849

Answers (1)

Grinnz
Grinnz

Reputation: 9231

This is what local::lib can be used for, and cpanm supports it by default:

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

This will install it to /home/vinod/my_test_folder/perl_practice/scripts/lib/perl5.

Alternatively you can recreate the options local::lib sets for this case, the important one for this case is PERL_MM_OPT.

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

Importantly, note that all of this is case sensitive, you must use Email::Reply;.

Upvotes: 3

Related Questions