Difference between revisions of "Build rpm packages with the rpmbuild command"

From Linuxintro
imported>ThorstenStaerk
imported>ThorstenStaerk
Line 73: Line 73:
 
  cp hello.tar.gz /usr/src/packages/SOURCES
 
  cp hello.tar.gz /usr/src/packages/SOURCES
 
Then, build it with the command  
 
Then, build it with the command  
  rpmbuild -ba hello.spec
+
  rpmbuild -ba hello-1.0/hello.spec
 
You will find your ready RPM under /usr/src/packages/RPMS.
 
You will find your ready RPM under /usr/src/packages/RPMS.
  

Revision as of 15:26, 13 February 2011

This article is about how to build rpm packages with the rpmbuild command and a SPEC file. The example is based on SuSE 11.3 x86_64. However, other distributions should work same or similar.

The program

Here is how we create our program, hello world:

cd
mkdir hello-1.0
cd hello-1.0
cat >main.c <<EOF
#include <stdio.h>

int main()
{
  printf("hello world");
}
EOF

The Makefile

To build our program, we need a makefile. Here is how we create it:

cat >Makefile <<EOF
all:hello

hello: main.c
        gcc main.c -o hello

install: hello
        cp hello /usr/local/bin
EOF
sed -i "s/        /\t/g" Makefile 

The SPEC file

cat >hello.spec<<EOF
Summary: hello greets the world
Name: hello
Version: 1.0
Release: 1
License: GPL
Group: Applications/Sound
Source: hello.tar.gz
URL: http://www.staerk.de/thorsten/
Distribution: SUSE Linux
Vendor: -
Packager: Thorsten Staerk

%description
hello greets the world

%prep
%setup

%build
make 

%install
make install
mkdir -p /usr/src/packages/BUILDROOT/hello-1.0-1.x86_64/usr/local/bin
cp /usr/local/bin/hello \$RPM_BUILD_ROOT/usr/local/bin/hello

%files 
%defattr(-, root, root)
"/usr/local/bin/hello"
EOF

Build the rpm

Now we have the SPEC file and the software. First we store the source in the "appropriate" place:

cd
tar cvzf hello.tar.gz hello-1.0
cp hello.tar.gz /usr/src/packages/SOURCES

Then, build it with the command

rpmbuild -ba hello-1.0/hello.spec

You will find your ready RPM under /usr/src/packages/RPMS.

Clean up

To clean up, run

rm /usr/src/packages/SOURCES/hello.tar.gz

See also

todo