Difference between revisions of "Build rpm packages with checkinstall"

From Linuxintro
imported>ThorstenStaerk
imported>ThorstenStaerk
 
(2 intermediate revisions by the same user not shown)
Line 25: Line 25:
 
hello: main.c
 
hello: main.c
 
         gcc main.c -o hello
 
         gcc main.c -o hello
 +
 +
install: hello
 +
        cp hello /usr/local/bin
 
EOF
 
EOF
 
sed -i "s/        /\t/g" Makefile  
 
sed -i "s/        /\t/g" Makefile  
 +
</pre>
 +
 +
= 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:
 +
<pre>
 +
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
 +
 +
**********************************************************************
 
</pre>
 
</pre>

Latest revision as of 16:06, 6 February 2011

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

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