I’m in the middle of “moving” some code from server A to server B. This has to happen, because server A is old, has one power supply, isn’t being really being backed up, and (believe it or not) a number of other reasons. Since this code is from before “the great perl re-awakening” it doesn’t use perlbrew, it doesn’t use local::lib, it doesn’t use anything resembling a modern perl technique. It’s a script with a bunch of modules that it uses in a directory and I hope to god it works for you.
So, I started porting it to a slightly more modern method. Nothing crazy, simply using perlbrew and installing the dependencies in a directory tree so the thing could be deployed intelligently without having to much about with the box it ran on. I always forget hor much everything is going to fail, and I sure did in this case. One of the modules that my codebase uses is POE::Component::Jabber. This is an old module, but not ancient (it’s been updated in 2009, which isn’t *that* ancient.) So, I go to install it when:
$ cpanm POE::Component::Jabber
–> Working on POE::Component::Jabber
Fetching http://lvmirrors.lightningsource.com/CPAN/authors/id/N/NP/NPEREZ/POE-Component-Jabber-3.00.tar.gz … OK
Configuring POE-Component-Jabber-3.00 … OK
==> Found dependencies: POE::Component::PubSub
! Finding POE::Component::PubSub on mirror http://lvmirrors.lightningsource.com/CPAN failed.
! Couldn’t find module or a distribution POE::Component::PubSub
Installing the following dependencies failed:
Huh, what’s that even mean? Couldn’t finda module or distribution for that? Weird… I’m sure I can find it on CPAN, right?
Oh… I guess I can’t. Ok, so what does that even mean? I do some googling when I find it’s available on backpan. Oh, that’s good. Sadly, this means that I can’t use our automated method of installation with cpanm, and I can’t in any kind of reasonable faith work under the assumption that it’s going to work in a reliable fashion. After all, it was taken off of CPAN for a reason.
So, my little project of moving something from box A to box B just because a larger project of porting from POE::Component::Jabber to Net::Jabber and rearchitecting the way the thing works. No good deed goes unpunished, I reckon’