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 [2017/01/17 11:14] – [jak probiha upgrade] djbuldogpackaging [2025/08/28 10:09] (aktuální) – upraveno mimo DokuWiki 127.0.0.1
Řádek 27: Řádek 27:
 %_srcrpmdir %{_rpmtopdir} %_srcrpmdir %{_rpmtopdir}
 </code> </code>
 +  * nebo parametrem programu rpmbuild
 +<code bash>
 +  rpmbuild --buildroot="${BUILDDIR}/rpm-root" \
 +           --define="_builddir ${BUILDDIR}/BUILD" \
 +           --define="_rpmdir ${BUILDDIR}/RPMS" \
 +           --define="_tmppath ${BUILDDIR}/rpm-tmp" \
 +           --define="_sourcedir ${BUILDDIR}/SOURCES" \
 +           -bb "${BUILDDIR}/$1.spec"
 +</code>
 +
 +  * 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" ====
Řádek 40: Řádek 118:
 Release: 0 Release: 0
 Source: none Source: none
-Copyright: GPL+License: GPL
 Group: Utilities/System Group: Utilities/System
  
Řádek 69: Řá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 142: Řádek 220:
   * *) pak se teprve dela pre/post uinstall   * *) pak se teprve dela pre/post uinstall
  
-Pořadí, ve kterém se bude spouštět pre-install není asi dopředu známo. +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]]) 
-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 161: Řá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
 +
 +
 +===== DEB =====
 +
 +==== Finty ====
 +
 +  * nalezení balíčku, který obsahuje soubor
 +
 +<code>
 +$ dkpg -S /bin/cat
 +coreutils: /bin/cat
 +</code>
 +
 +  * Jak zobrazit dostupnou a nainstalovanou verzi?
 +
 +<code>
 +# apt-cache policy gnome-control-center
 +gnome-control-center:
 + Instalovaná verze: 1:2.20.0-1
 + Kandidát: 1:2.20.0-1
 + Tabulka verzí:
 + *** 1:2.20.0-1 0
 +        500 ftp://ftp.cz.debian.org unstable/main Packages
 +        100 /var/lib/dpkg/status
 +</code>
 +
 +==== Tvorba ====
 +
 +  * http://tldp.org/HOWTO/html_single/Debian-Binary-Package-Building-HOWTO/
 +
 +<code>
 +$ mkdir -p ./debian/usr/bin
 +$ cp linuxstatus ./debian/usr/bin
 +</code>
 +
 +<code>
 +Package: linuxstatus
 +Version: 1.1-1
 +Section: base
 +Priority: optional
 +Architecture: all
 +Depends: bash (>= 2.05a-11), textutils (>= 2.0-12), awk, procps (>= \
 +1:2.0.7-8), sed (>= 3.02-8), grep (>= 2.4.2-3), coreutils (>= 5.0-5)
 +Maintainer: Chr. Clemens Lee <clemens@kclee.de>
 +Description: Linux system information
 + This script provides a broad overview of different
 + system aspects.
 +</code>
 +
 +<code>
 +$ mkdir -p debian/DEBIAN
 +$ find ./debian -type d | xargs chmod 755   # this is necessary on Debian Woody, don't ask me why
 +$ cp control debian/DEBIAN
 +</code>
 +
 +<code>
 +$ dpkg-deb --build debian
 +dpkg-deb: building package `linuxstatus' in `debian.deb'.
 +$ mv debian.deb linuxstatus_1.1-1_all.deb
 +</code>
packaging.1484648050.txt.gz · Poslední úprava: (upraveno mimo DokuWiki)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki