relocateable(3)

NAME
relocateable - Relocateable packages
 Relocatable packages are a way to give the user a little control over the installation location of a package. For example, a vendor may distribute their software to install in '/opt' but you'd like it to install in '/usr/opt'. If the vendor were distributing a relocatable RPM package, it would be easy.

  Building a Relocatable Package

Not all software can be 'relocatable'. Before continuing you should think about how the program works, what files it accesses, what other programs access *it* (and expect it to be in a certain place), etc. If you determine that the location of the package doesn't matter, then it can probably be built as 'relocatable'.

All you need to do to build a relocatable package is put one or more:

  Prefix: <dir>

in your spec file. The '<dir>' will usually be something like '/usr', '/usr/local', or '/opt'. Every file in your files list must start with that prefix. For example, if you have 'Prefix: /usr' and your files list contains '/etc/foo.conf', the build will fail. The fix for this is to put

  Prefix: /usr
  Prefix: /etc

into the spec file so that the /usr and /etc directories may be relocated separately when this package is installed.

  Installing Relocatable Packages

By default, RPM will install a relocatable package in the prefix directory listed in the spec file. You can override this on the RPM install command line with '--prefix <dir>'. For example, if the package in question were going to be installed in '/opt' but you don't have enough disk space there (and it is a relocatable package), you could install it '--prefix /usr/opt'.

If there is more then one Prefix you may relocate each prefix separately by using syntax like:

  rpm ... --relocate /opt=/usr/opt --relocate /etc=/usr/etc ...

If any of the Prefixs are not being relocated they can be skipped on the command line