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
ool-1.0.45/perl-shared'
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:

82c82
< INSTALLSITELIB = $(PREFIX)/lib/perl5/site_perl/5.6.1
---
> INSTALLSITELIB = $(SITEPREFIX)/lib/perl5/site_perl/5.6.1
88c88
< INSTALLSITEARCH = $(PREFIX)/lib/perl5/site_perl/5.6.1/mach
---
> INSTALLSITEARCH = $(SITEPREFIX)/lib/perl5/site_perl/5.6.1/mach
92c92
< INSTALLBIN = $(PREFIX)/bin
---
> INSTALLBIN = $(PERLPREFIX)/bin
98c98
< INSTALLSCRIPT = $(PREFIX)/bin
---
> INSTALLSCRIPT = $(PERLPREFIX)/bin
100c100
< INSTALLMAN1DIR = $(PREFIX)/man/man1
---
> INSTALLMAN1DIR = $(PERLPREFIX)/man/man1
106c106
< 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
workaround.



More information about the freebsd-ports mailing list