I often find myself trying to install (binary) packages that have dependencies to perl modules.
Because I work on varying platforms, sometimes RHEL/RedHat, CentOS, sometimes Debian based, like Ubuntu, and sometimes, less often now, but maybe I will go back again, to Gentoo. In many ways my ideal platform.
However, Perl is wicked, and the concept of perl modules in a package manager is even more crazy.
What are we going to do when we need a new version of a software (say, amavisd-new) that is not available in the distros package library?
I’m thinking, build from source and you can’t go wrong, right?
In the case of amavisd-new, these are the listed prerequisites:
Archive::Zip (Archive-Zip-x.xx) (1.14 or later, currently 1.23) Compress::Zlib (Compress-Zlib-x.xx) (1.35 or later, currently 2.008) Compress::Raw::Zlib (Compress-Raw-Zlib) (2.017 or later) Convert::TNEF (Convert-TNEF-x.xx) Convert::UUlib (Convert-UUlib-x.xxx) (1.08 or later, stick to new versions!) MIME::Base64 (MIME-Base64-x.xx) MIME::Parser (MIME-Tools-x.xxxx) (latest version from CPAN - currently 5.425) Mail::Internet (MailTools-1.58 or later have workarounds for Perl 5.8.0 bugs) Net::Server (Net-Server-x.xx) (version 0.88 finally does setuid right) Digest::MD5 (Digest-MD5-x.xx) (2.22 or later) IO::Stringy (IO-stringy-x.xxx) Time::HiRes (Time-HiRes-x.xx) (use 1.49 or later, older can cause problems) Unix::Syslog (Unix-Syslog-x.xxx) BerkeleyDB with bdb library (preferably 4.4.20 or later) Mail::DKIM (Mail-DKIM-0.31 or later)
So, if I’m going to install amavisd-new, from souce, on a RHEL6 server, what do I need to do? -Well, I’ll show what I did. Not neccessarily what is the best thing to do… OK?
yum install cpan perl -MCPAN -e shell
(going with the defaults, automatic is nice)
When I attempted to install the first module (Archive::Zip), I discovered that I did not have web access from my server, so I had to download the CPAN modules by hand. I did this by using the powerful http://search.cpan.org/ search tool, and just pasting the package name (Archive::Zip) in the search box and then downloading the tar.gz packages one at a time.
Manual installation of 1 CPAN package:
tar zxf Archive-Zip-1.31_04.tar.gz cd Archive-Zip-1.31_04 perl Makefile.PL make make test sudo make install
Had I had internet connection available:
perl -MCPAN -e 'install Archive::Zip'
The beauty of CPAN installation is that it resolves dependencies automatically.