Explain: Red Hat Linux RPM Relocatable and Not Relocatable Packages

last updated in Categories , , ,

Q. Can you explain CentOS / RHEL / Fedora Linux relocatable package concept?

A. RPM has the ability to give users some latitude in deciding where packages are to be installed on their systems. However, package builders must first design their packages to give users this freedom. In other words, an RPM package that can be installed into a different directory is said to be relocatable. Please note that not all RPM packages can be installed into another directory.

Task: Find out if whether a particular package is relocatable or not

Use rpm command as follows:
$ rpm -qi {package-name} | grep Relocations
$ rpm -qpi package.file.rpm | grep Relocations
$ rpm -qi bash | grep Relocations

Sample output (it means bash package can be installed in diffrent directory such as /home/chroot/users/):

Name        : bash                         Relocations: /usr

Following package is not relocatable:
$ rpm -qi keyutils-libs | grep -i Relocations
Output:

Name        : keyutils-libs                Relocations: (not relocatable)

Task: Install package into a different directory

rpm command has –prefix option. It allows to install package in diffrent directory. For example, install bash into /opt directory:
# rpm --prefix=/opt bash*.rpm

See also:

Posted by: Vivek Gite

The author is the creator of nixCraft and a seasoned sysadmin, DevOps engineer, and a trainer for the Linux operating system/Unix shell scripting. Get the latest tutorials on SysAdmin, Linux/Unix and open source topics via RSS/XML feed or weekly email newsletter.

Share this on (or read 4 comments/add one below):

4 comment

  1. Thanks for the post Vivek:)
    One question if you don’t mind. Is it possible to convert a non-relocatable rpm to a relocatable one?

    I was able to install a non-relocatable package to a non-standard location with rpm. The details are provided below,
    —————————————————————————–
    [root@mail2 ~]# rpm –prefix=/mail/mysql -i mysql-server-5.0.77-4.el5_6.6.x86_64.rpm
    error: package mysql-server is not relocatable
    [root@mail2 ~]# rpm –relocate /=/mail/mysql/ –badreloc -ivh mysql-server-5.0.77-4.el5_6.6.x86_64.rpm
    Preparing… ########################################### [100%]
    1:mysql-server ########################################### [100%]
    error reading information on service mysqld: No such file or directory
    /bin/chmod: cannot access `/var/lib/mysql’: No such file or directory
    [root@mail2 ~]# echo $?
    0
    [root@mail2 ~]#
    —————————————————————————–

    Do you think there is any possible issues with the above procedure?

    Have a question? Post it on our forum!