abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 14:00 | Upozornění

    Cloudflare, tj. společnost poskytující "cloudové služby, které zajišťují bezpečnost, výkon a spolehlivost internetových aplikací", má výpadek.

    Ladislav Hagara | Komentářů: 4
    dnes 04:22 | Pozvánky

    Letos se uskuteční již 11. ročník soutěže v programování Kasiopea. Tato soutěž, (primárně) pro středoškoláky, nabízí skvělou příležitost procvičit logické myšlení a dozvědět se něco nového ze světa algoritmů – a to nejen pro zkušené programátory, ale i pro úplné začátečníky. Domácí kolo proběhne online od 22. 11. do 7. 12. 2025 a skládá se z 9 zajímavých úloh různé obtížnosti. Na výběru programovacího jazyka přitom nezáleží – úlohy jsou

    … více »
    SoutezKasiopea | Komentářů: 0
    dnes 04:11 | Nová verze

    Byla vydána nová verze 2.52.0 distribuovaného systému správy verzí Git. Přispělo 94 vývojářů, z toho 33 nových. Přehled novinek v příspěvku na blogu GitHubu a v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    včera 18:00 | Nová verze

    VKD3D-Proton byl vydán ve verzi 3.0. Jedná se fork knihovny vkd3d z projektu Wine pro Proton. Knihovna slouží pro překlad volání Direct3D 12 na Vulkan. V přehledu novinek je vypíchnuta podpora AMD FSR 4 (AMD FidelityFX Super Resolution 4).

    Ladislav Hagara | Komentářů: 0
    včera 03:11 | Nová verze

    Poštovní klient Thunderbird byl vydán v nové verzi 145.0. Podporuje DNS přes HTTPS nebo Microsoft Exchange skrze Exchange Web Services. Ukončena byla podpora 32bitového Thunderbirdu pro Linux.

    Ladislav Hagara | Komentářů: 2
    včera 02:33 | IT novinky

    U příležitosti státního svátku 17. listopadu probíhá na Steamu i GOG.com již šestý ročník Czech & Slovak Games Week aneb týdenní oslava a také slevová akce českých a slovenských počítačových her.

    Ladislav Hagara | Komentářů: 0
    16.11. 19:33 | Nová verze

    Byla vydána nová verze 9.19 z Debianu vycházející linuxové distribuce DietPi pro (nejenom) jednodeskové počítače. Přehled novinek v poznámkách k vydání. Vypíchnout lze například nový balíček BirdNET-Go, tj. AI řešení pro nepřetržité monitorování a identifikaci ptáků.

    Ladislav Hagara | Komentářů: 0
    16.11. 02:22 | Nová verze

    Byla vydána nová verze 3.38 frameworku Flutter (Wikipedie) pro vývoj mobilních, webových i desktopových aplikací a nová verze 3.10 souvisejícího programovacího jazyka Dart (Wikipedie).

    Ladislav Hagara | Komentářů: 0
    16.11. 01:33 | Nová verze

    Organizace Apache Software Foundation (ASF) vydala verzi 28 integrovaného vývojového prostředí a vývojové platformy napsané v Javě NetBeans (Wikipedie). Přehled novinek na GitHubu. Instalovat lze také ze Snapcraftu a Flathubu.

    Ladislav Hagara | Komentářů: 0
    15.11. 16:11 | Nová verze

    Byl vydán Debian 13.2, tj. druhá opravná verze Debianu 13 s kódovým názvem Trixie. Řešeny jsou především bezpečnostní problémy, ale také několik vážných chyb. Instalační média Debianu 13 lze samozřejmě nadále k instalaci používat. Po instalaci stačí systém aktualizovat.

    Ladislav Hagara | Komentářů: 0
    Jaké řešení používáte k vývoji / práci?
     (35%)
     (46%)
     (19%)
     (18%)
     (23%)
     (15%)
     (23%)
     (16%)
     (16%)
    Celkem 367 hlasů
     Komentářů: 16, poslední 12.11. 18:21
    Rozcestník

    Rukověť baliče RPM - VI (Makro %setup)

    23. 6. 2005 | David Nečas | Návody | 7132×

    Jak využívat důležité makro %setup a nastavit proměnné prostředí.

    Mocné makro %setup

    S tuctem zdrojových kódů, z nichž se pokoušíme sestavit balíček, teprve dokážeme ocenit všechny možnosti makra %setup. Začneme ale tím, co vlastně dělá normálně. To mimochodem můžeme studovat na výpisech rpmbuildu. Na začátku každé fáze vypíše řádek Executing(%něco), např.:

    Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.92023

    a následuje výpis, který vypadá úplně, jako by ho vypsal shell při set -x, protože ho vypisuje shell s set -x. Nestačí-li nám to, můžeme se do /var/tmp/rpm-tmp.92023 (číslo se mění podle čísla procesu) podívat – k tomu musíme rpmbuild násilně ukončit nebo nechat skript selhat, neboť po úspěšném dokončení se skript smaže, případně přepíše. Najdeme tam nastavení proměnných a pak:

    umask 022
    cd /home/yeti/src/RPM/BUILD
    rm -rf lobster-1.10
    /usr/bin/bzip2 -dc /home/yeti/src/RPM/SOURCES/lobster-1.10.tar.bz2 \
      | tar -xvvf -
    STATUS=$?
    if [ $STATUS -ne 0 ]; then
      exit $STATUS
    fi
    cd lobster-1.10
    [ `/usr/bin/id -u` = '0' ] && /bin/chown -Rhf root .
    [ `/usr/bin/id -u` = '0' ] && /bin/chgrp -Rhf root .
    /bin/chmod -Rf a+rX,g-w,o-w .
    

    Vidíme, že %setup zařídil, abychom pracovali ve správném adresáři, nepřekážely nám tam pozůstatky předchozích pokusů, rozbalil tarovou kouli se zdrojovým kódem a pokusil se nastavit rozumnější práva (zdrojový kód bývá občas zabalen všelijak). Chceme-li, aby něco dělal jinak či nedělal vůbec, vysvětlíme mu to jednou z mnoha voleb.

    %setup -q a klid

    Volba -q omezuje upovídanost %setupu, což znamená hlavně to, že nespouští tar -xvvf, ale jen tar -xf. Uvádím ji první, protože je-li použita, musí být první.

    %setup -n a název

    Občas se adresář, který vznikne po rozbalení zdrojového kódu, jmenuje jinak než %{name}-%{version}. To by %setup zmátlo, a tak mu správné jméno musíme sdělit volbou -n jméno_adresáře. Kdyby se kupříkladu balíček nazýval lobster, jeho zdrojový kód byl crab-1.10.tgz a obsahoval adresář crab/, napíšeme do spec souboru

    Name: lobster
    Source: ftp://ftp.example.com/pub/lobster/crab-%{version}.tar.bz2%prep
    %setup -n crab
    

    %setup -c a adresář

    Se zmršenými tarovými koulemi, které autor zabalil bez adresáře a které nám při obyčejném rozbalení zamoří aktuální adresář soubory, se vypořádáme pomocí volby -c. Přidá totiž před implicitní akci (rozbalení archivu) vytvoření adresáře a přechod do něj, tedy řádky

    /bin/mkdir -p lobster-1.10
    cd lobster-1.10

    a po rozbalení už pak adresář nemění.

    %setup -D, -T a implicitní akce

    Volba -D vypíná mazání adresáře se zdrojovým kódem, tedy řádku

    rm -rf lobster-1.10

    To se hodí, chceme-li použít %setup několikrát. Pak často potřebujeme i volbu -T, která vypíná impliticní akci, tedy rozbalení tarové koule

    /usr/bin/bzip2 -dc /home/yeti/src/RPM/SOURCES/lobster-1.10.tar.bz2 | tar -xvvf -

    %setup -a, -b a triky

    Volby -a-b rozbalují konkrétní zdrojové kódy, přičemž -b (before) rozbaluje před vstupem do adresáře a -a (after) po vstupu do adresáře. Jejich argumenty jsou čísla zdrojových souborů z hlavičky. Je to přesně tak zmatené, jak zmateně to zní.

    Příklad použití -a. Hlavní soubor lobster-1.10.tar.bz2 obsahuje poloprázdný adresář examples, kam chceme něco doplnit. Příklady máme zabaleny v examples.tar.gz (a rozbalují se pěkně do stejnojmenného adresáře). Použijeme proto -a 1, neboť chceme rozbalit Source1 po vstupu do adresáře:

    Source0: ftp://ftp.example.com/pub/lobster/%{name}-%{version}.tar.bz2
    Source1: examples.tar.gz
    …
    %prep
    %setup -a 1
    

    Příklad použití -b. Opět chceme něco doplnit do examples, ale příklady jsou v tarové kouli lobster-1.10-examples.tar.gz, která se rozbaluje do lobster-1.10/examples. Použijeme proto -b 1, neboť chceme rozbalit Source1 před vstupem do adresáře:

    Source0: ftp://ftp.example.com/pub/lobster/%{name}-%{version}.tar.bz2
    Source1: lobster-1.10-examples.tar.gz
    …
    %prep
    %setup -b 1
    

    Kdo se nebojí o své duševní zdraví, může volby různě kombinovat.

    Proměnné prostředí

    Jak to, že jednou píši o RPM_BUILD_ROOT, jindy o %buildroot, jaký je mezi nimi vztah? Zde se to vysvětlí.

    Když rpmbuild skládá skript, který realizuje některou fázi kompilace, zapíše na jeho začátek mimo jiné zhruba toto (kdo chce vědět, co tam opravdu zapíše, ať se podívá):

    RPM_SOURCE_DIR="%{_sourcedir}"
    RPM_BUILD_DIR="%{_builddir}"
    RPM_OPT_FLAGS="%{optflags}"
    RPM_ARCH="%{_arch}"
    RPM_OS="%{_os}"
    RPM_DOC_DIR="%{_docdir}"
    RPM_PACKAGE_NAME="%{name}"
    RPM_PACKAGE_VERSION="%{version}"
    RPM_PACKAGE_RELEASE="%{release}"
    RPM_BUILD_ROOT="%{buildroot}"
    

    A všechny proměnné pak exportuje. Ve spec souboru jsou tak makra i proměnné prostředí ekvivalentní. Případné pomocné skripty, které můžeme spouštět, samozřejmě makra „nevidí“, ale proměnné v nich můžeme používat.

    Nejčtenější články posledního měsíce

    Týden na ITBiz: Nová čtyřprvková polovodičová slitina slibuje pokročilejší čipy
    Týden na ITBiz: AI nyní nahrazuje především mladé a vzdělané – možná
    Týden na ITBiz: 89 % zranitelností IT infrastruktury v českých školách je kritických

    Nejkomentovanější články posledního měsíce

      všechny statistiky »

    Seriál Rukověť baliče RPM (dílů: 15)

    Rukověť baliče RPM - I (Úvod) (první díl)
    <—« Rukověť baliče RPM - V (Zdrojové soubory)
    »—> Rukověť baliče RPM - VII (Podepisování, verze)
    Rukověť baliče RPM 15 - XV (Závěr) (poslední díl)

    Související články

    Rukověť baliče RPM - I (Úvod)
    Rukověť baliče RPM - II (Prostředí)
    Rukověť baliče RPM - III (Struktura spec souboru)
    Rukověť baliče RPM - IV (Fáze balení)
    Rukověť baliče RPM - V (Zdrojové soubory)
    Rukověť baliče RPM - VII (Podepisování, verze)
    Rukověť baliče RPM - VIII (Závislosti)
    Rukověť baliče RPM - IX (Sekce %files)
    Rukověť baliče RPM - X (Skriptíky)
    Rukověť baliče RPM - XI (Architektury. systémy, platformy)
    Rukověť baliče RPM - XII (Makra, úvod)
    Rukověť baliče RPM - XIII (Makra, dokončení)
    Rukověť baliče RPM - XIV (Přizpůsobení)
    Rukověť baliče RPM 15 - XV (Závěr)
    Na co se často ptáme: Balíčkovací systémy kromě posledního odstavce o checkinstallu.
    Nebojíme se kompilace - I (Teorie)
    Nebojíme se kompilace - II (GCC, configure, make, checkinstall) kompilace a instalace software, opět kromě části o checkinstallu.
    Balíčkovací systém Mandrake Linuxu RPM na uživatelské úrovni (a pro Mandrake).

    Odkazy a zdroje

    Doporučené čtení

    Další články z této rubriky

    VDR a DVB-T2, část 2.
    VDR a DVB-T2, část 1.
    Šifrovaný Proxmox VE 6: ZFS, LUKS, systemd_boot a Dropbear
    MapTiler – proměňte obrázek v zoomovatelnou mapu
    Syncthing
           

    Hodnocení: 98 %

            špatnédobré        

    Nástroje: Tisk bez diskuse

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.