0

I'm trying to install perl modules local to my user - I don't have root access. I have setup in my directory structure the following place for perl libs: /dasd/home/miner/perl5lib/lib/lib (don't ask) - I want my perl modules there.

I am going to foolishly post my whole MyConfig.pm - I think just make_arg, make_install_arg, and make_pl_arg are important, but I spose therein lies my question: I'm not sure exactly how cpan works (and can't easily google it) so I don't know exactly the point of params in MyConfig.pm.

 'build_dir' => q[/dasd/home/miner/.cpan/build],
 'cache_metadata' => q[1],
 'cpan_home' => q[/dasd/home/miner/.cpan],
 'dontload_hash' => {  },
 'ftp' => q[/usr/kerberos/bin/ftp],
 'ftp_proxy' => q[],
 'getcwd' => q[cwd],
 'gpg' => q[/usr/bin/gpg],
 'gzip' => q[/bin/gzip],
 'histfile' => q[/dasd/home/miner/.cpan/histfile],
 'histsize' => q[100],
 'http_proxy' => q[],
 'inactivity_timeout' => q[0],
 'index_expire' => q[1],
 'inhibit_startup_message' => q[0],
 'keep_source_where' => q[/dasd/home/miner/.cpan/sources],
 'links' => q[/usr/bin/links],
 'make' => q[/usr/bin/make],
 'make_arg' => q[LIB= dasd/home/perl5lib/lib/lib PREFIX=~/perl5lib],
 'make_install_arg' => q[LIB= dasd/home/perl5lib/lib/lib],
 'makepl_arg' => q[PREFIX=~/perl5lib LIB=/dasd/home/perl5lib/lib/lib   INSTALLMAN1DIR=~/perl5lib/man1 INSTALLMAN3DIR=~/perl5lib/man3],
 'ncftp' => q[],

To further explain, I run 'cpan MongoDB', for example, and I get a lot of output, all screaming a bunch of errors, it all dies on this error:

Checking if your kit is complete...
Looks good
Writing Makefile for File::Slurp
Writing MYMETA.yml and MYMETA.json
make: *** No rule to make target `dasd/home/perl5lib/lib/lib'.  Stop.
  /usr/bin/make LIB= dasd/home/perl5lib/lib/lib PREFIX=~/perl5lib -- NOT OK
Running make test
  Can't test without successful make
Running make install
  make had returned bad status, install seems impossible
Running make for K/KR/KRISTINA/MongoDB-0.45.tar.gz
  Is already unwrapped into directory /dasd/home/miner/.cpan/build/MongoDB-0.45

CPAN.pm: Going to build K/KR/KRISTINA/MongoDB-0.45.tar.gz

make: *** No rule to make target `dasd/home/perl5lib/lib/lib'.  Stop.
  /usr/bin/make LIB= dasd/home/perl5lib/lib/lib PREFIX=~/perl5lib -- NOT OK
Running make test
  Can't test without successful make
Running make install
  make had returned bad status, install seems impossible

What does "No rule to make target `dasd/home/perl5lib/lib/lib' mean? I don't want to make that dir...I want to make the makefile echoed by cpan when they say this "Writing Makefile for File::Slurp". Which i think I want to be in the /dasd/home/perl5lib/lib/lib directory. I'm assuming we are doing File::Slurp because MongoDB depends on it in some way.

I wish I had a better way to phrase the question - but in short here it is: teach me what this all means - how can MyConfig.pm be changed to do what I want?

PinkElephantsOnParade
  • 6,452
  • 12
  • 53
  • 91
  • `'make_arg' => q[LIB= dasd/home/perl5lib/lib/lib...` - why is this string here, and why this path is relative? – raina77ow Jul 09 '12 at 16:16
  • The same goes with 'make_install_arg' and 'makepl_arg'. I think you should specify the absolute paths there. – raina77ow Jul 09 '12 at 16:18

2 Answers2

4

"No rule to make target `dasd/home/perl5lib/lib/lib'" means that you put a space between LIB= and dasd/home/perl5lib/lib/lib (when it should have been a /), making them separate arguments. make thinks that dasd/home/perl5lib/lib/lib is the name of a file you want it to build, and it doesn't know how.

I'd start by editing MyConfig.pm in a text editor and just search for LIB= dasd and replace it with LIB=/dasd.

cjm
  • 61,471
  • 9
  • 126
  • 175
0

You say your libraries are stored in /dasd/home/miner/perl5lib/lib/lib yet your config file has dasd/home/perl5lib/lib/lib.

You seem to need a leading / and a /miner step in the path.

Borodin
  • 126,100
  • 9
  • 70
  • 144