Slash Boxes
NOTE: use Perl; is on undef hiatus. You can read content, but you can't post it. More info will be forthcoming forthcomingly.

All the Perl that's Practical to Extract and Report

The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
More | Login | Reply
Loading... please wait.
  • So ignore your /usr/bin/perl and let Debian maintain it for you. Anything you do with CPAN is just going to muck it up anyway so you might as well just bite the bullet and install your own /usr/local/bin/perl where you *can* install from CPAN.
    • The parallel installation is a good idea, and it's the one I usually maintain in production (we have started using dh-make-perl and apt-get, and so far we are managing to keep everything in control, but our programs don't need more than 20 or 30 CPAN packages; Catalyst of Jifty use many, many more!)

      However this would only patch the problem, not solve it...

      I am thinking here (wild mindstorming with self in here) in a solution of managing complexity through layering: there's the CORE groups of packages (let's call it layer 0), then we classify layer 1 as those inmediately useful, but not so much to be on the CORE (to keep it tidy and softy), then layer 2, up to layer, um, say, layer 6 (which would be Acme:: :) This would need a careful watch of usefulness of modules (by statistics and votes, maybe?) but the same process that decides which goes to CORE and which not could be used here... Also, authors could propose the layer it would go, but this is wild thinking right now...

      All packages in layer N would only have dependencies with other layer N packages, and on lower layers (N - 1, ..., 0). That would allow parallel installs, and even circular dependencies (because all those would only depend on the others and lower layers; the graph can be nightmarish, but it should be solvable: if necessary, there should be some safety modules that would provide some dependencies solved in order to break a vicious circle).

      That way we could talk about a CORE (or layer 0) Perl install, a layer 1 Perl install, etc... Of course, you can have a layer 0 + some layer 1 packages, and even, if you are willing, to do all the CPAN work as it's done right now, but this would allow us to write:

      cpan> show layer
      Perl 5.8.9 built 2006-08-15 layer 0 (+ 9 layer 1 packages + 1 layer 2 package + 4 layer Unknown packages)
      cpan> upgrade to layer 1
      Installing all layer 1 packages from CPAN...
      cpan> show layer
      Perl 5.8.9 built 200-6-08-15 layer 1 (+ 1 layer 2 package + 4 layer Unknown packages)
      cpan> quit

      More or less... Is this hard? Sure it is! Is it useful? Of course! This would mean a "layer Max) install would intall All Official CPAN packages (all those not in layer Unknown), which may be overkill... Well, hard drives are cheap nowadays... :)

      And it may be too late for Perl 5, but not for Perl 6 and CPAN6? let's see if this is doable...


      $ pugs -M6 -e 'say "use 6 :)"'
      use 6 :)
      • Er, wow. That's oodles more complex than I suggested. I suggested you sidestep the problem by having a completely separate perl install on your box. Instead of somehow simultaneously solving the packaging problem across CPAN, apt, and all other package systems (assuming you intend your solution to work on other OS distributions), you do an eensy bit of judo and go about your merry way without ever encountering a problem.

        Well.. you get to keep the minor problem that you can never say /usr/bin/perl to get to
        • Well, of course you are right...

          Starting all programs with a she-bang like "#! PATH_TO_PERL" and a good ole sed script on "make" or "make install" will solve the parallel installation `little problem', indeed!

          I just used the sudden inspiration of all these replies to let some brainstorming with myself... your post gave me the best anchor to actually rant it... :-)

          thanks and laters!
          $ pugs -M6 -e 'say "use 6 :)"'
          use 6 :)