You are viewing mmaslano

Previous Entry | Next Entry

Dynamic Software Collections

marca2009
Collections should provide new or old version of software packaged in rpm. Imagine you have for example EL-6 and you want use new features from Perl 5.14.x. Update of system Perl is not possible, because it would bring changes incompatible with other system packages. Or you have application running on Ruby 1.8.x and in Fedora 17 will be Ruby 1.9. Collections are groups of packages, which are using different paths for installation, so those packages shouldn't influence the system environment. It should be possible work with both versions. The system one is linked to application like vim or netsnmp and the collection package could be executed in his own shell and used only there.

Currently, there are prepared few repositories of Ruby and one repository of Perl for testing purposes.

As the maintainer of Perl I'll show all examples on perl 5.14.2, which is prepared for EL-6.

How does it work:
 * install scl-utils. This package will provide macros, which are needed for running software collection. The scl-utils-build package is needed only as build requirement.
 * pick a collection, in this case Perl. yum install perl514* Perl collection includes upstream tar ball, DBI, FCGI.

The installed version can be verified by:
scl enable perl514 'perl -V'

Setting SElinux rules should be easy by using same contexts on new directories:
semanage fcontext -a -e /usr /opt/rh/perl514/
restorecon -R -v /opt/rh/perl514/


If you run new session, you can use there new version only:
scl enable perl514 bash

For example execute perl -V, which shows information about your Perl. Let's look at paths specific for this collection:
    @INC:
    /opt/rh/perl514/root/usr/local/lib64/perl5
    /opt/rh/perl514/root/usr/local/share/perl5
    /opt/rh/perl514/root/usr/lib64/perl5/vendor_perl
    /opt/rh/perl514/root/usr/share/perl5/vendor_perl
    /opt/rh/perl514/root/usr/lib64/perl5
    /opt/rh/perl514/root/usr/share/perl5

    .

Ruby collection is using rails_3.0 instead of perl514 in path. They started creating their collection sooner than me, so they are using old macros. For working with their ruby stack, you need install macros and enable the repository for Fedora or EL-6.
yum install stack_rails_3.0 should install whole Ruby stack and stack enable rails_3.0 'rails -v' should verify the path.

Update: Next article should be about the functional installation of Ruby 1.9.x on EL-6.

Comments

( 1 comment — Leave a comment )
Doran L. Barton
Jun. 19th, 2012 09:22 pm (UTC)
Discussion list
Is there a discussion list for discussin SCL?
( 1 comment — Leave a comment )