Skip to content

Instantly share code, notes, and snippets.

@fernandoaleman
Created November 18, 2011 16:34
Show Gist options
  • Star 15 You must be signed in to star a gist
  • Fork 13 You must be signed in to fork a gist
  • Save fernandoaleman/1376973 to your computer and use it in GitHub Desktop.
Save fernandoaleman/1376973 to your computer and use it in GitHub Desktop.
How to create an RPM from source with spec file
# How to create an RPM from source with spec file
# This is for Redhat versions of linux. Sometimes when you search for an rpm package,
# it is either outdated or not available. The only thing available is the source code.
# You can create a custom RPM package from source.
#
# For this example, I'll be using the latest version of Git, currently v.1.7.7.3
# Step: 1
# Install rpmbuild
yum install -y rpm-build
# Step: 2
# Create rpmbuild folders in your home directory
mkdir -p ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
# Step: 3
# Download the source file
#
# Source files are usually available in tar.gz or tar.bz2 format. Create a src folder
# in your home directory to store your files, download the file, uncompress it and
# move the compressed file to the rpm build SOURCES directory
mkdir -p ~/src && cd ~/src
wget http://git-core.googlecode.com/files/git-1.7.7.3.tar.gz
tar -xzvf git-1.7.7.3.tar.gz
mv git-1.7.7.3.tar.gz ~/rpmbuild/SOURCES
# Step: 4
# Locate .spec file and build rpm
#
# If you get any errors during build, it is usually because of dependencies. Simply
# install the dependencies with `yum install [dependency]` and run rpmbuild again.
cd ~/src/git-1.7.7.3 && ls | grep *.spec
rpmbuild -ba git.spec
@udondan
Copy link

udondan commented Nov 10, 2015

On newer git versions git.spec needs to be built from template:

make git.spec

@omps
Copy link

omps commented Mar 15, 2016

do you know how can i change the path from /usr/bin to /opt/git/bin?

@daniejstriata
Copy link

I'm needing to do exactly this but we're on git 2.22 now and I fail to understand how to get the git.spec file.

git-2.22.0]# make git.spec
make: *** No rule to make target `git.spec'. Stop.
or
git-2.22.0]# ll git.spec
ls: cannot access git.spec: No such file or directory

@celalsahin
Copy link

I'm needing to do exactly this but we're on git 2.22 now and I fail to understand how to get the git.spec file.

git-2.22.0]# make git.spec
make: *** No rule to make target `git.spec'. Stop.
or
git-2.22.0]# ll git.spec
ls: cannot access git.spec: No such file or directory

I have the same problem :(

@learning813
Copy link

learning813 commented Feb 4, 2021

I tried with different package and got error
install: cannot stat 'postfix_exporter': No such file or directory

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment