Never tried to do something like this myself but afaik rpm packages (atleast properly packages ones) do support relocation. But in order to install packages without root access, there are some steps required.
Following is lifted from linuxquestions.org:
Setup a private RPM database
mkdir -p /home/username/local/lib/rpm
rpm --initdb --root /home/username/local --dbpath /home/username/local/lib/rpm
If you do not like ~/local/lib/rpm, you can pick a different subdirectory structure.
Check for package dependancies
rpm -ivh package.rpm
If dependancies are found, install the dependant RPMs before installing the package RPM.
Finally install the package
rpm --root /home/username/local --dbpath /home/username/local/lib/rpm \
--relocate /usr=/home/username/local --nodeps -ivh package.rpm
To use the package you will have to play around with LD_LIBRARY_PATH to let the
loader know where the required shared labraries are and modify your PATH to
include any required scripts and executables.