4 ms·
Many thanks to the Perl community for CPAN! Having an easy to access repository of reusable libraries has given us more power to develop cool stuff than any spe
by ceronman 12y ago
Many thanks to the Perl community for CPAN! Having an easy to access repository of reusable libraries has given us more power to develop cool stuff than any specific language features. That's why nowadays every important programming language has some sort of CPAN clone.
- peterwwillis 12y agoHopefully some day they can expand to support all the functionality added onto CPAN, like PAUSE, cpantesters, BackPAN, CPANTS, Test::*, TAP, CPANPLUS, local::lib, cpancover, cpanratings, cpanminus, Perlbrew, Carton, Pinto, minicpan, Metacpan, CPAN RT, AnnoCPAN, etc. You can go right now and find the test results of building whatever module you want on whatever perl you want on whatever platform you want, find ratings and user comments, and see general quality ratings of a module distribution's construction. The only problem I have with CPAN is its lack of a past. You can't just re-download some module from CPAN you had installed a year ago, because it got removed from CPAN and now it's on BackPAN, so now you have to cobble together some scripts to download all the correct dependencies from BackPAN, and use Perlbrew to get the right perl version + core, and use Pinto to maintain your archive of old modules for the branch/release of your application that it matches. Maybe this is a problem that every language's library repositories have, but it's annoying that there isn't a CPAN standard for "install only the dependencies of module X at the time Module X was released".
- perigrin 12y ago`cpanminus` should install from BackPAN automatically if you ask for an explicitly older version. `cpanfile` and Carton do a fairly decent (IME YMMV) job of locking versions.
- peterwwillis 12y agoIndeed, and Pinto uses cpanminus. Carton, however, does not work well with mod_perl type systems, since you have to 'carton exec' your apps. The whole thing is still a mess, though. For example, some dists never got put into CPAN at all; they were either one-off releases or were shipped in a Linux distro or a perl core at some time or another and then re-versioned for CPAN. So when you try to find the source via cpanminus, you can't, because it literally doesn't exist. So you can either upgrade or downgrade and face whatever incompatibility that means, or use perlbrew and maintain your entire perl stack for every app you ship. Unfortunately it turns out Pinto has a slew of bugs that require you skip all errors (ick). Let's face it, versioning and releases in Perl modules is a goddamn wilderness.