Force install a module to reinstall it

[This is a midweek bonus Item since it is so short]

I recently bought the new MacBook Air, which means my solid state device has over four times the storage as my old MacBook Air. For the first time, I used Apple’s migration tool to transfer everything from the old one to the new one. It even transferred my perl installations, and I thought that would be fine. It mostly is, except for some compiled modules that cause strange, new errors. Programs don’t load correctly, modules don’t compile, and things go horribly wrong when running test suites.

      Can't load '/usr/local/perls/perl-5.10.1/lib/site_perl/5.10.1/darwin-2level/auto/Compress/Bzip2/Bzip2.bundle' for module Compress::Bzip2: dlopen(/usr/local/perls/perl-5.10.1/lib/site_perl/5.10.1/darwin-2level/auto/Compress/Bzip2/Bzip2.bundle, 1): no suitable image found.  Did find:
        /usr/local/perls/perl-5.10.1/lib/site_perl/5.10.1/darwin-2level/auto/Compress/Bzip2/Bzip2.bundle: mach-o, but wrong architecture at /usr/local/perls/perl-5.10.1/lib/5.10.1/darwin-2level/XSLoader.pm line 73.
     at /usr/local/perls/perl-5.10.1/lib/site_perl/5.10.1/darwin-2level/Compress/Bzip2.pm line 188

Perl finds the module just fine, tells XSLoader to load it, and it blows up. Apparently the two MacBook Airs are binary incompatible. No big whoop. I’ll just reinstall the module, or will I?

% cpan5.10.1 Compress::Bzip2
Compress::Bzip2 is up to date (2.09).

cpan doesn’t really care that it doesn’t work. It seems a file of the right name in the right place and decides it works. How else did it get there?

I can use cpan‘s -f switch force install the module to make cpan re-install it anyway:

% cpan5.10.1 -f Compress::Bzip2
... many lines of installation output...
  ARJAY/Compress-Bzip2-2.09.tar.gz
  /usr/bin/make install  -- OK

If I were in the CPAN.pm shell, I could use the force command to do the same thing.

And now it works, at least until I run into the next binary incompatible module.

Leave a comment

0 Comments.

Leave a Reply


[ Ctrl + Enter ]