ABOUT CPAN+changelog.pl ======================= Date: 2006/03/28 - AUDIENCE If you are administrator for a Perl installation and you use CPAN for updating Perl modules, then this software provides some assistance to you. - WHAT IS IT? It is a wrapper for some of the CPAN modules' functions, namely "r" (upgrade recommendations), "shell" and "install". These functions are enriched with ChangeLog and BuildLog functionality. A new "history" function allows you to look up when a modules' version has changed. This aims at making module installation/upgrades more transparent (ChangeLog) and easier to analyse in retrospect (BuildLog). "r": for every upgradeable module the corresponding ChangeLog entries are shown. This makes for an interesting read and helps you in deciding how urgent an upgrade for that module is. "install": provides a BuildLog for all of the output produced during install. Additionally, it creates an installation snapshot by calling "autobundle" after a successful install. Those snapshots help you to recreate the same module environment on another installation. Also, the "history" function uses them. A warning is issued if a modules' version number has not changed during upgrade, indicating a build problem. "shell": invokes the CPAN shell (CPAN::shell), while providing a BuildLog of all output during the session. Upon exit, when there are changes in the installed modules, the ChangeLog database is updated and autobundle is called, similar to the non-interactive "install" mode. "history": looks for Snapshots and BuildLogs indicating that a module has been installed or where the install has failed - WHY SHOULD I USE IT? ChangeLogs can help you to find out when to -avoid unnecessary work The ChangeLogs may tell you that the changes are not relevant to your installation, e.g. only for a specific OS you don't use or only add new functions you do not need, you might as well let your productive environment continue to run smoothly. -rush into action e.g. if it says SECURITY UPDATE BuildLogs can help you to -use your precious time for other tasks while "install" is running You don't lose anything by not watching the build process "live" because you can look through the BuildLog later. Some modules may require keyboard input during install, though (e.g. CPAN, Mail::SpamAssassin). -reconstruct the history of a module You can see what answers were given to a modules' install questions, whether it had any build or test issues, even years after the fact. -choose the right distribution file for downgrading Someone reports problems with the Foo module you have upgraded 4 times last month. Looks like you need do downgrade. But what version of the Foo module was installed before problems started? For downgrading you need to know its distribution file name, and the "history" function helps you find it. - WHAT IT'S NOT -Prettiest code in the world This code will not stand up in a beauty contest. Tant pis. It's not intentionally ugly or obfuscated, but at least it is inconsistent style-wise. Comments are in some places, not in others. Indentation is not in C-style. But even though it might not appeal to your senses you can still put it to good use (hopefully). - The ultimate fully automatic and trouble-free CPAN updater(TM) CPAN and the CPAN module is nice and easy to use (after a while :-) But it's got a few deficiencies that are not completely remedied with this software. Here are two of them: -missing index of module versions to distribution files Most of the time you will just be installing the most recent version and you do not need to worry. But if you want to revert to an older version of a module you have to know the distribution file to install. This software may provide help in guessing the file from BuildLog and Snapshot information, but having an authoritative list would be way better -after successful update, Perl may still use the old version of the module This happens when the CPAN version installs into a directory different from the previous version. Only if you delete the old version the new version will become visible to Perl, and manually deleting files in a production system is a dangerous thing to do. Examples: XSLoader, DBD::File This software gives you a WARN if a modules version has not changed in spite of having called "-install" for it. But that does not help with modules that CPAN has tried to install automatically to resolve dependencies.