[NBLUG/talk] Recompiling a RPM
    Eric Eisenhart 
    eric at nblug.org
       
    Mon Jan  8 09:20:58 PST 2007
    
    
  
On Mon, Jan 08, 2007 at 08:58:03AM -0800, Todd Cary wrote:
> I need to recompile my version of Red Hat's PHP using the 
> --with-interbase=shared,/opt/firebird.  I have downloaded the .src.rpm 
> version, however I have forgotten how to recompile the src and how to 
> replace the current version.  In fact, can that even be done?
> 
> I cannot run RPM -e php due to the dependencies..
I usually do this in a user-environment instead of as root, but here's the
basic steps:
1) rpm -ihv blah.src.rpm
2) rpmbuild -ba /usr/src/redhat/SPECS/blah.spec
The rpmbuild command-line can take some arguments to define things that are
passed to the stuff in the .spec file.  Or you can modify the .spec file
first.
I highly recommend doing the following, though:
As a non-root user:
1) mkdir ~/rpmbuild/ ; mkdir ~/rpmbuild/tmp ; mkdir ~/rpmbuild/RPMS
2) cat > ~/.rpmmacros <<EOT
%_topdir                %(echo $HOME)/rpmbuild
%_tmppath               %{_topdir}/tmp
%_builddir              %{_tmppath}
%_rpmtopdir             %{_topdir}/%{name}
%_sourcedir             %{_rpmtopdir}
%_specdir               %{_rpmtopdir}
%_rpmdir                %{_topdir}/RPMS
%_srcrpmdir             %{_topdir}/RPMS
%_rpmfilename           %%{NAME}-%%{VERSION}-%%{RELEASE}.%%{ARCH}.rpm
EOT
3) as same non-root user, "rpm -ihv somepackage.src.rpm" -- it'll install
the spec file and all its source stuff into ~/rpmbuild/packagename/.  You
can do the same "rpmbuild" command-line stuff as a non-root user from inside
that directory now.
The biggest advantage to doing the non-root thing is that some software
tries really hard to install itself into the system proper when you run some
of the build/install scripts, and when you build as a non-root user that
generates an error that you can then fix, instead of putting files on the
system that RPM doesn't know about that will cause you trouble later.
-- 
Eric Eisenhart
NBLUG Co-Founder
The North Bay Linux Users Group -- http://nblug.org/
eric at nblug.org, IRC: Freiheit at fn AIM: falschfreiheit
Jabber/XMPP/GTalk: freiheit at gmail.com
    
    
More information about the talk
mailing list