ports containing perl modules go into /lib instead of /usr/local/lib

Vivek Khera khera at kcilink.com
Mon Nov 3 08:44:02 PST 2003

For a while now, it seems that ports containing perl modules (such as
ImageMagick, rrdtool, and net-snmp to name a few) install the perl
components into /lib/perl5 instead of /usr/local/lib/perl5 like they
should (and as the pkg-plist expects).

Needless to say, this is bad. :-(

Anyhow, has anyone else experienced this?  I'm running a 4.8-STABLE
from mid-July, but it also happens on my recently upgraded
4.9-RELEASE.  Both boxes are running perl 5.6.1 from ports, with the
appropriate settings in the /etc/make.conf file (ie, I ran "use.perl
port"; /usr/bin/perl -v says "5.6.1")

I tried tracking the problem for the rrdtool build.  When the port is
built, it goes something like this:

cd perl-shared && /usr/bin/perl Makefile.PL  
Checking if your kit is complete...
Looks good
Writing Makefile for RRDs
cd perl-shared && gmake

 .. then goes on to build the module and a bunch of other stuff.  when
    we get around to the install phase ...

cd perl-shared && gmake install
gmake[3]: Entering directory `/var/tmp/u/sources/usr/ports/net/rrdtool/work/rrdt
Installing /lib/perl5/site_perl/5.6.1/mach/auto/RRDs/RRDs.so
Installing /lib/perl5/site_perl/5.6.1/mach/auto/RRDs/RRDs.bs
Files found in blib/arch: installing files in blib/lib into architecture depende
nt library tree
Installing /lib/perl5/site_perl/5.6.1/mach/ntmake.pl
Installing /lib/perl5/site_perl/5.6.1/mach/RRDs.pm
Writing /lib/perl5/site_perl/5.6.1/mach/auto/RRDs/.packlist
Appending installation info to /usr/local/lib/perl5/5.6.1/mach/perllocal.pod

If I go to that perl-shared directory and type "/usr/bin/perl
Makefile.PL" the resulting Makefile is significanly different:

< INSTALLSITELIB = $(PREFIX)/lib/perl5/site_perl/5.6.1
> INSTALLSITELIB = $(SITEPREFIX)/lib/perl5/site_perl/5.6.1
< INSTALLSITEARCH = $(PREFIX)/lib/perl5/site_perl/5.6.1/mach
> INSTALLSITEARCH = $(SITEPREFIX)/lib/perl5/site_perl/5.6.1/mach
< INSTALLMAN3DIR = $(PREFIX)/lib/perl5/5.6.1/man/man3
> INSTALLMAN3DIR = $(PERLPREFIX)/lib/perl5/5.6.1/man/man3

Note also that "PREFIX" is *empty* in the resulting Makefiles, which
is why the modules are installed in /lib rather than /usr/local/lib.

What could cause this to generate such significantly different output?
I don't really see anything in my environment that would cause perl to
behave differently.

Right now I just go back into those build directories and re-run the
build + install to get the bits installed, but this is a painful

More information about the freebsd-ports mailing list