Obsah

Tvorba RPM/DEB balíčků

RPM

$ cat ~/.rpmmacros
%_topdir /home/jamatos/
%_tmppath /tmp/rpmbuild
%_builddir %{_tmppath}

%_rpmtopdir %{_topdir}/build/%{name}
%_sourcedir %{_rpmtopdir}
%_specdir %{_rpmtopdir}
%_rpmdir %{_rpmtopdir}
%_srcrpmdir %{_rpmtopdir}
  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"

spec file

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 .
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)
%post
case $1 in
	1)
	# instalation
  ;;
	2)
	# upgrade
	;;
esac 

Příklad "rychle na prasáka"

Summary: Balicek na rychlo
Name: balicek-prvni
Version: 1.0
Release: 0
Source: none
License: GPL
Group: Utilities/System

%description
Tohle je muj balicek

%prep

%build
%configure
make OPTIM="$RPM_OPT_FLAGS"

%install
%makeinstall PREFIX=$RPM_BUILD_ROOT install

%files
%{_bindir}
%{_datadir}
BASEDIR=`pwd`

mkdir -p build/{root,BUILD}
cp -ra projekt/* build/BUILD/
chmod +x build/BUILD/configure
rpmbuild --buildroot=${BASEDIR}/build/root --define="_builddir ${BASEDIR}/build/BUILD" --define="_rpmdir ${BASEDIR}/build/" -bb balicek-prvni.spec

Příklad "na slušňačku"

Summary: Bblablablabla
Name: balicek-prvni
Version: 1.0
Release: 0
Source: projekt-src.tar.gz
Copyright: GPL
Group: Utilities/System

%description
Tohle je muj balicek

%prep
%setup

%build
make OPTIM="$RPM_OPT_FLAGS"

%install
make PREFIX=$RPM_BUILD_ROOT install

%files
%{_bindir}
%{_datadir}
# pripravi adresarovy strom a nastaveni pro RPM
rpmbuildenv:
	mkdir -p ~/rpmbuild/{BUILD,RPMS/x86_64,SOURCES,SPECS,SRPMS}
	(echo "%_topdir ~/rpmbuild";echo "%_prefix /usr/local/") >> ~/.rpmmacros 

rpm:
	cp -ra zdrojaky zdrojaky-tmp
	chmod +x zdrojaky-tmp/configure
# odstraneni info o svn, pokud tam je
	find zdrojaky-tmp -name '.svn'|xargs rm -rf
	tar czf zdrojaky-tmp.tgz zdrojaky-tmp
# pokud je lokalni RPM build prostredi tak do nej supnu balicky a spec file (dodelat)
	[ -d ~/rpmbuild/SOURCES ] && cp -f zdrojaky-tmp.tgz ~/rpmbuild/SOURCES

all: rpmbuildenv rpm

jak probiha upgrade

Hence, the order of operations during an upgrade is:

A taky pozor na instalaci vice balicku najednou, chova se to trochu jinak. Hromadny upgrade (rpm -Uvh *) nejspis funguje takto:

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 (%triggerin, %triggerun, %triggerpostun)

https://fedoraproject.org/wiki/Packaging:Scriptlets

  1. %pretrans of new package
  2. %pre of new package
  3. (package install)
  4. %post of new package
  5. %triggerin of other packages (set off by installing new package)
  6. %triggerin of new package (if any are true)
  7. %triggerun of old package (if it's set off by uninstalling the old package)
  8. %triggerun of other packages (set off by uninstalling old package)
  9. %preun of old package
  10. (removal of old package)
  11. %postun of old package
  12. %triggerpostun of old package (if it's set off by uninstalling the old package)
  13. %triggerpostun of other packages (if they're setu off by uninstalling the old package)
  14. %posttrans of new package

malé velké rady

distribuce dočasných install souborů

zdroje:

DEB

Finty

$ dkpg -S /bin/cat
coreutils: /bin/cat
# 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

Tvorba

$ mkdir -p ./debian/usr/bin
$ cp linuxstatus ./debian/usr/bin
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.
$ 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
$ dpkg-deb --build debian
dpkg-deb: building package `linuxstatus' in `debian.deb'.
$ mv debian.deb linuxstatus_1.1-1_all.deb