Uživatelské nástroje

Nástroje pro tento web


linux:rpm-balicky

Toto je starší verze dokumentu!


RPM balicky

Inicializace prostredi

Pro build balicku je durazne doporuceno pouzivat jineho / specialniho dedikovaneho uzivatele!

  1. Nejdrive je nutne nainstalovat potrebne zavislosti
    $ sudo dnf install gcc rpm-build rpm-devel rpmlint make python bash coreutils diffutils patch rpmdevtools
  2. Vytvorime a prepneme se na noveho uzivatele
    $ sudo useradd <user>
    $ sudo -iu <user>
  3. 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}

https://fedoraproject.org/wiki/Packaging:Systemd

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
linux/rpm-balicky.1641383507.txt.gz · Poslední úprava: 2022/01/05 11:51 autor: nost23