Obě strany předchozí revizePředchozí verzeNásledující verze | Předchozí verzePoslední revizeObě strany příští revize |
system:prikazovy_radek:tvorba_rpm [2012/09/22 19:46] – honem, honem chlas*at a zapomenu %% - neformátovat text yullaw | system:prikazovy_radek:tvorba_rpm [2014/10/25 13:14] – upraveno mimo DokuWiki 127.0.0.1 |
---|
</WRAP> | </WRAP> |
| |
===== Předmluva ===== | ====== Předmluva ====== |
V tomto dokumentu se předpokládá, že čtenář se umí v linuxu orientovat. Zná základní příkazy, adresářovou strukturu a má zvládnutou přinejmenším instalaci rpm balíčků. | V tomto dokumentu se předpokládá, že čtenář se umí v linuxu orientovat. Zná základní příkazy, adresářovou strukturu a má zvládnutou přinejmenším instalaci rpm balíčků. |
| |
* Druhý typ souboru (''*.<architektura>.rpm'') obsahuje binární kompilační program a všechny soubory (dokumentace, konfigurační soubory, ikony,...), které budou instalovány na cílový systém. Také obsahuje proceduru, které zajistí uloženi souborů na správná místa a akce, které se musí vykonat, aby byl program funkční. | * Druhý typ souboru (''*.<architektura>.rpm'') obsahuje binární kompilační program a všechny soubory (dokumentace, konfigurační soubory, ikony,...), které budou instalovány na cílový systém. Také obsahuje proceduru, které zajistí uloženi souborů na správná místa a akce, které se musí vykonat, aby byl program funkční. |
| |
===== Instalace software ===== | ====== Instalace software ====== |
==== Základy ==== | ===== Základy ===== |
Původně byl program ''rpm'' navržen pro práci v [[http://www.redhat.com/|Red Hat Linux]], ale pracuje i v dalších distribucích založených na ''rpm'': [[http://www.mageia.org|Mageia]], [[http://www.mandrivalinux.com/|Mandriva Linux]], [[http://www.suse.com/index_us.html|Suse]] atd.; ''rpm'' je již na těchto systémech nainstalován. | Původně byl program ''rpm'' navržen pro práci v [[http://www.redhat.com/|Red Hat Linux]], ale pracuje i v dalších distribucích založených na ''rpm'': [[http://www.mageia.org|Mageia]], [[http://www.mandrivalinux.com/|Mandriva Linux]], [[http://www.suse.com/index_us.html|Suse]] atd.; ''rpm'' je již na těchto systémech nainstalován. |
| |
Budete-li binární ''rpm'' budete sestavovat pro Mageiu, nemusí správně fungovat v dalších distribucích, přestože Mageia dělá maximum pro kompatibilitu s Red Hat. | Budete-li binární ''rpm'' budete sestavovat pro Mageiu, nemusí správně fungovat v dalších distribucích, přestože Mageia dělá maximum pro kompatibilitu s Red Hat. |
| |
==== Sestavení pro Mageiu ==== | ===== Sestavení pro Mageiu ===== |
Tvorba balíčků pro Cauldron (tedy vývojovou verzi Mageii) je vždy náchylná k malým záplatám a vylepšením používaného programu ''rpm''. Měli byste nainstalovat následující balíčky: | Tvorba balíčků pro Cauldron (tedy vývojovou verzi Mageii) je vždy náchylná k malým záplatám a vylepšením používaného programu ''rpm''. Měli byste nainstalovat následující balíčky: |
* balíček ''rpm'' od Red Hatu s našimi záplatami | * balíček ''rpm'' od Red Hatu s našimi záplatami |
* balíček ''rpmlint'' zajišťující kontrolu platnosti vygenerovaného ''src.rpm'' souboru | * balíček ''rpmlint'' zajišťující kontrolu platnosti vygenerovaného ''src.rpm'' souboru |
| |
===== Přípravné úkoly ===== | ====== Přípravné úkoly ====== |
==== Instalace nezbytných balíčků ==== | ===== Instalace nezbytných balíčků ===== |
Pro tvorbu rpm balíčků musíte mít nainstalovánu příslušnou sadu programů. Pro pokyny k instalaci viz [[http://wiki.mandriva.com/en/Docs/Basic_tasks/Installing_and_removing_software|Installing and removing software]] (nebo návody na [[http://www.mandrivalinux.cz/modules/dokuwiki/doku.php?id=instalace-software|této wiki]]). | Pro tvorbu rpm balíčků musíte mít nainstalovánu příslušnou sadu programů. Pro pokyny k instalaci viz [[http://wiki.mandriva.com/en/Docs/Basic_tasks/Installing_and_removing_software|Installing and removing software]] (nebo návody na [[http://www.mandrivalinux.cz/modules/dokuwiki/doku.php?id=instalace-software|této wiki]]). |
==== Vytvoření požadovaných složek ==== | ===== Vytvoření požadovaných složek ===== |
K sestavování balíčků potřebuje program rpm speciální adresářový strom ve vašem domovském adresáři. Tento strom může být vytvořen následujícím příkazem (na jednom řádku): | K sestavování balíčků potřebuje program rpm speciální adresářový strom ve vašem domovském adresáři. Tento strom může být vytvořen následujícím příkazem (na jednom řádku): |
| |
<wrap info>Adresářová struktura po ''~/rpm/RPMS'' je pro ''rpm'' nezbytná. Jestliže neexistuje, obdržíte chybové hlášení.</wrap> | <wrap info>Adresářová struktura po ''~/rpm/RPMS'' je pro ''rpm'' nezbytná. Jestliže neexistuje, obdržíte chybové hlášení.</wrap> |
| |
==== Tvorba souboru .rpmmacros ==== | ===== Tvorba souboru .rpmmacros ===== |
K tvorbě balíčků potřebujete mít v domovském adresáři konfigurační soubor ''.rpmmacros'': | K tvorbě balíčků potřebujete mít v domovském adresáři konfigurační soubor ''.rpmmacros'': |
| |
Logovací záznamy o tvorbě balíčku mohou být velmi dlouhé a lze je ukládat pro pozdější prohlížení. Já používám ''emacs'' nebo ''xemacs'' a použiji druhé okno se shellem (<key>Alt</key>+<key>x</key> shell) a uložím buffer jako ''ktron''. LOG, například, po dokončení. | Logovací záznamy o tvorbě balíčku mohou být velmi dlouhé a lze je ukládat pro pozdější prohlížení. Já používám ''emacs'' nebo ''xemacs'' a použiji druhé okno se shellem (<key>Alt</key>+<key>x</key> shell) a uložím buffer jako ''ktron''. LOG, například, po dokončení. |
| |
V podadresářích ''~/RPM/BUILD'' obvykle potřebujete zpřístupnit záplaty ke zdrojovým souborům (existuje-li jedna nebo více záplat, byly uloženy v ''~/rpm/SOURCES''), k binárkám, zkompilovaným knihovám, man stránkám atd. Soubor ''spec'' popisuje zdroje a soubory se záplatami a jak sestavit balíček a jak celou sadu správně nainstalovat. | V podadresářích ''~/RPM/BUILD'' obvykle potřebujete zpřístupnit záplaty ke zdrojovým souborům (existuje-li jedna nebo více záplat, byly uloženy v ''~/rpm/SOURCES''), k binárkám, zkompilovaným knihovnám, man stránkám atd. Soubor ''spec'' popisuje zdroje a soubory se záplatami a jak sestavit balíček a jak celou sadu správně nainstalovat. |
| |
Nyní si vysvětlíme, co vše je potřeba udělat, aby v případě vylepšení balíčku ''ktron'' byl správně upraven soubor ''spec'' a pak znovu vytvořen balíček. | Nyní si vysvětlíme, co vše je potřeba udělat, aby v případě vylepšení balíčku ''ktron'' byl správně upraven soubor ''spec'' a pak znovu vytvořen balíček. |
* **//Licence//**: - dnes převažuje GPL licence, nicméně existuje i sada v současnosti používaných ne-GPL licencí. Pečlivě zkontrolujte licenci software a ujistěte se, že je možné včlenit program do distribuce a ve kterém úložišti: [[:zdroje#core_repozitare|core]] (bez licence), [[:zdroje#nonfree_repozitare|nonfree]] (non-free licence) nebo [[:zdroje#tainted_repozitare|tainted]] (záležitostmi v oblasti patentů uvnitř). Nelze přijmout uzavřený (non-open) software. Také nemůžeme přijmout program, jehož licence neumožňuje volnou distribuci. <wrap important>Dávejte na takové programy pozor!</wrap> Seznam přijatelných licencí lze nalézt na stránce [[https://wiki.mageia.org/en/Licensing_policy|Mageia Licences]]. | * **//Licence//**: - dnes převažuje GPL licence, nicméně existuje i sada v současnosti používaných ne-GPL licencí. Pečlivě zkontrolujte licenci software a ujistěte se, že je možné včlenit program do distribuce a ve kterém úložišti: [[:zdroje#core_repozitare|core]] (bez licence), [[:zdroje#nonfree_repozitare|nonfree]] (non-free licence) nebo [[:zdroje#tainted_repozitare|tainted]] (záležitostmi v oblasti patentů uvnitř). Nelze přijmout uzavřený (non-open) software. Také nemůžeme přijmout program, jehož licence neumožňuje volnou distribuci. <wrap important>Dávejte na takové programy pozor!</wrap> Seznam přijatelných licencí lze nalézt na stránce [[https://wiki.mageia.org/en/Licensing_policy|Mageia Licences]]. |
| |
* ** //Komprimace tarballu// **: - s ohledem na minimalizaci práce <wrap todo>se doporučuje</wrap> použít původní tarball bez jakýchkoli modifikací. Jsou-li zdrojové soubory poskytované ve více různých komprimačních formátech, obvykle volíme ''.tar.bz2'' nebo lepší kompresní algoritmus ''tar.xz''. Vyhýbejte se komprimaci záplat v textových formátech (vytvořené např. programem ''diff'' a podobnými) a další konfiguračních záznamů / script (textových souborů), které obvykle zabírají malý prostor, zatímco komprimace komplikují kontrolu změn v Subversion diffs (a Subversion také používá nějakou formu komprimace). <WRAP important> Z bezpečnostních důvodu důrazně doporučujeme u balíčků s vysokým bezpečnostním rizikem neupravovat původní zdrojový soubor, bude-li to měnit kontrolní součet (checksum) souboru. Pro tyto druhy balíčků doporučujeme ponechat původní formu (formát) souboru tak, aby kdykoli bylo možné pomocí ''md5sum''/''gpg'' porovnat hodnoty s těmi, které jsou uvedeny na stránkách poskytovatele programu uvedených v sekci download. Jedním příkladem, kde lze využít vyjímky byl např. ''OpenSSH''.</WRAP> | * ** //Komprimace tarballu// **: - s ohledem na minimalizaci práce <wrap todo>se doporučuje</wrap> použít původní tarball bez jakýchkoli modifikací. Jsou-li zdrojové soubory poskytované ve více různých komprimačních formátech, obvykle volíme ''.tar.bz2'' nebo lepší kompresní algoritmus ''tar.xz''. Vyhýbejte se komprimaci záplat v textových formátech (vytvořené např. programem ''diff'' a podobnými) a další konfiguračních záznamů / script (textových souborů), které obvykle zabírají malý prostor, zatímco komprimace komplikují kontrolu změn v Subversion diffs (a Subversion také používá nějakou formu komprimace). <WRAP important> Z bezpečnostních důvodu důrazně doporučujeme u balíčků s vysokým bezpečnostním rizikem neupravovat původní zdrojový soubor, bude-li to měnit kontrolní součet (checksum) souboru. Pro tyto druhy balíčků doporučujeme ponechat původní formu (formát) souboru tak, aby kdykoli bylo možné pomocí ''md5sum''/''gpg'' porovnat hodnoty s těmi, které jsou uvedeny na stránkách poskytovatele programu uvedených v sekci download. Jedním příkladem, kde lze využít výjimky byl např. ''OpenSSH''.</WRAP> |
| |
===== Obsah souboru spec ===== | ===== Obsah souboru spec ===== |
Jméno je obvykle zvoleno podle názvu hlavního binárního balíčku, ačkoli postačujícím důvodem může být i známost jiného názvu. | Jméno je obvykle zvoleno podle názvu hlavního binárního balíčku, ačkoli postačujícím důvodem může být i známost jiného názvu. |
| |
Verze je číslo z nezaplátovaného zdroje. Jde o číslo verze z jméno v původním komprimovaném souboru: ''jméno-verze.tar.gz''. | Verze je číslo z nezáplatovaného zdroje. Jde o číslo verze z jméno v původním komprimovaném souboru: ''jméno-verze.tar.gz''. |
| |
Vydání (release) je číslo následované písmeny ''mga1'' (znamenající "Mageia 1"; toto je naprosto nezbytné) je přírustkové číslo zvyšující se o jednu při každém dalším sestavení balíčku. Sestavení se může opakovat kvůli záplatě použité na zdroj, úprava souboru ''spec'', přidání ikon atp. | Vydání (release) je číslo následované písmeny ''mga1'' (znamenající "Mageia 1"; toto je naprosto nezbytné) je přírůstkové číslo zvyšující se o jednu při každém dalším sestavení balíčku. Sestavení se může opakovat kvůli záplatě použité na zdroj, úprava souboru ''spec'', přidání ikon atp. |
| |
<code> | <code> |
%build | %build |
</code> | </code> |
Tato část obsahuje scripty přimo zodpovědné za kompilace software. | Tato část obsahuje scripty přímo zodpovědné za kompilace software. |
Sestává z příkazů vydaných po rozbalení ze zdrojového stromu. | Sestává z příkazů vydaných po rozbalení ze zdrojového stromu. |
| |
Seznam souborů musí být zapsán ručně to souboru ''spec''. Má být tvořen seznamem všech souborů vytvořených v adresářové struktuře. Aby se to mohlo vytvořit, napište ''rpmbuild -bi muj_balicek.spec''. Parametr způsobí, že se příprava balíčku zastaví, jakmile ''rpm'' dokončí simulovanou instalaci. Pak můžete adresáře projít ''~/rpm/BUILDROOT/gif2png'' (v našem případě) a rozhodnout se, které soubory chcete v balíčku mít. Zpravidla to budou všechny. | Seznam souborů musí být zapsán ručně to souboru ''spec''. Má být tvořen seznamem všech souborů vytvořených v adresářové struktuře. Aby se to mohlo vytvořit, napište ''rpmbuild -bi muj_balicek.spec''. Parametr způsobí, že se příprava balíčku zastaví, jakmile ''rpm'' dokončí simulovanou instalaci. Pak můžete adresáře projít ''~/rpm/BUILDROOT/gif2png'' (v našem případě) a rozhodnout se, které soubory chcete v balíčku mít. Zpravidla to budou všechny. |
| |
</WRAP round important>**Poznámka:** Nepoužívejte pro tvorbu seznamu ''find'', ale tvořte ho po jednotlivých souborech (můžete tak odhalit chyby v nových verzích). Jedinou vyjímkou jsou ''locales'', v nichž by se měl použít ''find_lang %{name}'' v sekci ''%install'' a nahraďte nadpis sekce ''%files'' za ''%files -f %{name}.lang''. | <WRAP important>**Poznámka:** Nepoužívejte pro tvorbu seznamu ''find'', ale tvořte ho po jednotlivých souborech (můžete tak odhalit chyby v nových verzích). Jedinou výjimkou jsou ''locales'', v nichž by se měl použít ''find_lang %{name}'' v sekci ''%install'' a nahraďte nadpis sekce ''%files'' za ''%files -f %{name}.lang''. |
</WRAP> | </WRAP> |
| |
|''root''| - vlastník souboru je root| | |''root''| - vlastník souboru je root| |
|''root''| - skupina vlastníka je root| | |''root''| - skupina vlastníka je root| |
|''0755''| - soubor práv nastavených ve všech adresářích vlastněných timto balíčkem; v tomto případě je 0755 (rwxr-xr-x)| | |''0755''| - soubor práv nastavených ve všech adresářích vlastněných tímto balíčkem; v tomto případě je ''0755'' (''rwxr-xr-x'')| |
| |
<WRAP important> | <WRAP important> |
%doc README NEWS COPYING AUTHORS | %doc README NEWS COPYING AUTHORS |
</code> | </code> |
Speciální tag ''%doc'' určije soubory, které se stanou součástí dokumentace balíčku. Zde vyjmenované soubory budou uloženy v ''/usr/share/doc/gif2png-2.0.1/''. Adresář pro ně bude také automaticky vytvořen. Soubory určené v tagu ''%doc'' jsou uloženy v relativních umístěních k vašemu rozbalenému zdrojovému adresáři ''BUILD''. | Speciální tag ''%doc'' určuje soubory, které se stanou součástí dokumentace balíčku. Zde vyjmenované soubory budou uloženy v ''/usr/share/doc/gif2png-2.0.1/''. Adresář pro ně bude také automaticky vytvořen. Soubory určené v tagu ''%doc'' jsou uloženy v relativních umístěních k vašemu rozbalenému zdrojovému adresáři ''BUILD''. |
| |
<code> | <code> |
Chcete-li kompilovat mnoho oficiálních balíčků (pro Mageiu), musíte mít předinstalováno mnoho ''devel'' balíčků. Pokud není deklarovaný ve vašem souboru ''spec'' a je přitom nezbytný, balíček bude vytvořen v clusteru. Bude funkční, ale nepřítomnost této informace zabrání kompilaci na počítačích, kde chybí příslušný ''devel'' balíček. Tvorba, debugging a aktualizace bude daleko obtížnější. | Chcete-li kompilovat mnoho oficiálních balíčků (pro Mageiu), musíte mít předinstalováno mnoho ''devel'' balíčků. Pokud není deklarovaný ve vašem souboru ''spec'' a je přitom nezbytný, balíček bude vytvořen v clusteru. Bude funkční, ale nepřítomnost této informace zabrání kompilaci na počítačích, kde chybí příslušný ''devel'' balíček. Tvorba, debugging a aktualizace bude daleko obtížnější. |
| |
Podívejte se na domovskou stránku programu nebo README/INSTALL soubory ve zdrojovém tarball souboru, kde obvykle naleznete informace o potřebných součásech. | Podívejte se na domovskou stránku programu nebo README/INSTALL soubory ve zdrojovém tarball souboru, kde obvykle naleznete informace o potřebných součástech. |
| |
Pro omezení chyb při kompilaci typu "nesplněných závislostí" je potřeba mít nainstalovány základní ''devel'' balíčky: | Pro omezení chyb při kompilaci typu "nesplněných závislostí" je potřeba mít nainstalovány základní ''devel'' balíčky: |
* ''libstdc++6-devel'' | * ''libstdc++6-devel'' |
| |
Poté již stačí nainstalovat jen ''devel'' balíčky vyžadované príkazem ''rpm build'' pro konkrétní kompilovaný balíček. | Poté již stačí nainstalovat jen ''devel'' balíčky vyžadované příkazem ''rpm build'' pro konkrétní kompilovaný balíček. |
| |
Po spuštění kompilace pozorně sledujte zprávy jako ''checking for ...'' ve výstupu ''.configure'' | Po spuštění kompilace pozorně sledujte zprávy jako ''checking for ...'' ve výstupu ''.configure'' |
Prvním krokem jsou: | Prvním krokem jsou: |
* jsou ''rpms'' vytvořené v příslušných adresářích se správnými jmény? (v ''~/rpm/SRPMS'' a ''~/rpm/RPMS/i586/'') | * jsou ''rpms'' vytvořené v příslušných adresářích se správnými jmény? (v ''~/rpm/SRPMS'' a ''~/rpm/RPMS/i586/'') |
* jsou informace získené příkazem ''rpm -qlivp %%--%%changelog mypackage.(src.)rpm'' správné? | * jsou informace získané příkazem ''rpm -qlivp %%--%%changelog mypackage.(src.)rpm'' správné? |
| |
===== Použití rpmlint ===== | ===== Použití rpmlint ===== |
* Jsou všechny binárky spustitelné a je dokumentace dostupná konečným uživatelům? | * Jsou všechny binárky spustitelné a je dokumentace dostupná konečným uživatelům? |
| |
Perfikcionisté by měli zkoušet různé instalace a odinstalace ke kontrole, jsou-li všechny vlastnosti implementovány korektně, například bez požadovaných balíčků. | Perfekcionisté by měli zkoušet různé instalace a odinstalace ke kontrole, jsou-li všechny vlastnosti implementovány korektně, například bez požadovaných balíčků. |
| |
Jsou-li všechny testy úspěšné, jste již skoro hotovi a můžete přikročit k poslednímu kroku: předložení balíčku | Jsou-li všechny testy úspěšné, jste již skoro hotovi a můžete přikročit k poslednímu kroku: předložení balíčku |
* Poslat dotaz mageia-dev, které jste si předplatili před dlouhou dobou na začátku čtení těchto HOWTO stránky. | * Poslat dotaz mageia-dev, které jste si předplatili před dlouhou dobou na začátku čtení těchto HOWTO stránky. |
| |
===== Specifika Mageia RPM: ===== | ====== Specifika Mageia RPM: ====== |
Napište oddělení Mageia Quality Assurance. | Napište oddělení Mageia Quality Assurance. |
| |
%__install_info %{name}.info | %__install_info %{name}.info |
</code> | </code> |
* Snadné zacházení s lokalizacem. Nejlepším způsobem není ručně vkládat ''.mo'' soubory, které jsou obvykle uloženy v ''/usr/share'', ale použít zvláštní makro v sekci ''%install'', které pro to vytvoří speciální soubor: | * Snadné zacházení s lokalizacemi. Nejlepším způsobem není ručně vkládat ''.mo'' soubory, které jsou obvykle uloženy v ''/usr/share'', ale použít zvláštní makro v sekci ''%install'', které pro to vytvoří speciální soubor: |
<code> | <code> |
%find_lang %{name} | %find_lang %{name} |
%files -f %{name}.lang | %files -f %{name}.lang |
</code> | </code> |
* Tvorba makra. Vytvořená makra ''%configure'' a ''%makeinstall'' jsou nyní docela velké. Přesně určí prefix, ale také každý běžný adresář (jako např. ''bindir'', ''datadir'' atd.); pracují bezchybně s balíčky malé a střední velikosti, u ostatních je zapotřebí určité pozornosti. Makro ''%make'' vykoná příkaz ''make'' s vhodným parametrem ''-j <číslo>'' pro využití výkonu počítače s více procesory. Pokud potřebujete spustit ručně script ''./configure'', <warp alert>**NIKDY** nemá mít pevně uvedenou architekturu; k tomu slouží makro ''%{targetplatform}'' (nebo přímo ''%{tartetcpu}'', bude-li to nutné).</wrap> | * Tvorba makra. Vytvořená makra ''%configure'' a ''%makeinstall'' jsou nyní docela velké. Přesně určí prefix, ale také každý běžný adresář (jako např. ''bindir'', ''datadir'' atd.); pracují bezchybně s balíčky malé a střední velikosti, u ostatních je zapotřebí určité pozornosti. Makro ''%make'' vykoná příkaz ''make'' s vhodným parametrem ''-j <číslo>'' pro využití výkonu počítače s více procesory. Pokud potřebujete spustit ručně script ''./configure'', <wrap alert>**NIKDY** nemá mít pevně uvedenou architekturu; k tomu slouží makro ''%{targetplatform}'' (nebo přímo ''%{tartetcpu}'', bude-li to nutné).</wrap> |
* Kompilace serverových aplikací. Pro kompilace bezpečnějších serverů používáme zvláštní makro, ''%serverbuild'', které používáme před vlastní kompilací. To umožní bezpečné nastavení přepínačů. Sekce ''%build'' bude vypadat asi takto: | * Kompilace serverových aplikací. Pro kompilace bezpečnějších serverů používáme zvláštní makro, ''%serverbuild'', které používáme před vlastní kompilací. To umožní bezpečné nastavení přepínačů. Sekce ''%build'' bude vypadat asi takto: |
<code> | <code> |
====== Alternativa: checkinstall ====== | ====== Alternativa: checkinstall ====== |
| |
checkinstall je již dlouhou dobu nefunkčním. Přesto z historického hlediska jistě zajímavým nástrojem na tvorbu RPM. | ''checkinstall'' je již dlouhou dobu nefunkčním. Přesto z historického hlediska jistě zajímavým nástrojem na tvorbu RPM. |
| |
<del>Velmi snadná cesta ke kompilaci balíčků ''rpm'' pro osobní použití je instalovat balíček ''checkinstall''. Kompilace ze zdrojových kódů (obvykle ''./configure && make && sudo make install'') je pozměněna tak, že příkaz ''make install'' je nahrazen příkazem ''checkinstall''. Tím se velmi zjednoduší kompilace ''rpm''. | <del>Velmi snadná cesta ke kompilaci balíčků ''rpm'' pro osobní použití je instalovat balíček ''checkinstall''. Kompilace ze zdrojových kódů (obvykle ''./configure && make && sudo make install'') je pozměněna tak, že příkaz ''make install'' je nahrazen příkazem ''checkinstall''. Tím se velmi zjednoduší kompilace ''rpm''. |