Difference between revisions of "Fedora-rpm"
From Bashlinux
Line 52: | Line 52: | ||
'''warning''' |
'''warning''' |
||
− | Be careful with the usage of each script section, please note the execution order which is crucial at upgrade time. |
+ | * Be careful with the usage of each script section, please note the execution order which is crucial at upgrade time. |
+ | * When importing specs from other distros use remove `%` in from of `make` |
||
</nowiki></pre> |
</nowiki></pre> |
||
Revision as of 23:48, 27 May 2011
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. * When importing specs from other distros use remove `%` in from of `make`
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)`