Toto je starší verze dokumentu!
Obsah
RPM balicky
Inicializace prostredi
Pro build balicku je durazne doporuceno pouzivat jineho / specialniho dedikovaneho uzivatele!
- Nejdrive je nutne nainstalovat potrebne zavislosti
$ sudo dnf install gcc rpm-build rpm-devel rpmlint make python bash coreutils diffutils patch rpmdevtools
- Vytvorime a prepneme se na noveho uzivatele
$ sudo useradd <user> $ sudo -iu <user>
- Pote vytvorime adresare a nastavime promenne pro vybraneho uzivatele
$ rpmdev-setuptree
Novy *.spec
$ rpmdev-newspec [<jmeno projektu>]
$ ll /etc/rpmdevtools/
Vypise dostupne sablony, jde o soubory spectemplate-<jmeno>.spec. Zadave se pouze jmeno sablony.
Overeni / Linting
$ rpmlint <*.spec>|<*.rpm>|<*.src.rpm>
a seznam nejcastejsich chyb zde: https://fedoraproject.org/wiki/Common_Rpmlint_issues
Build balicku
$ rpmbuild [-ba|-bb|-bs] <spec file>
Spec file se zadava pouze jako jmeno bez plne cesty. Ke jmenu se predradi cesta k RPM build root - ~/rpmbuild/SPECS/, vytvorena pomoci rpmdev-setuptree
Zvysovani verze balicku
$ rpmdev-bumpspec -c "blah blah" <*.spec>
Tips
Vsechna preddefinovana makra
$ less /usr/lib/rpm/macros
Potlaceni debug balicku
Mozne / nutne pouze v pripade pouziti maker %make_*.
Na vrch spec souboru pridame:
%global debug_package %{nil}
SystemD
Systemd units nepatri do /etc/, proto pouzijeme ve spec file v ceste promenou %{_unitdir}. Aby tato promena byla definovana, je nutne take uvest BuildRequires: systemd
BuildRequires: systemd
...
%{_unitdir}/<service>.d/override.conf
Ke zjisteni cesty na aktualnim systemu, lze pouzit prikaz rpm:
$ rpm -E %{_unitdir}
Rebuild *.src.rpm
$ rpmbuild --rebuild <source-rpm> $ rpmbuild --rebuild *.src.rpm
%files nastaveni opravneni / vlastnika
%files %defattr(-,root,root) %doc %attr(0644,-,-) CREDITS %doc NEWS