[rt-users] Install on CentOS, best current instructions

Jeffrey Fearn jfearn at redhat.com
Sun Aug 8 21:27:08 EDT 2010


Howard Jones wrote:
>  On 06/08/2010 19:09, Jerrad Pierce wrote:
>> Install from source, with a non-system perl.
>>
> Why non-system perl, Jerrad? I've never had a problem with it (that I 
> know of), but have I just been lucky?
> 
> My only RPM-related problem is having to reinstall a current version of 
> Sys::Syslog after every yum update (anyone know why that happens?)

You are over writing files supplied by the perl package.

$ rpm -q --whatprovides 'perl(Sys::Syslog)'
perl-5.8.8-32.el5_5.1

When the perl package gets updated, RPM compares the checksums of the 
installed files to those in the new package, detects the checksums don't 
match, and installs the files from the new package over the existing ones.

This is correct behavior and the only sane way a package manager can 
operate.

Furthermore if you run a verify over your file system errors will be 
reported since the files installed do not match the checksums from the 
RPM, so you've made your system unverifiable. Probably not a great 
tragedy, but something you should avoid unless you have a very 
persuasive argument.

It's trivial to avoid this if you use RPM. You can either roll your own 
spec file or use cpanspec to do the heavy lifting for you. I use cpanspec.

1: install the cpanspec package (on your development box eh)

2: cpanspec Sys::Syslog

3: edit perl-Sys-Syslog.spec as below

4: rpmbuild -ba  --define "_sourcedir `pwd`" --define "_builddir `pwd`" 
--define "_srcrpmdir `pwd`" --define "_rpmdir `pwd`" perl-Sys-Syslog.spec

5: install the RPM where required, or setup a yum repo

All the --defines aren't strictly required, but it forces rpmbuild to 
use the current directory and that's generally where I want the RPMs to 
end up.

### spec file edits ###

%build
# add INSTALLVENDORMAN3DIR
%{__perl} Makefile.PL INSTALLDIRS=vendor OPTIMIZE="$RPM_OPT_FLAGS" 
INSTALLVENDORMAN3DIR=/usr/local/share/man/man3

...

%files
%defattr(-,root,root,-)
%doc Changes README README.win32
%{perl_vendorarch}/auto/*
%{perl_vendorarch}/Sys*
# change man path
/usr/local/share/man/man3/*

### end spec file edits ###

Since vendor is searched before core, the new module gets found first. 
Since the files are on a different path to the ones in the perl package 
they won't get affected when perl updates.

If you are having a clash in vendor, use site instead, which is even 
earlier in the perl path.

Easy!

Cheers, Jeff.

-- 
Jeff Fearn <jfearn at redhat.com>
Software Engineer
Engineering Operations
Red Hat, Inc
Freedom ... courage ... Commitment ... ACCOUNTABILITY



More information about the rt-users mailing list