Build rpm packages with checkinstall

From Linuxintro

This is an example how to build rpm packages using the checkinstall tool. We will a program that only outputs "hello world" and create an rpm package from it. We do this in a folder hello.

The program

Here is how we create our program, hello world:

cd
mkdir hello
cd hello
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 

Install checkinstall

Next step is to install the checkinstall tool, in this example for SUSE Linux 11.3 x64:

yast -i checkinstall

Run checkinstall

Next step is to run checkinstall:

 checkinstall 

checkinstall 1.6.2, Copyright 2002 Felipe Eduardo Sanchez Diaz Duran
           This software is released under the GNU GPL.


The package documentation directory ./doc-pak does not exist. 
Should I create a default set of package docs?  [y]: 

Preparing package documentation...OK

*** No known documentation files were found. The new package 
*** won't include a documentation directory.

Please choose the packaging method you want to use.
Slackware [S], RPM [R] or Debian [D]? R


**************************************
**** RPM package creation selected ***
**************************************

This package will be built according to these values: 

1 -  Summary: [ This is a program that prints a friendly hello world greeting. ]
2 -  Name:    [ hello ]
3 -  Version: [ 20110206 ]
4 -  Release: [ 1 ]
5 -  License: [ GPL ]
6 -  Group:   [ Applications/System ]
7 -  Architecture: [ x86_64 ]
8 -  Source location: [ hello ]
9 -  Alternate source location: [  ]
10 - Requires: [  ]
11 - Provides: [ hello ]

Enter a number to change any of them or press ENTER to continue: 

Installing with make...Installing with install...

========================= Installation results ===========================
cp hello /usr/local/bin

======================== Installation successful ==========================

Copying files to the temporary directory...OK

Stripping ELF binaries and libraries...OK

Compressing man pages...OK

Building file list...OK

Building RPM package...OK

NOTE: The package will not be installed

Erasing temporary files...OK

Deleting doc-pak directory...OK

Deleting temp dir...OK


**********************************************************************

 Done. The new package has been saved to

 /usr/src/packages/RPMS/x86_64/hello-20110206-1.x86_64.rpm
 You can install it in your system anytime using: 

      rpm -i hello-20110206-1.x86_64.rpm

**********************************************************************