Allow normal users to compile source RPMs without root permissions

Simply copy this into /.rpmmacros

%packager Your <email> %distribution Personal custom flag %vendor You %_signature gpg %_gpg_path /.gnupg %_gpg_name your gpg name %_gpgbin /usr/bin/gpg

%_topdir /home/user/redhat %_tmppath /var/tmp/rpm

%_rpmtopdir %{_topdir} %_builddir %{_topdir}/BUILD %_rpmdir %{_rpmtopdir}/RPMS %_sourcedir %{_rpmtopdir}/SOURCES %_specdir %{_rpmtopdir}/SPECS %_srcrpmdir %{_rpmtopdir}/SRPMS

If you don't want to sign the packages you can comment out/delete the lines from %_signature to %_gpgbin. You can also change %_topdir to your liking.

You will need to recreate the directory tree to compile into
mkdir BUILD RPMS SOURCES SPECS SRPMS cd RPMS; mkdir athlon i386 i486 i586 i686 noarch
Now you can run
rpmbuild --rebuild <package name>

as a normal user and install the package(s) that will be in redhat/RPMS/arch

Fixing RPM if it hangs whenever you run it, regardless of action attempted

RPM databases can get corrupted, or locks can get stuck forever.

  1. rm -f /var/lib/rpm/__db* ; rpm --rebuilddb

Be sure to kill all running instances of RPM before doing this. rpm --rebuilddb may take a while. Afterwards you should be set.