[CentOS] Re: Mixing RPMforge and EPEL (Was: EPEL repo)

Wed Aug 1 22:30:48 UTC 2007
Timothy Selivanow <timothys at easystreet.com>

On Wed, 2007-08-01 at 16:02 -0500, Les Mikesell wrote:
> Kenneth Porter wrote:
> > --On Wednesday, August 01, 2007 5:04 PM +0200 Dag Wieers 
> > <dag at wieers.com> wrote:
> > 
> >> For the kernel there is a lot of specialized logic to
> >> make it work.
> > 
> > Another example is Fedora's alternatives system (which, for example, 
> > allows multiple versions of Java to coexist) but again that requires 
> > specialized logic.
> 
> Question: how many levels of symlinks-pointing-to-symlinks does it take 
> to get to the right place?  And having supplied this number of symlinks, 
> how can a user choose to execute one version of java while someone else 
> prefers the other?  Or how do you run one application under one version 
> and another with a different one?

There are several levels, just guessing off the top of my head, some
might go through 5 or more.  As far as choosing which one...the system
gets one configured, the one that is /usr/bin/java (you can do a
`/usr/sbin/alternatives --display java` to see what it is currently).
For using all others, you have to explicitly tell it to use a specific
java enviro.

For instance, something that you are familiar with:  in tomcat4.conf,
you can set JAVA_HOME="/usr/lib/jvm/java", and while you are installing
OpenNMS, you do a `$OPENNMS_HOME/bin/runjava -s` which grabs JAVA_HOME
from env, or `$OPENNMS_HOME/bin/runjava -S <path to JRE>` to set it
explicitly and stores it in $OPENNMS_HOME/etc/java.conf.

The point is, you need to explicitly setup the environment /each time/,
whether at command line or some other setting.  Symlinks only provide a
default.  Yes, you can do what you have been wanting this entire thread:
install things into a different directory tree so that you can have
independent version running simultaneously.  The trick is the
environment needs to be set up each time in order for it to work.

The big problem with doing it with RPM, is that there is no central
authority on who gets to put what where. Having
a /usr/local/foo-repository/package1 and
a /usr/local/bar-repository/package1 doesn't solve any of the problems
that are described.  Having customized directory structures only works
on a case-by-case and as-needed basis, as they are not trivial, and
there is really no way for a user (not admin) to be able to make those
kinds of decisions.  If you want a program compiled against different
libraries, and have a user be able to access both, best way it to have
it done in a custom fashion, building the environment using scripts if
need be.

That all said, the best way to get repo mixing is probably just
plain-old co-operation, and a bit of know-how.


-- 
Timothy Selivanow <timothys at easystreet.com>
Linux System Administrator
EasyStreet Online Services, Inc.  http://www.easystreet.com