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>
COPR deploy
https://copr.fedorainfracloud.org
- copr-build.sh
#!/bin/bash # # Used to upload packages to COPR [ and that triggers build ] # set -eu LOCAL_BUILD="" function log { echo "BUILD.SH | $(date +"%Y/%m/%d %H:%M:%S") | $@" } function help { echo "" echo "Usage: ./build.sh [-h] [-l]" echo "" echo "Options:" echo "-h show help" echo "-l builds localy" } while getopts ":hl" opt; do case ${opt} in h ) # process option h help exit 0 ;; l ) # process option l LOCAL_BUILD="1" ;; \? ) echo "Unknown option: $OPTARG" 1>&2 help exit 1 ;; esac done # exit when uncommited changes are present if ! git diff-index --quiet HEAD --; then log "Uncomitted changes detected. Aborting..." 1>&2 exit 1 fi # run linter on spec log "Running linter..." rpkg lint if [ -n "$LOCAL_BUILD" ]; then log "Trying to build locally..." rpkg compile else log "Tagging release..." rpkg tag log "Building in COPR..." #copr-cli build opentyrian "$PACKAGE" rpkg build -w nost23/opentyrian fi # vim: set ff=unix expandtab ts=4:
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