[pkg-discuss] requirement for relocatable packages?
Jordan Brown
Jordan.Brown at Sun.COM
Fri Jun 6 10:54:49 PDT 2008
I've been handed a requirement, supposedly based on IPS requirements,
that our packages be "relocatable". Unfortunately, this requirement
came to me without explanation and the people who gave it to me are only
messengers, so I don't know exactly what's meant.
<background>
In traditional Solaris packaging, there are two mostly-unrelated
concepts that could both be considered "relocation": using -R to
specify an alternate root, and changing the install location by changing
BASEDIR.
Changing BASEDIR is used to change where the software is installed on
the system, for storage management reasons, to have multiple instances
of the software installed, or for other reasons. It has a direct impact
on the software involved, because that software must be prepared to have
its components be in different places in the file hierarchy. This is, I
believe, what SVR4 packaging documentation calls "relocatable".
-R, on the other hand, is used to manipulate a different "system". It
says "manipulate that system with its root over there". It is used, for
instance, when installing the OS, where the currently running system has
its root on the install media and packages are being installed on the
file system with the root on the hard disk.
Traditional Solaris packages can be compliant with neither, either, or
both of these kinds of relocation.
</background>
Which of these meanings is intended in this requirement?
The hints that I have gotten suggest that the intent is that the
packages must be -R compliant, that they must be installable to an
alternate root. If so, this is easy: as far as I can tell, an IPS
package can't *not* be alternate root capable.
If, however, the requirement is for BASEDIR-style relocatability, my job
gets harder.
There are two important levels to BASEDIR-style relocatability:
install-time and run-time. Achieving BASEDIR-style relocatability at
install time is relatively straightforward: all of the paths in the
package must be relative to the BASEDIR, and none may be absolute.
Achieving BASEDIR-style relocatability at run time is another story
entirely, requiring that the application be prepared to dynamically find
its other components instead of assuming fixed paths for them.
I would hope that IPS handles packages that are, in this sense,
non-relocatable. Many packages will want to deliver files into fixed
system locations (e.g. /etc/rc*.d, /var/svc/manifest, et cetera).
However, if IPS isn't capable of handling non-relocatable packages, I
can relatively mechanically rearrange my packages so that they are
always relative to / and contain no absolute paths. That would address
the install-time issue with relatively little work. The run-time issue,
however, is non-negotiable: our application is not prepared to be
installed into alternate locations on the system, it would be a
substantial effort to make it able to handle alternate installation
locations, and we have no identified customer requirement to handle it.
So... please tell me that what was meant was -R compliance and that IPS
handles packages with relocatable and non-relocatable files, and that
there is no way for an IPS package to violate the -R constraint. If
that's the case, the my requirement is met and I'm happy.
Comments?
More information about the pkg-discuss
mailing list