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 13:11 | Nová verze

    Byla vydána verze 12.0 s kódovým jménem Ecne linuxové distribuce Trisquel GNU/Linux. Založena je na Ubuntu 24.04 LTS a podporována bude do roku 2029. Trisquel patří mezi svobodné distribuce doporučované Nadací pro svobodný software (FSF).

    Ladislav Hagara | Komentářů: 0
    dnes 05:33 | Nová verze

    Open-source citační manažer Zotero (Wikipedie, GitHub) byl vydán v nové major verzi 9. Přehled novinek v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 0
    včera 18:33 | Komunita

    Libre Graphics Meeting 2026, tj. čtyřdenní konference a setkání vývojářů a uživatelů svobodných a otevřených grafických softwarů, proběhne od 22. do 25. dubna v Norimberku. Dění lze sledovat na Mastodonu.

    Ladislav Hagara | Komentářů: 0
    včera 03:11 | Zajímavý software

    Vývojář Alexandre Gomes Gaigalas na GitHubu zveřejnil c89cc.sh, parser a kompilátor jazyka C89 napsaný v pouhém jediném skriptu o přibližně 8000 řádcích čistého bashe (bez dalších externích závislostí), který generuje ELF64 binárky pro x86-64. Jedná se o velmi jednoduchý kompilátor, který nepodporuje direktivy #include a dokonce ani funkci printf (lze použít puts), všechny dostupné deklarace lze nalézt v proměnné _BUILTIN_LIBC na konci skriptu. Skript je volně dostupný pod ISC licencí.

    » FIDESZ🧡! « | Komentářů: 10
    10.4. 23:33 | Nasazení Linuxu

    Francouzská vláda oznámila, že v rámci strategie 'digitální suverenity' zahájí 'přechod od systému Windows k počítačům s operačním systémem Linux' (sa sortie de Windows au profit de postes sous système d'exploitation Linux). DINUM (meziresortní ředitelství pro digitální technologie) požádalo ministerstva, aby do podzimu 2026 vypracovaly konkrétní plány nasazení Linuxu. Francie již dříve migrovala části státní správy na otevřená řešení.

    » FIDESZ🧡! « | Komentářů: 19
    10.4. 05:22 | IT novinky

    Nezisková organizace Electronic Frontier Foundation (EFF) hájící občanské svobody v digitálním světě po téměř 20 letech opouští platformu X (dříve Twitter). Na platformách Bluesky, Mastodon, LinkedIn, Instagram, TikTok, Facebook, Threads a YouTube zůstává.

    Ladislav Hagara | Komentářů: 5
    10.4. 03:33 | Nová verze

    Terminálový textový editor GNU nano byl vydán ve verzi 9.0. Vylepšuje chování horizontálního posouvání pohledu na dlouhé řádky a chování některých klávesových zkratek. Více v seznamu změn.

    |🇵🇸 | Komentářů: 0
    9.4. 19:22 | IT novinky

    Ministerstvo financí ve spolupráci s finanční správou dnes představilo beta verzi aplikace využívající umělou inteligenci pro předvyplnění daňového přiznání. Není třeba přepisovat údaje z různých potvrzení, ani hledat správné řádky, kam údaje napsat. Stačí nahrát dokumenty a využít AI.

    Ladislav Hagara | Komentářů: 8
    9.4. 18:33 | Zajímavý projekt

    Výrobce počítačových periferií Keychron zveřejnil repozitář se schématy šasi klávesnic a myší. Licence je restriktivní, zakazuje většinu komerčních užití a v podstatě jsou tak data vhodná pouze pro výukové účely, hlášení a opravy chyb, případně výrobu vlastního příslušenství.

    |🇵🇸 | Komentářů: 5
    9.4. 18:22 | Nová verze

    Správce balíčků APT, používaný v Debianu a odvozených distribucích, byl vydán ve verzi 3.2 (seznam změn). Mezi novinkami figurují nové příkazy pro práci s historií, včetně vracení transakcí.

    |🇵🇸 | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (14%)
     (8%)
     (1%)
     (12%)
     (30%)
     (3%)
     (6%)
     (2%)
     (14%)
     (24%)
    Celkem 1278 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    Rozcestník

    Rukověť baliče RPM - XIV (Přizpůsobení)

    18. 8. 2005 | David Nečas | Návody | 5276×

    Volitelná kompilace součástí, přemístitelná rpm, lokalizace.

    Volitelná kompilace součástí

    Portage má USE flagy, RPM má zase makra, a tak si můžeme USE flagy implementovat sami. Není k tomu zapotřebí žádná zvláštní podpora ze strany rpmbuildu. Mechanismus, jenž nyní popíši, se zatím nepoužívá ani příliš široce ani obzvlášť systematicky, avšak existuje.

    Ruční metoda

    Nejrpve určíme makro, řekněme %with_sandals, které má řídit kompilaci podpory libsandals do balíčků. Pak upravíme spec soubory, aby se do programů zakompilovala podpora libsandals, má-li %with_sandals hodnotu 1, a nezakompilovala, má-li hodnotu 0. To mimo jiné obnáší úpravu BuildRequires

    %if %with_sandals
    BuildRequires: libsandals-devel
    %endif

    předání správných parametrů configure

    %configure \
    %if %with_sandals
      --with-sandals \
    %else
      --without-sandals \
    %endif

    a podobné úpravy Provides či v sekci %files. Častý obrat je též vytvoření vedlejšího balíčku, jenž je celý podmíněný:

    %if %with_sandals
    %package sandals
    Summary: Supplementary sandals for lobster
    …
    
    %description sandals
    …
    %endif

    Další postup záleží na poměru naší lenosti a megalomanie.

    V nejjednodušším případě přidáme na začátek spec souboru

    # Define to 1 to enable sandals
    %define with_sandals 0
    

    a s pocitem dobře vykonané práce se půjdeme věnovat nečemu jinému, například odpočinku. Podobných spec souborů můžeme potkat spousty.

    Kdo bude ovšem chtít takové zdrojové rpm překompilovat s jinou hodnotou %with_sandals, musí upravit spec soubor. To není právě praktické. Změníme proto alespoň definiční řádek na potlačitelnou implicitní hodnotu:

    %{!?with_sandals:%define with_sandals 0}
    

    Nyní už může uživatel zapnout podporu sandálů jak jednorázově při kompilaci:

    rpmbuild --define 'with_sandals 1' -bb lobster.spec

    tak trvale definicí v ~/.rpmmacros:

    %with_sandals 1

    Moderní přístup

    Novější verze RPM, tj. alespoň 4.4, přímo podporují volby --with sandals--without sandals, jež definují makra %_with_sandals, resp. %_without_sansals, a můžeme tak jednoduše spouštět

    rpmbuild --with sandals -bb lobster.spec

    Ve skutečnosti tedy RPM nic přímo nepodporuje, uvedené dvě volby jsou jen aliasy popt pro --define, definované v /usr/lib/rpm/rpmpopt-verze, které si můžeme do staršího rpm případně doplnit sami (nebudeme ovšem měnit tento soubor, ale doplníme je do /etc/popt).

    Stále však cosi schází – volba --with sandals vytvoří makro %_with_sandals, kdežto my bychom rádi %with_sandals. A také musíme zpracovat negativní argument --without sandals. Tedy nemusíme, protože implicitní je kompilace bez sandálů, a tak můžeme v tomto případě --without sandals klidně ignorovat, ale potřebovali bychom ji zpracovat, kdyby se implicitně sandály zakompilovávaly.

    Chybějící dílek skládačky doplňují standardní makra %bcond_with%bcond_without:

    %define bcond_with()    %{expand:%%{?_with_%{1}:%%global with_%{1} 1}}
    %define bcond_without() %{expand:%%{!?_without_%{1}:%%global with_%{1} 1}}

    Porozumění definicím si necháme na dlouhé zimní večery a zaměříme se na praktické použití. Volitelnou součást balíku deklarujeme jedním z následujících způsobů:

    %bcond_with sandals
    %bcond_without sandals
    

    První přitom použijeme, má-li --with sandals zapínat implicitně vypnutou podporu sandálů; druhou pak, má-li --without sandals vypínat implicitně zapnutou podporu. V obou případech se pak řídíme existencí makra %with_sandals. Abychom to měli ještě jednodušší, byla zavedena makra %with%without (vidíme, že to jsou jen specializované varianty %defined%undefined)

    %define with()    %{expand:%%{?with_%{1}:1}%%{!?with_%{1}:0}}
    %define without() %{expand:%%{?with_%{1}:0}%%{!?with_%{1}:1}}

    s nimiž můžeme psát čitelné podmínky

    %if %{with sandals}%endif

    Jsme-li osamělí baliči, na další stupínek megalomanie už nedosáhneme. Tvoříme-li však distribuci, můžeme se pokusit udělat ve with_… makrech pořádek, aby každý balíček nepoužíval, jaká jeho autora zrovna napadla, zdokumentovat je a definovat standardní formu, jak a kam se do spec souboru píší, abychom usnadnili zjišťování, která daný spec soubor podporuje (od rpm lze stěží očekávat, že je dokáže vypsat, když o žádných %with_… nemátušení).

    Přemístitelná rpm

    Přemístitelné (relocatable) balíčky mohou být nainstalovány do jiného než implicitního adresáře (obvykle /usr) pomocí volby --prefix, případně podrobněji --relocate starý_adresář=nový_adresář. Kupříkladu

    rpm -ivh --prefix /opt/lobster lobster-1.10-1.i386.rpm

    nainstaluje lobster do /opt/lobster namísto do /usr.

    Postavíme-li si hlavu, můžeme, pravda, nainstalovat cokoli kamkoli s volbou --badreloc, ale následky padají na naši hlavu. Balíčky, jež přemístitelnost samy deklarují, by měly po instalaci do jiného adresáře i fungovat.

    Přemístitelný balíček vyrobíme přidáním položky Prefix do hlavičky. Ta jednak deklaruje, že se všechny soubory instalují do tohoto adresáře – to rpmbuild kontroluje a obsahuje-li balíček soubory i v jiných adresářích, kompilace selže. A jednak určuje, který adresář bude nahrazen hodnotou z --prefix při případném přemístění. Typická deklarace vypadá

    Prefix: %{_prefix}

    Instaluje-li se rpm i do dalších adresářů, např. /etc, ale je přitom přemístitelné (to není právě obvyklá situace), můžeme uvést několik hlaviček Prefix, pro každý adresář jednu, a při přemisťování si pak už nejspíš nevystačíme s --prefix a musíme použít --relocate. Ve starších verzích pro to existovala položka Prefixes, dnes je ale synonymní s Prefix.

    Zda nějaký program je či není možné po kompilaci pro určitý prefix přemístit, samozřejmě závisí na tom, jak hledá své komponenty a jak ho využívají další programy. Není-li přemístitelný sám od sebe, položka Prefix to sama magicky nezařídí, proto se při jejím přidávání musíme zamyslet, bude-li program po přemístění opravdu fungovat.

    Lokalizace

    Metadata balíčku lze lokalizovat, takže se pak uživateli např. při rpm -qi vypíší informace v jeho rodném jazyce. Smysluplnost tohoto kroku je zapotřebí zvážit. Jednak mají lokalizované informace tendenci rozcházet se s originálem, za druhé je kupříkladu celý zbytek výstupu rpm -qi prakticky nelokalizovatelný, neboť je to alias popt pro rpm -q --qf=… se správným formátem – frontendy k RPM toto omezení, pravda, mít nemusejí.

    Položky hlavičky lokalizujeme přidáním jména jazyka do závorky za její název:

    Summary: A poor human doctor emulator
    Summary(cs): Ubohá napodobenina lidského lékaře
    

    Lokalizovat lze tyto položky hlavičky: Summary, Group, Requires, PreReq, BuildPrereq, BuildRequires. Skupinu je ovšem nesmysl překládat ve spec souboru každého balíčku znovu (a nejlépe pokaždé jinak), a k čemu má sloužit lokalizace závislostí, netuším (balíček vyžaduje sjednocení množin závislostí uvedených pro všechny jazyky). Zbývá tedy stejně jen Summary.

    Jediná další věc, již lze přeložit, je sekce %description. Název locale pak uvádíme volbou -l:

    %description -l cs
    …

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

    Týden na ScienceMag.cz: Záhadné neutrino s rekordní energií mohlo mít původ v blazarech
    Událo se v týdnu 11/2026
    Týden na ITBiz: Nová technologie dokáže sledovat lidi podle toho, jak narušují signály Wi-Fi

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

    Jaderné noviny – přehled za únor 2026
      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 - XIII (Makra, dokončení)
    »—> Rukověť baliče RPM 15 - XV (Závěr)
    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 - VI (Makro %setup)
    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 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í: 73 %

            š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ář

    20.8.2005 22:23 Peter Rychnavsky
    Rozbalit Rozbalit vše Dík autorovi
    Dlhší čas sledujem tento seriál a veľmi mi pomohol, teda by som chcel poďakovať autorovi za peknú prácu.
    21.8.2005 22:13 kocour_easy | skóre: 4
    Rozbalit Rozbalit vše rpm error
    Dobry den, take dekuji za Vase clanky. Mam dotaz, kdyz si vytvorim spec-file a dam spustit vytvoreni daneho rpm-ka, vse probehne v poradku, ale protoze mam zle sdefinovanou polozku v sekci %files take rpm-ko se mi nevytvori. Protoze dane vytvoreni(zkompilovani) trva dlouho dobu(treba kompilace kde), neni nejake reseni, procedury %build->%install preskocit a spustit rovnou proceduru %files. Dekuji
    21.8.2005 22:56 Pavel Janousek
    Rozbalit Rozbalit vše Re: rpm error
    A co poprvnim buildu a kdyz rpmbuild zarve udelat toto:

    rpmbuild -bi --short-circuit SPEC

    tim docilime toho, ze se to cele nekompiluje (pac to uz jsme uspesne absolvovali), pouze se pokusi to instalovat do "chrootu" a pote se zkontroluji zavislosti. V podstate se da rici, ze se provede vse az do okamziku zapisu ...i386.rpm apod. Bohuzel je zamer, ze nejdou po oprave SPEC filu vytvorit RPMka primo z takoveho mezisystemu, protoze se snahou, aby vytvorene RPM soubory byly produktem deterministickeho procesu = nezmenenho SPEC souboru a musi tedy projit rpmbuild --rebuild ... nebo rpmbuild -bb SPEC.

    Presto to muze podstatne urychlit praci, nicmene se dvoji kompletni kompilaci nevyhneme (coz treba u OpenOffice, opravdu potesi:-)).

    Ja spise resim jiny problem, evidentne az novejsimu RPM systemu vadi, ze po instalaci do chrootu zustanou nejake polozky, ktere nemaji zadny obraz ve files sekcich... (a tedy nebudou do RPMkem zahrnuty). Novejsi RPM system na to upozornuje a odmita dokoncit vytvoreni RPMek, je nejaky zpusob, jak zabranit fatalnimu ukonceni? (vesmes se jedna o cosi, co sice via make install je nainstalovano, ale nikdo to nechce a tak pred %clean mi nezbyva nic jineho nez rm -f $RPM_BUILD_ROOT/soubor(y)...)
    27.1.2006 03:51 Miroslav Prýmek
    Rozbalit Rozbalit vše Re: rpm error

    Tahle vlastnost me taky pekne nastvala, zvlast kdyz to bylo po kompilaci KOffice :) Nechapu, kdo na to prisel? Warning by uplne stacil, ale ukoncit vyrobu balicku? ufff...

    Nicmene nastesti vse resi makro %_unpackaged_files_terminate_build 0

    viz http://www.rpm.org/hintskinks/unpackaged/

    18.2.2006 03:07 Espinosa | skóre: 24 | blog: Espblog | London
    Rozbalit Rozbalit vše Re: rpm error
    Presto to muze podstatne urychlit praci, nicmene se dvoji kompletni kompilaci nevyhneme (coz treba u OpenOffice, opravdu potesi:-)).

    ..no to ste mě teda nepotěšil, právě mi spadlo vytváření vlastního balíčku OpenOffice ;-) V samém závěru na jedné chybičce %files Po 20ti hodinach buildovani! Tak dám rpmbuild -bi --short-circuit a pořád hledám ty balíčky...

    Založit nové vláknoNahoru

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