It can be done as normal Unix user (i.e. root access is not required) but the file /.rpmmacros needs to be in place and contain the right definitions for the topdir. In particular the topdir needs to be defined as a user subdirectory. Also, a local database directory for rpm (RPMdb) needs to be created in the user area and the .rpmmacros should contain the right definition for it.
In order to create a correct /.rpmmacros file, copy the file /usr/lib/rpm/macros in /.rpmmacros and change it to contain the right definitions for topdir and dbpath.
To populate the rpm database directory, copy the rpm files from /var/lib/rpm to the user created local RPM database directory.
Here is the procedure described step by step:
copy the source RPM that you want to install wherever you want
create the RPMdb directory + copy rpm files (mkdir /RPMdb)
create the /.rpmmacros file as described above, defining in this example the topdir to be and dbpath to be /RPMdb
create the RPM topdir structure as follows:
mkdir -p ~/rpm/redhat/SOURCES
mkdir -p ~/rpm/redhat/BUILD
mkdir -p ~/rpm/redhat/RPMS
mkdir -p ~/rpm/redhat/SRPMS
mkdir -p ~/rpm/redhat/SPECS
run rpm -ivh -dbpath /RPMdb source-rpmfile.rpm
no -prefix is required, a tar.gz file will be created in: /rpm/redhat/SOURCES