Fedora-rpm
From Bashlinux
Fedora RPM Build
Structure
To build an rpm must be created and/or placed different files under `/usr/src/redhat` as follow:
- Spec file with details of name, dependencies, instructions, etc and script of how to build the rpm under `SPEC` folder
- Compressed file with the sources under `SOURCES` folder
Build
To build the new rpm, run the command:
# rpmbuild -ba SPEC/newrpm.spec
The created files will be placed as follow:
- New RPM created under `RPMS/system_architecture` folder
- RPM with sources and spec file packed under `SRPMS` folder
- Unpacked sources under `BUILD` folder
Scripts
There are 4 types of scripts:
- Pre install: pre
- Post install: post
- Pre uninstall: preun
- Post uninstall: postun
The `rpm` command has 3 main types of execution to be considered:
- install
rpm -i newrpm.rpm
- upgrade
rpm -u newrpm.rpm
- remove
rpm -e newrpm.rpm
and different values are passed to each script based on which type of execution is performed by the `rpm` command.
More details on [[1]]
#!wiki warning '''warning''' Be careful with the usage of each script section, please note the execution order which is crucial at upgrade time.
New installation
The execution order and values passed are:
- %pre NEW_PACKAGE ($1 = 1)
- %install
- %post NEW_PACKAGE ($1 = 1)
Upgrade
The execution order and values passed are:
- %pre NEW_PACKAGE ($1 = 2)
- %install
- %post NEW_PACKAGE ($1 = 2)
- %preun OLD_PACKAGE ($1 = 1)
- %files NEW_PACKAGE, Delete all files no longer listed
- %postun OLD_PACKAGE($1 = 1)
Remove
The execution order and values passed are:
- %preun OLD_PACKAGE ($1 = 0)
- %files OLD_PACKAGE, Delete all files listed
- %postun OLD_PACKAGE ($1 = 0)