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