Doug Koobs wrote:
I recently upgraded my installation of Perl from 5.8.0 (in /usr/lib/perl5) to 5.8.6 (in /usr/local/lib/perl5) using CPAN. I didn't catch the difference in location when I installed... Now, when I try to run the command "cyradm --user cyrus --auth login localhost" I got the error:
******************************************************
Can't locate Cyrus/IMAP/Shell.pm in @INC (@INC contains:
/usr/local/lib/perl5/5.8.6/i686-linux /usr/local/lib/perl5/5.8.6
/usr/local/lib/perl5/site_perl/5.8.6/i686-linux
/usr/local/lib/perl5/site_perl/5.8.6 /usr/local/lib/perl5/site_perl .).
BEGIN failed--compilation aborted
In my oppinion, the best way to avoid or at least minimize this kind of hassle, is to configure Cyrus build process to place Perl modules some place tied to the Cyrus version, rather than Perl version.
I build my own packages on Tru64 UNIX and I follow old DEC's philosphy of package layout. All package files are under /usr/opt/Cyrus-IMAP4-${VERSION}, all runtame changable files (mailboxes, config, ...) are unde /var/opt/Cyrus-IMAP4-${VERSION} and /opt/Cyrus-IMAP4-${VERSION} holds startup scripts. Installation routines make needed symbolic links.
This setup enables me to instruct Cyrus-Perl to use /usr/opt/Cyrus-IMAP4-${VERSION} as installation prefix, so all Perl files are in /usr/opt/Cyrus-IMAP4-${VERSION}/lib. The only thing I need to do after the initial, pre-package, install is to add the "-I..." to cyradm script.
I'm not sure how this idea would be implemented in Linux environment, but it is a good way to deal with this problem. For what it's worth, it works for me on Tru64.
Nix. --- Cyrus Home Page: http://asg.web.cmu.edu/cyrus Cyrus Wiki/FAQ: http://cyruswiki.andrew.cmu.edu List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html