Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine
 
PerlMonks  

Re^6: Why is it in some other popular languages fewer steps and potential issues when installing libraries no testing needed and no compilation of C/C++ code done

by hermida (Scribe)
on Apr 06, 2011 at 16:20 UTC ( [id://897811]=note: print w/replies, xml ) Need Help??


in reply to Re^5: Why is it in some other popular languages fewer steps and potential issues when installing libraries no testing needed and no compilation of C/C++ code done
in thread Why are other popular languages very different from Perl when installing libraries, e.g. no testing needed and no compilation of C/C++ code done

Sorry maybe there was a misunderstanding, apologies I meant never seeing for example an application written in Perl that you download and install and during the setup it automatically fetches PAR files of all the CPAN dependencies it needs and puts these somewhere that then when I run the application it just magically knows where and how to load these.

But later in this thread it was made clear why no one would do it this way because you would need to create .par files for each supported version of Perl and for each platform for that dependency... pain in the neck :)

  • Comment on Re^6: Why is it in some other popular languages fewer steps and potential issues when installing libraries no testing needed and no compilation of C/C++ code done

Replies are listed 'Best First'.
Re^7: Why is it in some other popular languages fewer steps and potential issues when installing libraries no testing needed and no compilation of C/C++ code done
by tsee (Curate) on Apr 09, 2011 at 17:24 UTC

    Check out PAR::Repository and/or PAR::Repository::Client.

    More specifically, before discrediting PAR for what you want, you might want to read it's documentation. It contains this snippet:

    use PAR { repository => 'http://foo/bar/' }; use Module; # not locally installed!

    P::R::Client even has an auto-upgrade mode. Furthermore, for generating large sets of reusable packages, you can use PAR::Dist::FromCPAN or PAR::Dist::FromPPM.

      Whoh, whoh, whoh tsee.. I never discredited PAR in any of my posts, in fact I mentioned it as a possible solution/analog to eggs. I don't think you are reading the posts properly, you're thinking about it in the wrong way. It's not PAR at all that's the problem. I've been programming in Perl for 12 years as a bioinformatician/computational scientist in academia and the biomedical research industry where Perl has been used heavily for that entire same time and I've never seen any open-source Perl-based project/application/system/server that when you download and run the setup it automatically fetches .par files for each of its dependencies, puts them somewhere and uses them transparently when running itself (analogous to what I wrote in the OP about Python and eggs for this open-source Python server I'm using).

      If this does exist as you indeed say then it's not at all common. And that was the point I was making, not that PAR isn't a perfect solution for that, but that this style of dependency management just isn't commonly used and then if people don't see it they won't do the same when they are writing their next Perl project. So this goes back to my original question why you see eggs a lot in Python and don't see pars or anything like that a lot in Perl and many monks nicely explained in this thread as to why.

        So to sum up:

        • The technology for auto-fetching binary packages is there both via PAR and PPM.
        • PPM is widely used on Windows, not very much elsewhere.
        • PAR is not used much in this fashion in the open.

        I will go as far as saying that this is the status quo because there is not a lot of demand for binaries outside Windows. Personally, I think trusting random people with creating binaries for you in a bit of a niche isn't the brightest idea and in this case, entirely not necessary. Chances are, there'll be a foul egg somewhere.

        Instead, binary packages should be taken from your friendly OS or language binary vendor. Generally in science, this means from your Linux distribution. Anything else can easily be installed from sources using one of the many CPAN clients that automatically resolve dependencies for you.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://897811]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others surveying the Monastery: (7)
As of 2024-04-19 15:56 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found