Fedora RPM Build

From Bashlinux
Jump to: navigation, search

Structure

To build an rpm must be created and/or placed different files under /usr/src/redhat as follow:

  1. Spec file with details of name, dependencies, instructions, etc and script of how to build the rpm under SPEC folder
  2. 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:

  1. New RPM created under RPMS/system_architecture folder
  2. RPM with sources and spec file packed under SRPMS folder
  3. Unpacked sources under BUILD folder

Scripts

There are 4 types of scripts:

  1. Pre install: pre
  2. Post install: post
  3. Pre uninstall: preun
  4. 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.
Error creating thumbnail: File missing
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 front 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)