Dit is een oude revisie van het document!
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
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}
rpmbiuld haalt een aantal instellingen uit de file .rpmmacros leg de basis hiervoor door:
echo '%_topdir %(echo $HOME)/rpmbuild' > ~/.rpmmacros
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/
maak in de directory ~/rpmbuild/SPECS de file appagent.spec aan met daarin:
# Something that need for rpm-4.1
%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
dir doe je simpel door:
rpmbuild -ba appagent.spec