Weblog entry #201 for simonw
Fell foul of this on one server due to having Errno installed as a local module.
The non-Debian version of Errno is created when installed to reflect the local errors your system returns to Perl. The Debian packaged version of Errno obviously knows which errors Debian returns and so omits the sanity check that the system hasn't changed underneath it.
Errno architecture (i386-linux-thread-multi-2.6.15.6) does not match executable architecture (i386-linux-thread-multi-2.6.22-3-amd64) at /usr/local/share/perl/5.8.4/Errno.pm line 11.
Our Etch server with roughly the same software installed didn't barf, because we had Errno installed from Debian packages, not from CPAN.
I didn't check if this was the only problem the upgrade caused, I just backed the changes out immediately I saw the upgrade was stopping the application working. No doubt many work-arounds exist - the most obvious being using Etch and get the packaged Errno with 5.8.8. I assume reinstalling Errno would work as well, but I was too busy getting the change revoked to test that. Probably deleting the sanity check line at the start of the local Errno works as well (if you ignore the comments about not doing that!)
- Stay within packaging system
- Keep servers up to date
- Make sure your test system is as close as possible to any live systems
I doubt I'm alone in this otherwise I wouldn't mention my failings here.
Comments on this Entry
Afterwards modules likes Net::FTP stopped working,
Since that is required by cpan ...
Anyway, just removing the custom version of Errno.pm solved the problem.
$ locate Errno.pm
/usr/lib/perl/5.8.4/Errno.pm
/usr/local/share/perl/5.8.4/Errno.pm
The one under /usr/lib/ is provided by Debian.
The one in /usr/local/ comes from cpan.
So the fix is:
mv /usr/local/share/perl/5.8.4/Errno.pm /tmp/
[ Parent | Reply to this comment ]
[ Parent | Reply to this comment ]