06-11-2009
How to manage several versions of Perl modules during the install?
Hello, I would really appreciate any advice on this issue:
My Perl Module Environment:
/usr/lpp/perl/lib/5.8.7 => has the Perl modules that come with the base Perl installation. Comes first in @INC concatination.
/usr/lpp/perl/lib/site_perl/5.8.7 => has all my installed Perl modules that I downloaded from CPAN. Comes last in @INC concatination.
Installation Method: ExtUtils::MakeMaker
Restrictions: I cannot touch/modify the original Perl installation. This means that I cannot delete any of the pre-installed Perl modules from the
/usr/lpp/perl/lib/5.8.7 directory.
My Problem: This is a generic problem, with this specific example:
- Test::More 0.54 is installed in /usr/lpp/perl/lib/5.8.7
- Test::More 0.62 is installed in /usr/lpp/perl/lib/site_perl/5.8.7
- I want to install Email:Abstract 3.001. When I issue the Makefile.PL command, I get this warning:
"Warning: prerequisite Test::More 0.62 not found. We have 0.54."- Test::More 0.54 is found first because its library is concativated first in @INC. MakeMaker does not find Test::More 0.62, because the older version was already found.
Question: Can MakeMaker manage several versions of Perl modules during the install?
This is what I found in MakeMaker documentation (
ExtUtils::MakeMaker - Create a module Makefile - search.cpan.org):
"Sometimes older versions of the module you're installing live in other directories in @INC. Because Perl loads the first version of a module it finds, not the newest, you might accidentally get one of these older versions even after installing a brand new version. To delete all other versions of the module you're installing (not simply older ones) set the UNINST variable."
Given my restriction of not deleting anything from
/usr/lpp/perl/lib/5.8.7, is there a way to indicate to MakeMaker to search through all @INC directories to find the required versions of a Perl Module?
Any suggestions for a workaround?
Thanks a lot!
Genya
10 More Discussions You Might Find Interesting
1. Shell Programming and Scripting
Hi all ---
I have the need to manage multiple versions of a set of utility scripts -- both shell and SQL and other .dat files. I am wondering if anyone out there knows of a good way to "PATH" to SQL and text files in a way similar to how PATH facilitates finding executables in a pre-specified... (2 Replies)
Discussion started by: DennisB
2 Replies
2. Shell Programming and Scripting
Hi. i installed perl 5.8.8.822 in my D: drive(windows xp).When im trying to install IO-Stringy.pm module( or any module for tat matter ) it is getting installed in 'c:\temp\please run installed script' folder no matter from where ever i run the ppm installation.The path variable is set to... (3 Replies)
Discussion started by: Anuj8584
3 Replies
3. Shell Programming and Scripting
Hi,
I'm using strawberry perl on windows 7 rc, and for the past few days I haven't manage to install any modules.
I understand that I have to download the module from cpan, which I do, afterwards I have to open cmd, change directory to where I have extracted the module, and type:
perl... (0 Replies)
Discussion started by: byte1918
0 Replies
4. Shell Programming and Scripting
Hi All,
How to install the perl modules in Solaris?
pwd
/eweiquu/ocsta/lib/XML-Simple-2.18
and
bash-3.00# perl Makefile.PL
Checking installed modules ...
XML::Parser is installed, it will be used by the test suite
Writing Makefile for XML::Simple
and then
the readme file says,you... (2 Replies)
Discussion started by: Damon_Qu
2 Replies
5. Shell Programming and Scripting
Hi,
I am using perl 5.12. I want to install XML modules and Excel modules which is from perl in windows.
I am using ppm to install these perl modules.
My proxy is this: mtd.ixs.ibab.com/proxy.pac (with http in the beginning)
I used this to set but i unable to download any pakage, Using... (5 Replies)
Discussion started by: vanitham
5 Replies
6. UNIX and Linux Applications
Since apt-get and yum won't let you install multiple versions of firefox I will explain how to here.
1. Go to this page and decide which version of firefox you want.
ftp://ftp.mozilla.org/pub/mozilla.org/firefox/releases/
I used this one. ... (0 Replies)
Discussion started by: cokedude
0 Replies
7. Shell Programming and Scripting
I have some custom functions which i want to use in perl Scripting all time.
i want to How to create modules in perl and how to import them.
Also if i create 15 modules and i want to > import all at once then how can i import? (0 Replies)
Discussion started by: Navrattan Bansa
0 Replies
8. Programming
Having a script.pl how can I automatically download from CPAN all required modules and install and update as required? Something like "emerge -uDNav world" for the perl?
---------- Post updated at 05:38 PM ---------- Previous update was at 05:28 PM ----------
Doesn't matter I've found it
... (6 Replies)
Discussion started by: Tribe
6 Replies
9. Shell Programming and Scripting
Hi guys,
I need to upgrade perl modules on about multiple machines. I'm writing a for loop for it.
for i in 1 2 3 4 5 6;
do
ssh server$i " sudo cpan Mozilla::CA,
sudo cpan LWP::UserAgent,
sudo cpan LWP::Protocol::https,
sudo cpan IO::Socket::SSL,
sudo cpan Net::SSL,... (2 Replies)
Discussion started by: scj2012
2 Replies
10. UNIX for Dummies Questions & Answers
Hallo,
I have an general question which happens when installing software by compiling them self. I'm using FreeBSD system 10.0 and the ports. for info, see: http--en.wikipedia.org/wiki/FreeBSD_Ports.
As I installed BSD for some years there was (i.e.) perl-14 installed. Now, when doing some... (1 Reply)
Discussion started by: HL1234
1 Replies
LEARN ABOUT MOJAVE
extutils::makemaker::tutorial
ExtUtils::MakeMaker::Tutorial(3pm) Perl Programmers Reference Guide ExtUtils::MakeMaker::Tutorial(3pm)
NAME
ExtUtils::MakeMaker::Tutorial - Writing a module with MakeMaker
SYNOPSIS
use ExtUtils::MakeMaker;
WriteMakefile(
NAME => 'Your::Module',
VERSION_FROM => 'lib/Your/Module.pm'
);
DESCRIPTION
This is a short tutorial on writing a simple module with MakeMaker. It's really not that hard.
The Mantra
MakeMaker modules are installed using this simple mantra
perl Makefile.PL
make
make test
make install
There are lots more commands and options, but the above will do it.
The Layout
The basic files in a module look something like this.
Makefile.PL
MANIFEST
lib/Your/Module.pm
That's all that's strictly necessary. There's additional files you might want:
lib/Your/Other/Module.pm
t/some_test.t
t/some_other_test.t
Changes
README
INSTALL
MANIFEST.SKIP
bin/some_program
Makefile.PL
When you run Makefile.PL, it makes a Makefile. That's the whole point of MakeMaker. The Makefile.PL is a simple program which loads
ExtUtils::MakeMaker and runs the WriteMakefile() function to generate a Makefile.
Here's an example of what you need for a simple module:
use ExtUtils::MakeMaker;
WriteMakefile(
NAME => 'Your::Module',
VERSION_FROM => 'lib/Your/Module.pm'
);
NAME is the top-level namespace of your module. VERSION_FROM is the file which contains the $VERSION variable for the entire
distribution. Typically this is the same as your top-level module.
MANIFEST
A simple listing of all the files in your distribution.
Makefile.PL
MANIFEST
lib/Your/Module.pm
File paths in a MANIFEST always use Unix conventions (ie. /) even if you're not on Unix.
You can write this by hand or generate it with 'make manifest'.
See ExtUtils::Manifest for more details.
lib/
This is the directory where the .pm and .pod files you wish to have installed go. They are laid out according to namespace. So
Foo::Bar is lib/Foo/Bar.pm.
t/ Tests for your modules go here. Each test filename ends with a .t. So t/foo.t/ 'make test' will run these tests. The directory is
flat, you cannot, for example, have t/foo/bar.t run by 'make test'.
Tests are run from the top level of your distribution. So inside a test you would refer to ./lib to enter the lib directory, for
example.
Changes
A log of changes you've made to this module. The layout is free-form. Here's an example:
1.01 Fri Apr 11 00:21:25 PDT 2003
- thing() does some stuff now
- fixed the wiggy bug in withit()
1.00 Mon Apr 7 00:57:15 PDT 2003
- "Rain of Frogs" now supported
README
A short description of your module, what it does, why someone would use it and its limitations. CPAN automatically pulls your README
file out of the archive and makes it available to CPAN users, it is the first thing they will read to decide if your module is right
for them.
INSTALL
Instructions on how to install your module along with any dependencies. Suggested information to include here:
any extra modules required for use
the minimum version of Perl required
if only works on certain operating systems
MANIFEST.SKIP
A file full of regular expressions to exclude when using 'make manifest' to generate the MANIFEST. These regular expressions are
checked against each file path found in the distribution (so you're matching against "t/foo.t" not "foo.t").
Here's a sample:
~$ # ignore emacs and vim backup files
.bak$ # ignore manual backups
# # ignore CVS old revision files and emacs temp files
Since # can be used for comments, # must be escaped.
MakeMaker comes with a default MANIFEST.SKIP to avoid things like version control directories and backup files. Specifying your own
will override this default.
bin/
SEE ALSO
perlmodstyle gives stylistic help writing a module.
perlnewmod gives more information about how to write a module.
There are modules to help you through the process of writing a module: ExtUtils::ModuleMaker, Module::Install, PAR
perl v5.18.2 2014-01-06 ExtUtils::MakeMaker::Tutorial(3pm)