I sometimes try to build an RPM from source (to patch something or try a patch). Since I do these things every now and then, I tend to forget stuff easily and it takes me a while to get back into it.
Anyway - I was trying to build lxc (example) earlier today and I wanted to patch the lxc-oracle template. So I log into my OL7 box and use yumdownloader to download the lxc source.
# yumdownloader --source lxc
Install the src rpm
# rpm -ivh lxc-1.1.5-2.0.9.el7.src.rpm
so I now have ~/rpmbuild/SPECS/lxc.spec ~/rpm/build/SOURCES/<bunch of patch files and the lxc-1.1.5.tar.gz)
Install rpmbuild (wasn't installed yet)
# yum install rpm-build
(I know - the rpm is called rpm-build but the binary is rpmbuild... odd. never figured out why in the world it couldn't just be the same - anyway)
Ok. So... my usual step is :
# rpmbuild -bp SPECS/lxc.spec
I don't want to build binaries. Just create the whole BUILD/tree with patches applied
Here is where I always waste time. There are a bunch of build dependencies that are not yet installed and in the past I would *pretty stupid of me, thinking back* just go down the list one by one doing yum install <rpm needed> until rpmbuild stops complaining.
Turns out that yum-utils includes a tool called yum-builddep! Aha.
# yum-builddep SPECS/lxc.spec
Look at that! It goes and pulls in all the build dependency packages for you.
ok, back to # rpmbuild -bp SPECS/lxc.spec
and all is happy! This is one I won't forget.