[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

perl package/CPAN integration questionable



Hi all..

IMNSHO, there is a problem with the integration between our perl package,
and the CPAN module.

The CPAN module (for those who don't know about it) gives the perl
administrator functionality comparable to dselect/dpkg, for installing
perl modules.  This is very useful indeed.  However, it 'conflicts' with
that functionality supplied by the dselect/dpkg combo in several ways:

Some very popular perl modules have been packaged as .debs.  This is
good in terms of user visibility, but bad in that it provides users with
two differents ways to install perl packages, and they'll go in different
places - dselect will put them in /usr/lib/perl5, while if they use CPAN
with the default config, they go into /usr/local/lib/site_perl.

Some popular perl modules come as part of the perl package.  This is
certainly a good thing, but....

When a user uses CPAN to update to the latest version of something,
they will have two versions of the same something.  Not only that, but
perl's default search path puts /usr/local/lib/site_perl *after*
/usr/lib/perl5 - so if they try to replace an existing module, they will
appear to suceed, but the old module will be used.

E.g:

njm25# grep VERSION /usr/lib/perl5/HTML/Parser.pm 
use vars qw($VERSION);
$VERSION = sprintf("%d.%02d", q$Revision: 2.13 $ =~ /(\d+)\.(\d+)/);
njm25# grep VERSION /usr/local/lib/site_perl/HTML/Parser.pm 
use vars qw($VERSION);
$VERSION = "2.17";  # $Date: 1998/04/28 06:49:54 $
njm25# perl -MHTML::Parser -e 'print $HTML::Parser::VERSION,qq(\n);'
2.13

So you see, version 2.13 of HTML::Parser came with some package (I suspect
it comes with libwww-perl).  But I used CPAN to install 2.17 (which has
then gone in /usr/local/lib/site_perl).  But, 2.13 is being run.

If I explicitly specify /usr/local/lib/site_perl in a '-I' flag, it takes
priority.  This is of course, not very desirable.

Now, of course, I could choose to set the CPAN module to go directly
to /usr/lib/perl5 (but that is a *BAD THING*).  And, as far as I can find
so far, there is no way to permanently change perl's include search path. 

So the user cannot simply (for example) install a new version of
Term::Readline.

I have also Cc:ed this to debian-policy, because on the one hand perl use
is so fundament to debian it's almost policy ;) but primarily because I
think this problem may well come up again w.r.t. some other complex
package which allows built-in module downloading (a future version of
GIMP, maybe).

Does anyone have any thoughts on this - in particular, is there any good
reason I shouldn't file a bug against perl for listing
/usr/local/lib/site_perl *after* /usr/lib/perl5 in it's @INC array - or,
have I made an awful mistake, and does the whole system in fact work
perfectly well?

If I have correctly analysed the problem, then the 'right' answer involves
dpkg and CPAN somehow understanding each others directory and version
structures - a hard problem.  I suspect that altering the @INC priorities
will solve most problems, though...

Yours,

Jules Bean


/----------------+-------------------------------+---------------------\
|  Jelibean aka  | jules@jellybean.co.uk         |  6 Evelyn Rd	       |
|  Jules aka     |                               |  Richmond, Surrey   |
|  Julian Bean   | jmlb2@hermes.cam.ac.uk        |  TW9 2TF *UK*       |
+----------------+-------------------------------+---------------------+
|  War doesn't demonstrate who's right... just who's left.             |
|  When privacy is outlawed... only the outlaws have privacy.          |
\----------------------------------------------------------------------/


--
To UNSUBSCRIBE, email to debian-policy-request@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org


Reply to: