Why are RPM's distro specific?
Michael A. Peters
mpeters at mac.com
Thu Jan 20 12:20:23 UTC 2005
On 01/19/2005 08:10:51 PM, Arthur Pemberton wrote:
> The problem of different paths seems trivial. Why can't an RPM simply
> reference $CONF_FOLDER for example, and then let the machine on which
> the rpm is unpacked tell it that $CONF_FOLDER = '/etc' ?
It does work that way with the src.rpm - if you properly define things.
There is a %configure macro which expands to
./configure --bindir=%_bindir --datadir=%_datadir etc.
Then the distribution has predefined what %_bindir and %_datadir and %
_sysconfdir expand to, etc.
So in the src.rpm you use the %configure macro, and when it builds on
the target machine - it uses those definitions.
The %files section (where the packager lists what is in the rpm) - they
would be
%_bindir/foobar
%_datadir/foobar
You have to do that at build time though in most cases because the
binary itself often needs to know where certain things are, like the
datadir and the configuration files and things like that.
So in most cases, once an rpm is built - the files need to go where the
generated makefile said they would go, and that makes it distro
specific.
While I suppose it would be possible to work around that by using
wrapper scripts that call the actual binary and tell it where things
go, since an rpm is likely to be linked against specific versions of
shared libraries, doing that wouldn't really gain you anything.
More information about the fedora-list
mailing list