I've been contracted to produce RHEL, Centos and Scientific Linux
packages for Moonshot.
Moonshot requires fairly new krb5, shibboleth and other libraries,
possibly newer than are present on the system. People are nervous about
upgrading system libraries.
So, the plan was to produce packages that didn't install in /usr.
That is, in RPM speak, packages where %{_prefix} is not /usr.
As I get into the packaging I'm starting to run into all sorts of issues
with this approach.
* System facilities like mime handling for the UI and adding the UI to
the desktop menu fail because the desktop does not expect to find
entries in /opt/moonshot
* Library path handling gets messed up. For example the krb5 package
does not include rpaths, so when you move it then things may fail to
find it correctly.
* Handling of system configuration for things like krb5, openssh and
shibboleth will become highly problematic.
We'll need to either not install config files at all or accept that our
package cannot be installed along-side another package.
* Yum gets confused when you get two versions of a package installed
even if they are non-overlapping. For example having both the moonshot
krb5-libs and the Centos krb5-libs installed is problematic.
I'm also concerned about packaging implications:
* A lot of packages don't include %{_includedir} or %{_libdir} so
packages may not find dependencies installed in the same prefix
* Installing to a non-standard prefix seems to break a number of
rpmbuild facilities, such as manpage compression, and other facilities
that depend on where things are in the filesystem. This can break
otherwise good spec files.
I'm going to continue forward for the moment, I'd appreciate any input
people can give on this issue and on how much additional trouble I'll
run into.
Thanks for your comments!
|