|Think about Loose Coupling|
Application Distribution (modules, cpan, etc)by jettero (Monsignor)
|on Feb 17, 2007 at 22:18 UTC||Need Help??|
jettero has asked for the
wisdom of the Perl Monks concerning the following question:
What do you do for application distribution?
I wrote a semi-fancy gizmo that uses Convert::ASN1 to decode ASN.1 documents into a special proprietary format that our billing system can read. It's a pretty slick little app, but it has been unfortunately and prohibitively difficult to distribute to the different telcos we work with.
I was using PAR so I could distribute a single file — and simply failed to mention how complicated the distribution really was. I ran into terrible trouble trying to run it with Wx when I had run the PAR pp.pl on an XP machine and tried the resulting .exe on NT, but it technically functioned other than that.
Right up until I hit a strange bug in PAR. Well, I think it was a bug. Certain data in the input TAP files was casuing my application to crash terribly, but only when it was PAR packed. I never did track it down, but Mr. Tang was willing to believe it might be a bug at the time.
In the end I kinda gave up on PAR, despite enjoying how well it normally works; and I now have to log into the different servers, install activeperl, and use ppm to install the whole world (so to speak). It takes quite a while to do, but it's worth it because the app is slick.
Similarly, we have dozens of servers running gentoo. Gentoo would be a particularly poor choice for servers if it wasn't for build hosts. You can build everything just the way you like it in one place and push all the packages out over NFS or even FTP ...
The huge array of perl modules I like are a problem under Gentoo though. Their perl module tree is hopelessly out of date (because it's 10,000 files and 10,000 maintainers), so I hand-crafted an ebuild (named dev-perl/jets-favorites) that stuffs all my favorite modules into a single portage package that I can distribute from my build host. It works pretty well, but it'd be a maintenence nightmare if I wasn't such a die-hard perl nerd.
Non Perl people tend to not like (or even sometimes dread) the CPAN shell. They tend to stick with a raw Perl install, or whatever hopelessly out of date modules come with their OS of choice. The active state PPM installer is really nice — iff you can find a repo or two that you like.
But no matter how you look at it, if you write something using tons of the latest modules from CPAN, you can't reasonably distribute it to average Joe computer users. They're either not capable or not willing to fart around with CPAN or PPM for an hour to get your little program working. (Sometimes it seems they consider clicking [next>>] a hardship.)
Is there some solution for this? or is PAR the only answer for now? How do you handle this problem? Do you even consider it a problem?