Subject: pkg/29404: perl modules not seen by perl
To: None <pkg-manager@netbsd.org, gnats-admin@netbsd.org,>
From: None <reed@reedmedia.net>
List: pkgsrc-bugs
Date: 02/16/2005 19:23:00
>Number:         29404
>Category:       pkg
>Synopsis:       perl modules not seen by updated perl
>Confidential:   no
>Severity:       critical
>Priority:       high
>Responsible:    pkg-manager
>State:          open
>Class:          change-request
>Submitter-Id:   net
>Arrival-Date:   Wed Feb 16 19:23:00 +0000 2005
>Originator:     reed@reedmedia.net
>Release:        NetBSD 1.6.2_STABLE
>Organization:
http://bsd.reedmedia.net/
>Environment:
	
	
System: NetBSD rainier.reedmedia.net 1.6.2_STABLE NetBSD 1.6.2_STABLE (MYKERNEL) #1: Tue Jun 1 12:16:43 PDT 2004 reed@rainier.reedmedia.net:/usr/src/sys/arch/i386/compile/MYKERNEL i386
Architecture: i386
Machine: i386
>Description:
Packages for various perl modules made previous to updating perl
can be installed with new perl.
This will cause the new perl to no longer see the modules, because
the modules are installed to version specific paths.
>How-To-Repeat:
Create some p5 packages.
Then update perl. Install your old p5 packages.
>Fix:
Two ideas:
 Force PKG_REVISION bumps for every perl module package
 whenever perl version is updated.
Or
 Don't use a version as part of the modules installation.

For example, on a Debian system, the @INC defaults to:

/usr/local/lib/perl/5.6.1
/usr/local/share/perl/5.6.1
/usr/lib/perl5
/usr/share/perl5
/usr/lib/perl/5.6.1
/usr/share/perl/5.6.1
/usr/local/lib/site_perl
.  <-- default directory

By default, these directories really exist:

/usr/share/perl5
/usr/lib/perl/5.6.1
/usr/share/perl/5.6.1

and depending on what is installed:

/usr/lib/perl5

For example, a libdbd-mysql-perl package uses:
 /usr/lib/perl5/Mysql/Statement.pm
 /usr/lib/perl5/DBD/mysql.pm

And libmime-base64-perl (p5-MIME-Base64) package has:

 /usr/lib/perl5/MIME/Base64.pm
 /usr/lib/perl5/MIME/QuotedPrint.pm
 /usr/lib/perl5/auto/MIME/Base64/Base64.so
 /usr/lib/perl5/auto/MIME/Base64/Base64.bs

instead of:

 /usr/pkg/lib/perl5/site_perl/5.6.1/i386-netbsd/MIME/Base64.pm
 /usr/pkg/lib/perl5/site_perl/5.6.1/i386-netbsd/MIME/QuotedPrint.pm
 /usr/pkg/lib/perl5/site_perl/5.6.1/i386-netbsd/auto/MIME/Base64/Base64.bs
 /usr/pkg/lib/perl5/site_perl/5.6.1/i386-netbsd/auto/MIME/Base64/Base64.so

And one more example: libdigest-md5-perl (p5-Digest-MD5) package
provides:

  /usr/lib/perl5/Digest/MD5.pm
  /usr/lib/perl5/auto/Digest/MD5/MD5.so
  /usr/lib/perl5/auto/Digest/MD5/MD5.bs

instead of

  /usr/pkg/lib/perl5/site_perl/5.6.1/i386-netbsd/Digest/MD5.pm
  /usr/pkg/lib/perl5/site_perl/5.6.1/i386-netbsd/auto/Digest/MD5/MD5.bs
  /usr/pkg/lib/perl5/site_perl/5.6.1/i386-netbsd/auto/Digest/MD5/MD5.so

>Unformatted: