Actually the system is functioning - there are workarounds for everything I mention. But it shouldn't annoy the living Shub-Internet out of me, either.
First, accolades. The manual configuration has improved greatly from the last time I looked at it. It doesn't ask questions anymore that only an insider can answer, and it's short and finished in three minutes tops. Also, now there exists a very decent system to pick CPAN mirrors.
I'm interested in doing a hands-off approach in installing modules, fire and forget if you will. CPAN is a package manager, so it should be possible. prerequisites follow is a good start, but have a look at where I had to babysit installations recently:
Term::ReadLine
Enter arithmetic or Perl expression: exit
YAML
*** WARNING *** This release breaks compatibility with versions earlier than version 0 +.60 of YAML::Syck and YAML.pm when serializing blessed references. See the COMPATIBILITY file for more information. Continue installing YAML.pm? [y]
Note: those two following are although I have set prerequisites follow!
Best
- Test::Exception ...missing. ==> Auto-install the 1 mandatory module(s) from CPAN? [y]
Method::Alias
==> ExtUtils::AutoInstall 0.49 required. Install it from CPAN? [Y/n]
ExtUtils::AutoInstall (twice) and Module::Signature
==> Auto-install the 1 optional module(s) from CPAN? [n]
Petal::Utils, Pod::Coverage, probably others
This module requires Module::Build to install itself. Install Module::Build now from CPAN? [y]
I happily confirmed that last question and got 15 minutes of my life stolen. Module::Build namely by default configures, builds and installs itself without C support, which is necessary if you want to install XS modules with it later. And who does not? Anyway, M::B barfed chunky bits all over me, and I had to chase its dependencies and then install it again.
There's no mechanism to follow dependencies for optional packages and packages used in testing. I am interested in having good testing, so when I notice that tests are skipped because some modules (e.g. Test::Pod::Coverage, Test::Pod, Expect) are not installed, I must SIGINT like a madman. So after satisfying these dependencies first, and then attempting to build again, this happens:
ormake: *** [test_dynamic] Error 255 /usr/bin/make test -- NOT OK Running make install make test had returned bad status, won't install without force
Make had some problems, maybe interrupted? Won't test Running make install Make had some problems, maybe interrupted? Won't install Running make for ... Is already unwrapped into directory ... Has already been processed within this session
I can only fix that by quitting the shell and starting again.
In case I don't catch a testing dependency quickly enough, those tests are skipped and the module installs without further ado. I can later repeat the test with test Foo::Bar, which then reveals brokenness. Now of course the module is already installed.
Luckily, I've never encountered this situation. But what am I supposed to do if?
There's no uninstall offered from the shell. Workaround is mentioned in the CPAN FAQ, but you have to know first that it's not called uninstall, or delete, or purge, but remove.
This crypto signing business is beyond the nerve of mere mortals.
WARNING: This key is not certified with a trusted signature! Primary key fingerprint: 50A0 ED26 8AA2 95BD 2CA0 411E EC80 39F0 A317 + C15D CPAN.pm: Going to build A/AN/ANDK/CPAN-1.87.tar.gz Importing PAUSE public key into your GnuPG keychain... done! (You may wish to trust it locally with 'gpg --lsign-key 450F89EC')
Did you notice the red herring? 50A0... is actually the fingerprint of a totally different key, 0xA317C15D, so signing the PAUSE key has no effect, but I'm never going to find out because the key servers allow me to search keys by name, ID or hash, but not by fingerprint.
There's too much crap on the screen. That's partially the fault of GNU make, I guess. I want a setting for verbosity (and a pony), with the default to show warnings and more severe only.
My rant actually had three more items on the list initially, but reading through the scrollback of my CPAN sessions carefully, I could fix those problems myself or it turned out they weren't in the first place. It would have been easier on my blood pressure with less cruft to wade through.
Last and least, that goddamn install package. If you have this oscure module installed, you fell victim to it, too. How did you get it?
sudo cpan install Foo::Bar must actually be sudo cpan Foo::Bar.
You tell me now where I'm wrong.
|
|---|