in reply to Apple says sorry for Mac Perl breakage

"Apple's Moy says the problem is due to the way Perl orders its module directory search path"

A while back I was a bit shocked to find out how badly the order of directory searching was broken in Perl because it seemed pretty obvious to me that user-specific directories should be searched before site-specific directories before "came with the distribution" directories (and that this is especially true for the easy-to-predict scenario of installing a new version of a "core" module). (I even read a thread at PerlMonks this week where this search-order breakage was implicated.)

I got pointed to some vague references to how "it has to be that way, for now" but could never find or get an explanation of how it got broken (I recall, in the long-distant past of doing porting, perhaps even for Perl 4, that this obvious case was properly handled, though I might be misremembering that) and what depends on that breakage.

I'd love to hear or be pointed to some background on that.

- tye        

  • Comment on Re: Apple says sorry for Mac Perl breakage (sort @INC)

Replies are listed 'Best First'.
Re^2: Apple says sorry for Mac Perl breakage (sort @INC)
by ruzam (Curate) on Mar 25, 2009 at 15:27 UTC

    Just meditating, but to me it makes perfect sense to me that the directory search path comes in this order, especially when it comes to core. I think it follows a philosophy of 'adding on' modules, not 'enhancing existing' modules with over-rides. I think the distribution directories should contain nothing but core, tested and proven to work in harmony with the rest of the OS and attempting to upgrade them should not be taken lightly with a simple user search path over-ride. From an application point of view we're quite comfortable with over-riding just about anything in Perl, but from an OS point of view, I don't think you want that to happen (easily anyway).

    What shocks me is that the core modules that Apple broke where 'upgraded' by users because the the Apple versions were old and out of date. The finger pointing at search path order seems to have overshadowed the fact that Apple has neglected to keep it's Perl core up to date.

      You make a good point about not using the user's module updates for the system tools. However, the system tools should normally be run as a superuser account, which shouldn't normally be used for day-to-day production programming.

      Beyond that, even system-wide system-specific module upgrades shouldn't change anything for OS distro utilities that use the modules. If they're packaging perl, the Perl modules, and packaging the apps that depend upon those modules, then the packagers of those dependent apps should have no problem knowing and using the exact paths to the original versions. There's even an optional vendor_perl directory one can configure during the perl build that's just like the site_perl directory. Mandriva uses it, so why not Apple?

      I can understand the hesitation for a company that sells products based on "it just works" to bundle the latest and greatest software in their distribution all the time. I'm sure they only use things they're had time to test as units and in integration. While being on the cutting edge is great for some, when you're selling boxes to lots of people and want few support issues, you usually do stay back a few releases for stability and testing reasons.

        This is simply a result of distros (Linux, *BSD, etc.) and Operating System vendors encouraging bad practices. There should really be two installations of Perl. One for the OS/sysadmins to use and one for developers/general use.

        Elda Taluta; Sarks Sark; Ark Arks