This document details how to create a package on Linux. Only the creation
of a simple package is detailed in this doc. For more elaborate packages,
see the relevant man pages.
The following assumptions are being made regarding the package build
described herein:
- the program, etc, has already been installed on the host
the package is to be built upon
- program version is 4.17 (for illustrative purposes)
- for simplicity, the program, yourProg, and its relevant files
are installed under /usr/local
- you have root on the host (hostA) that the package is going
to be created on
- hostA's root shell prompt is:
hostA [0]
After yourProg has been installed, an rpm spec file needs to be created.
The spec file basically drives the install of the entire package.
Change directory to /tmp and create a spec file (/tmp/yourProg-spec)
similar to that below:
Name: yourProg
Version: 4.17
Release: 1
License: GPL
Group: Applications/System
Vendor: Systems Engineering
URL: http://some.site.tld/download/yourProg-4.17.tar.gz
Source: http://origin.site.tld/files/yourProg/yourProg-4.17.tar.gz
Summary: yourProg - some single line description of yourProg.
%description
some description of yourProg, allows multiple lines; built on
Linux Distro 5 (linux 2.6.18) x86 from source
%files
/usr/local/bin/yourProg
/usr/local/etc/yourProg.conf
/usr/local/share/doc/yourProg-4.17/AUTHORS
/usr/local/share/doc/yourProg-4.17/ChangeLog
/usr/local/share/doc/yourProg-4.17/COPYING
/usr/local/share/doc/yourProg-4.17/yourProg.conf
/usr/local/share/doc/yourProg-4.17/yourProg.details
/usr/local/share/doc/yourProg-4.17/README
Once the spec file has been written, rpmbuild can be used to create the
actual package:
hostA [0] pwd
/tmp
hostA [0] ls -l yourProg-spec
-rw-r--r-- 1 root root 841 Jul 22 13:36 yourProg-spec
hostA [0] /usr/bin/rpmbuild -bb yourProg-spec
Processing files: yourProg-4.17-1
Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
Requires: libc.so.6 libc.so.6(GLIBC_2.0) libc.so.6(GLIBC_2.1) libc.so.6(GLIBC_2.3) rtld(GNU_HASH)
Checking for unpackaged file(s): /usr/lib/rpm/check-files %{buildroot}
Wrote: /usr/src/redhat/RPMS/i386/yourProg-4.17-1.i386.rpm
hostA [0] ls -l /tmp /usr/src/redhat/RPMS/i386
/tmp:
-rw-r--r-- 1 root root 841 Jul 22 13:36 yourProg-spec
/usr/src/redhat/RPMS/i386:
-rw-r--r-- 1 root root 74403 Jul 22 13:39 yourProg-4.17-1.i386.rpm
Since a working package has now been created, you can install it via rpm:
hostA [0] /bin/rpm -iv /usr/src/redhat/RPMS/i386/yourProg-4.17-1.i386.rpm
For further references, please see the following:
rpmbuild(8) rpm(8)
http://www.rpm.org