Gebruikershulpmiddelen

Site-hulpmiddelen


werkinstructies:rpm_van_een_binary

Dit is een oude revisie van het document!


een RPM maken van een Binary en een systemd unit file

tools installeren

voor deze acties heb je de volgende tools nodig; tar, gzip, rpmbuild. Installeer die door:

sudo yum install -y rpm-build redhat-rpm-config rpmdevtools tar gzip

directory structuur voor rpmbuild voorbereiden

de rpmbuild tool verwacht een bepaalde directory structuur waarin de files voor de te bouwen rpm zich bevinden, maak deze door:

mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}

rpmbuild configuratie file voorbereiden

rpmbiuld haalt een aantal instellingen uit de file .rpmmacros leg de basis hiervoor door:

echo '%_topdir %(echo $HOME)/rpmbuild' > ~/.rpmmacros

binary en unitfile voorbereiden

files in zip file plaatsen

rpmbuild verwacht een tar.gz file met daarin de directory structuur en files zoals deze op het root filesysteem moeten worden geplaatst.

In dit voorbeeld, een simpele agent:

mkdir -p ~/appagent-1.0/usr/sbin/
mkdir -p ~/appagent-1.0/usr/lib/systemd/system/

plaats vervolgens de binary en de systemd unit file daar:

cp appagent ~/appagent-1.0/usr/sbin/
cp appagent.service ~/appagent-1.0/usr/lib/systemd/system/

zet de permissies zoals die in de eindsituatie moeten zijn:

chmod 755 ~/appagent-1.0/usr/sbin/appagent
chmod 644 ~/appagent-1.0/usr/lib/systemd/system/appagent.service

maak er een tarball van:

cd ~/
tar -zcvf appagent-1.0.tar.gz ./appagent-1.0

en plaats die in de rpmbuild filestructuur:

cp appagent-1.0.tar.gz ~/rpmbuild/SOURCES/

spec file bouwen

Van het hele proces is dit het meest ingewikkeld, documentatie hierover is vaak gemaakt voor complete compilaties of niet up to date voor de laatste versie van rpm.

maak in de directory ~/rpmbuild/SPECS de file appagent.spec aan met daarin:

# Something that need for rpm-4.1 since we have no docs
%define _missing_doc_files_terminate_build 0

Name:           appagent
Version:        1.0
Release:        1%{?dist}
Summary:        An agent for app
License:        Commercial
Source0:        appagent-1.0.tar.gz

Requires(post): info
Requires(preun): info
Requires:      systemd

%description
An agent for the app program.

%prep

%setup -q #unpack tarball

%build 

%install
cp -rfa * %{buildroot}

%files
%attr(0755, root, root) "/usr/sbin/appagent"
%attr(0644, root, root) "/usr/lib/systemd/system/appagent.service"
#/*

%post
#%systemd_post %{name}.service
%systemd_post appagent.service

%changelog
* Wed Jan 05 2022 Pietje Puk <pietje.puk@nergens.nl> 1.0.0

rpm bouwen

dir doe je simpel door:

rpmbuild -ba appagent.spec

GPG signing

Bronnen

werkinstructies/rpm_van_een_binary.1641386589.txt.gz · Laatst gewijzigd: 2022/01/05 13:43 door abel