Het maken van een RPM package

By | 10 juli 2012

Het maken van een RPM package

vooraf

Er zijn allerlei goede redenen te verzinnen waarom een applicatie o.i.d. in plaats vanaf source te complileren en te installeren de installatie te doen via het packagemanagement systeem.

  • van alle geinstalleerde software is bekend welke versie geinstalleerd is
  • eventuele afhankelijkheden van andere software wordt inzichtelijk
  • mogelijkheid tot rollback indien na een update een applicatie o.i.d. niet of niet goed functioneert
  • sommige support contracten vereisen het gebruik van package-management

Een RPM package wordt bij voorkeur niet gemaakt indien met ingelogd is als root maar als gewone gebruiker

Voordat een RPM gemaakt kan worden zijn een aantal eenmalige stappen nodig:

  1. de rpm-build software
  2. de ontwikkelingomgeving
  3. een rpm-build directory structuur
  4. een GPG key

1. de rpm-build software

Het installeren van de rpm-build software is eenvoudig: yum install rpm-build

2. de ontwikkelomgeving

Afhankelijk van welke ontwikkelomgeving er nodig is om van de broncode (source) een executable te maken zijn onder andere de volgende pakketten nodig: gcc, make, automake, cpp enz. Raadpleeg hiervoor de documentatie van het desbetreffende programma om te zien wat er evt. nog meer nodig is.

3. een rpm-build directory structuur

Zoals al eerder aangegeven is het raadzaam om als gewone gebruiker en niet als root RPM’s te maken. Hiervoor is een rpm-build directory structuur nodig zoals volgt:

~/rpmbuild/BUILD
~/rpmbuild/SOURCES
~/rpmbuild/SRPMS
~/rpmbuild/RPMS
~/rpmbuild/SPECS

Zodra deze directory structuur is aangemaakt wordt deze in de configuratie van rpm-build aangegeven. Dit gebeurd in ~/.rpmmacros met behulp van de topdir parameter:

%_topdir /home/peter/rpmbuild

In dit voorbeeld staat de rpm directory structuur dus in de homedirectory van de user peter.

4. de GPG key

Om RPM’s te kunnen distruburern worden deze gesigned, voorzien van een digitale handtekening, zodat de RPMS’s als betrouwbaar kunenn worden gezien. Op het systeem waarop ze geinstellaard worden, wordt de publieke GPG sleutel (public key) geimporteerd en daardoor worden RPM’s die voorzien van een handtekening probleemloos geinstalleerd.

Aanmaken van een GPG sleutelpaar (keypair):

gpg --gen-key

Kies voor de standaardoptie (1) DSA and Elgmal, kies 1024 als grootte en kies (0) om een GPG sleutelpaar aan te maken wat niet verloopt. Vul de rest van de vragen in en wacht totdat het sleutelpaar is aangemaakt.

Bekijk het aangemaakte sleutelpaar door:

gpg --list-keys --fingerprint

Exporteer nu de publieke sleutel door in (dit voorbeeld naar het bestand gpg-public-key):

ggp --export -a {UID veld} > gpg-public-key

De aangemaakte GPG sleutel dient nog te worden toegevoegd aan het configuratiebestand ~/.rpmmacros van rpm-build:

%_gpg_name {UID veld}