Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked

Installing Module from source....

by stevenrh (Beadle)
on Apr 26, 2005 at 16:42 UTC ( [id://451665] : perlquestion . print w/replies, xml ) Need Help??

stevenrh has asked for the wisdom of the Perl Monks concerning the following question:

Hello All,

this may be silly, but here's my issue:
I need the module 'GDBM_File' for a script somebody wrote. Hwever, the script doews not find the module. This module is supposed come with Perl-5-8-6 (I have that installed). Any attempt to get said module results in attempting to download perl all over again.

I wonder if there is a way to use the source posted in CPAN?? I can't seem to find any docs on how to install the module from source.

Any help would be appreciated.


----Here is the std output-----

Can't locate in @INC (@INC contains: /usr/local/lib/perl5/site_perl/5.8.6/mach /usr/local/lib/perl5/site_perl/5.8.6 /usr/local/lib/perl5/site_perl /usr/local/lib/perl5/5.8.6/BSDPAN /usr/local/lib/perl5/5.8.6/mach /usr/local/lib/perl5/5.8.6 .) at ./ line 47.

I found the module. I upgraded my perl from the ports collection. Now I'm looking into putting this path in the right place to let perl find it!

peek# find . -name -print

Replies are listed 'Best First'.
Re: Installing Module from source....
by wazoox (Prior) on Apr 27, 2005 at 09:45 UTC
    Don't panic, you should be able to get it :)

    Here is the quick and dirty "how to install CPAN modules" :

    1. if your OS is windows and you're running ActiveState Perl, go to step 6.
    2. if your OS is linux, first check there isn't a package for your distribution with the appropriate module. For instance, it's part of the basic Debian "perl" package.
    3. if your OS is Linux/FreeBSD/MacOS X/Solaris/(put here your favorite Unix flavour) type the "cpan" command from a root shell.
    4. Follow the on screen instructions for configuration. Choose a mirror close to you.
    5. When setup is completed, type the command (at the "cpan>" prompt): inst GDBM_File It should install the module in some appropriate place.
    6. For ActiveState Perl, use the "ppm" command instead of "cpan". Proceed to step 4.

    If you'd rather use a downloaded file and configure everything by hand:

    1. download the package from CPAN (should be a tar.gz file)
    2. unpack it (tar xzf module.tar.gz)
    3. enter the module directory created and follow the instructions from the INSTALL file.
    4. should be something such as  perl Makefile.PL ; make ; make test ; make install

    When done, get sure the installed module is in the search path for perl ( @INC variable). For instance you currently have your in  /usr/src/contrib/perl5/ext/GDBM_File/ folder, which is NOT in the @INC :

    Can't locate in @INC (@INC contains: /usr/local/lib/perl5/site_perl/5.8.6/mach /usr/local/lib/perl5/site_perl/5.8.6 /usr/local/lib/perl5/site_perl /usr/local/lib/perl5/5.8.6/BSDPAN /usr/local/lib/perl5/5.8.6/mach /usr/local/lib/perl5/5.8.6 .)

    If for some reason you'd like to keep the module in some unusual place (for instance because you modified it), then you should add the directory where your module is to the @INC in each script using it. Add this at the beginning of your script (before the "use somemodule" statement):

    use lib '/path/to/some/directory/';

    see a more detailed explanation at if necessary.

    Update: Apparently you're running FreeBSD, don't you? For some reason the module appears under /usr/src, maybe that means it still need to be compiled before use. Go the the directory, see if there's a "Makefile.PL" file lying there. If it's there, you'll probably need to compile/install the module before use (see above). If there isn't any Makefile, then the module is probably usable "as is", just add the directory to @INC in your script.