Uživatelské nástroje

Nástroje pro tento web


packaging

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revizePředchozí verze
Následující verze
Předchozí verze
packaging [2018/05/28 14:17] – [RPM] djbuldogpackaging [2025/08/28 10:09] (aktuální) – upraveno mimo DokuWiki 127.0.0.1
Řádek 38: Řádek 38:
  
   * seznam proměnných/maker [[https://fedoraproject.org/wiki/Packaging:RPMMacros|zde]]   * seznam proměnných/maker [[https://fedoraproject.org/wiki/Packaging:RPMMacros|zde]]
 +
 +==== spec file ====
 +
 +  * SourceX
 +    * soubor balíčku zadaný jako URL nebo název souboru v SOURCES adresáři, typicky tgz archív se zdrojáky
 +    * X zastupuje číslo, například Source0, Source1.., může jich být tedy více
 +    * Source bez čísla je synonymum k Source0
 +    * lze využít proměnné %{name}, %{version}
 +  * PatchX
 +    * rozdílový soubor zadaný jako URL nebo název souboru v SOURCES adresáři, typicky obsahující modifikace souborů z archívu SourceX
 +    * X zastupuje číslo, například Patch0, Patch1.., může jich být tedy více
 +  * Requires
 +    * na čem balíček závisí
 +    * například názvy jiných balíčků oddělených čárkou
 +    * lze zadat i konkrétní verze přes komparátory (<,>,=)
 +
 +  * %prep
 +    * příkazy k přípravě balíčku
 +    * typicky volají příkaz setup, který zařídí extrakci souborů SourceX
 +    * setup má parametry, popis například [[https://docs-old.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/html-single/RPM_Guide/index.html#id366540|zde]]
 +    * setup lze nahradit například zápisem
 +<code>
 +cd %{_builddir}
 +rm -rf %{name}-%{version}
 +cp -rf %{_sourcedir} %{name}-%{version}
 +cd %{name}-%{version}
 +/usr/bin/chmod -Rf a+rX,u+w,g-w,o-w .
 +</code>
 +  * %build
 +    * příkazy pro build programu, který balíček reprezentuje
 +    * pokud nic buildovat nepotřebujeme, tak lze sekci vynechat
 +  * %install
 +    * příkazy pro instalaci, typicky kopírování z %{_builddir} do %{buildroot}, který reprezentuje cílový kořenový adresář.
 +
 +  * %pre - příkazy před instalací/upgrade
 +  * %post - příkazy po instalaci/upgrade, nesmí končit nenulově
 +  * %preun - příkazy před odinstalací
 +  * %postun - příkazy po odinstalování, nesmí končit nenulově
 +
 +^ ^ install ^ upgrade ^ uninstall ^
 +| %pretrans | $1 == 0 | $1 == 0 | (N/A) |
 +| %pre | $1 == 1 | $1 == 2 | (N/A) |
 +| %post | $1 == 1 | $1 == 2 | (N/A) |
 +| %preun | (N/A) | $1 == 1 | $1 == 0 |
 +| %postun | (N/A) | $1 == 1 | $1 == 0 |
 +| %posttrans | $1 == 0 | $1 == 0 | (N/A) |
 +
 +<code>
 +%post
 +case $1 in
 + 1)
 + # instalation
 +  ;;
 + 2)
 + # upgrade
 + ;;
 +esac 
 +</code>
 +
 +  * %files
 +    * soubory, které budou balíčkem instalovány (verzovány)
 +    * všechny soubory vytvořené v ''%{buildroot}'' musí být vypsány ve sekci ''%files'', jinak balíček nelze vytvořit
 +    * místo souborů lze použít hvězdičku
 +    * pozor na verzování obecných adresářů, může vytvořit konflikt s jinými balíčky
 +    * souborům lze nastavit oprávnění a vlastníka předřazením ''%attr(644,user,group)'' před název souboru
 +    * konfigurační soubory by měly mít předřazeno označení ''%config'' (případně i před ''%attr'')
 +      * pokud je v balíčku novější cfg soubor, tak přepíše lokální a případné modifikace lokálního uloží do .rpmsave
 +
 ==== Příklad "rychle na prasáka" ==== ==== Příklad "rychle na prasáka" ====
   * mám složku se zdrojáky s fungujícím ./configure + make   * mám složku se zdrojáky s fungujícím ./configure + make
Řádek 50: Řádek 118:
 Release: 0 Release: 0
 Source: none Source: none
-Copyright: GPL+License: GPL
 Group: Utilities/System Group: Utilities/System
  
Řádek 79: Řádek 147:
 cp -ra projekt/* build/BUILD/ cp -ra projekt/* build/BUILD/
 chmod +x build/BUILD/configure chmod +x build/BUILD/configure
-rpmbuild --buildroot=$(BASEDIR)/build/root --define="_builddir $(BASEDIR)/build/BUILD" --define="_rpmdir $(BASEDIR)/build/" -bb balicek-prvni.spec+rpmbuild --buildroot=${BASEDIR}/build/root --define="_builddir ${BASEDIR}/build/BUILD" --define="_rpmdir ${BASEDIR}/build/" -bb balicek-prvni.spec
 </code> </code>
  
Řádek 153: Řádek 221:
  
 Pořadí, ve kterém se bude spouštět pre-install není asi dopředu známo. Pokud jsou balíčky závislé na sobě, je dobré využít trigger skripty ([[https://www.ibm.com/developerworks/library/l-rpm2/|%triggerin, %triggerun, %triggerpostun]]) Pořadí, ve kterém se bude spouštět pre-install není asi dopředu známo. Pokud jsou balíčky závislé na sobě, je dobré využít trigger skripty ([[https://www.ibm.com/developerworks/library/l-rpm2/|%triggerin, %triggerun, %triggerpostun]])
 +
 +https://fedoraproject.org/wiki/Packaging:Scriptlets
 +
 +  - %pretrans of new package
 +  - %pre of new package
 +  - (package install)
 +  -  %post of new package
 +  -  %triggerin of other packages (set off by installing new package)
 +  -  %triggerin of new package (if any are true)
 +  -  %triggerun of old package (if it's set off by uninstalling the old package)
 +  -  %triggerun of other packages (set off by uninstalling old package)
 +  -  %preun of old package
 +  - (removal of old package)
 +  -  %postun of old package
 +  -  %triggerpostun of old package (if it's set off by uninstalling the old package)
 +  -  %triggerpostun of other packages (if they're setu off by uninstalling the old package)
 +  -  %posttrans of new package
 ==== malé velké rady ====  ==== malé velké rady ==== 
  
Řádek 170: Řádek 255:
   * http://www.cyron.cz/clanky/2009/ostatni/vytvoreni-vlastniho-balicku-6-vytvoreni-rpm-ze-zdrojoveho-kodu.php   * http://www.cyron.cz/clanky/2009/ostatni/vytvoreni-vlastniho-balicku-6-vytvoreni-rpm-ze-zdrojoveho-kodu.php
   * http://www.linux-archive.org/fedora-development/541096-how-keep-rpmbuild-directory-clean.html   * http://www.linux-archive.org/fedora-development/541096-how-keep-rpmbuild-directory-clean.html
 +  * https://fedoraproject.org/wiki/Packaging:Scriptlets
  
  
packaging.1527509870.txt.gz · Poslední úprava: (upraveno mimo DokuWiki)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki