Ubuntu Csomagolási útmutató

Dokumentáció

Csomagolás Debhelperrel


[Fontos]

Követelmények: A "Csomagolás from scratch" című rész követelményei plusz debhelper és dh-make

Csomagolóként ritkán hozhat létre csomagokat a semmiből, ahogy az előző részben tettük. Ahogy el tudod képzelni, a szabályfájlban szereplő feladatok és információk közül sok közös a csomagoknál. A csomagolás megkönnyítése és hatékonyabbá tétele érdekében a debhelper segítségével segítséget nyújthat ezeknek a feladatoknak. A Debhelper egy olyan Perl-parancsfájl-készlet (előzetesen dh_ ), amely automatizálja a csomaggyártás folyamatát. Ezekkel a szkriptekkel a Debian csomag felépítése egyszerűvé válik.

Ebben a példában újra megteremtjük a GNU Hello csomagot, de ezúttal munkánkat összehasonlítjuk az Ubuntu hello-debhelper csomaggal. Ismét létre kell hozni egy könyvtárat, ahol dolgozni fog:

mkdir ~ / hello-debhelper cd ~ / hello-debhelper wget http://ftp.gnu.org/gnu/hello/hello-2.1.1.tar.gz mkdir ubuntu cd ubuntu

Ezután szerezzen be az Ubuntu forráscsomagot:

apt-get forrás hello-debhelper cd ..

Az előző példához hasonlóan az első dolog, amire szükségünk van, az eredeti (upstream) tarball csomagolása.

tar -xzvf hello-2.1.1.tar.gz

Ahelyett, hogy a felfelé irányuló tarballot átmásolnánk a hello_2.1.1.orig.tar.gz fájlba, ahogy az előző példában is megtörtént, adjuk meg a dh_make-nek a munkát nekünk. Az egyetlen dolog, amit meg kell tennie, hogy nevezze át a forrás mappát, így a - formában van, ahol a csomagnév kisbetűs. Ebben az esetben a tarball csak elhagyja a címkét, így létrehozhat egy helyesen elnevezett forrás könyvtárat, így beléptethetünk:

cd hello-2.1.1

A forrás kezdeti "debianizációjának" megteremtéséhez a dh_make-t fogjuk használni.

dh_make -e your.maintainer@address -f ../hello-2.1.1.tar.gz

A dh_make majd egy sor kérdést fog felkérni:

A csomag típusa: egy bináris, több bináris, könyvtár, kernel modul vagy cdbs? [s / m / l / k / b] s
Fenntartó neve: Packager kapitány E-mail cím: packager@coolness.com Dátum: Thu, 6 Apr 2006 10:07:19 -0700 Csomag neve: hello Verzió: 2.1.1 Engedély: blank Csomag típusa: Egyetlen találat to megerősítés: Írja be


[Vigyázat]

Csak futtassa dh_make -e egyszer. Ha először futtatod, miután először csináltad, nem fog megfelelően működni. Ha meg akarja változtatni, vagy hibát követett el, távolítsa el a forrás könyvtárat, és hagyja abba a felfelé irányuló tarlapot. Ezután átválthat a forráskönyvtárba, és próbálkozzon újra.

A dh_make futása két dolgot tartalmaz:

A Hello program nem túl bonyolult, és amint azt a "Csomagolás a karcolódásról" című részben láttuk, a csomagolásnak nem kell több, mint az alapfájlok. Ezért távolítsuk el a .ex fájlokat:

cd debian rm * .ex * .EX

A hello , akkor is nem

* Licenc

* Ubuntu Csomagolási útmutató index

szükség van README.Debian (README fájl meghatározott Debian problémákra, nem a program README- jára ), dirs (a dh_installdirs a szükséges könyvtárak létrehozásához), docs (a dh_installdocs a dokumentáció telepítéséhez) vagy info (a dh_installinfo fájl) fájlokat a debian könyvtárba. A fájlokról további információt a "dh_make példapéldányok" című részben talál.

Ezen a ponton csak a debian könyvtárban csak changelog , compat , control , copyright és rules fájlokat kell megadnod . A "Csomagolás a karcolódástól" című részből az egyetlen új fájl a compat , amely egy fájlt, amely tartalmazza a használt debhelper verziót (ebben az esetben a 4-et).

Ebben az esetben be kell állítania a changelog-ot kissé, hogy tükrözze, hogy ez a csomag a hello-debhelper helyett inkább csak hello :

hello-debhelper (2.1.1-1) dapper; sürgősség = alacsony * Kezdeti kiadás - Packager kapitány 2006. április 6., csütörtök, 10:07:19 -0700

A debhelper használatával az egyetlen olyan dolog, amit változtatni kell a vezérlésben , a név (helyettesítő hello-debhelper hello ) és a debhelper (> = 4.0.0) hozzáadása a forráscsomag Build-Depends mezőjéhez. A hello-debhelper Ubuntu csomagja így néz ki:

Másolhatjuk a szerzői jogi és a postinst- és prerm szkripteket az Ubuntu hello-debhelper csomagból, mivel nem változtak a "Csomagolás a karcolásról" című rész óta. Ismét másoljuk a szabályzat fájlt, hogy megvizsgálhassuk.

cp ../../ubuntu/hello-debhelper-2.1.1/debian/copyright. cp ../../ubuntu/hello-debhelper-2.1.1/debian/postinst. cp ../../ubuntu/hello-debhelper-2.1.1/debian/prerm. cp ../../ubuntu/hello-debhelper-2.1.1/debian/rules.

Az utolsó fájl, amelyet meg kell vizsgálnunk, olyan szabályok , ahol láthatjuk a debhelper szkriptek erejét. A szabályzat debhelper verziója némileg kisebb (54 sor, szemben a 72 sorból a "szabályok" részben).

A debhelper verzió úgy néz ki, mint:

#! / usr / bin / make -f csomag = hello-debhelper CC = gcc CFLAGS = -g -Wall ifeq (, $ (findstring noopt, $ (DEB_BUILD_OPTIONS))) CFLAGS + = -O2 endif #export DH_VERBOSE = : dh_testdir dh_clean rm -f build - $ (MAKE) -i distclean telepítés: build dh_clean dh_installdirs $ (MAKE) prefix = $ (CURDIR) / debian / $ (csomag) / usr \ mandir = $ (CURDIR) / debian / $ (csomag) / usr / share / man \ infodir = $ (CURDIR) / debian / $ (csomag) / usr / share / info \ install build: ./configure --prefix = / usr $ (MAKE) (CC) "CFLAGS =" $ (CFLAGS) "

touch build bináris-indep: install # Nem létezik olyan architektur független fájl, amelyet a csomag által generált # Ha vannak olyanok, amelyeket itt csinálnak. bináris arch: install dh_testdir -a dh_testroot -a dh_installdocs -a HÍREK dh_installchangelogs -a ChangeLog dh_strip -a dh_compress -a dh_fixperms -a dh_installdeb -a dh_shlibdeps -a dh_gencontrol -a dh_md5sums -a dh_builddeb -a bináris: binary-indep bináris- arch .PHONY: bináris bináris archív bináris indep tiszta checkroot

Vegyük észre, hogy olyan feladatok, mint például a tesztelés, ha a megfelelő könyvtárban vannak ( dh_testdir ), győződjenek meg róla, hogy a csomagot gyökér jogosultságokkal ( dh_testroot ), dokumentációval ( dh_installdocs és dh_installchangelogs ) építjük , és a build ( dh_clean ) . Sok csomag sokkal bonyolultabb, mint hello , a szabályok nem nagyobbak, mert a debhelper szkriptek kezelik a legtöbb feladatot. A debhelper szkriptek teljes listáját lásd a " debhelper szkriptek listája" című részben. Ezek jól dokumentálva vannak a megfelelő oldalukon. Hasznos gyakorlat, ha elolvassa a man oldalt (jól megírt és nem hosszú) a fenti szabályfájlban használt minden helper szkripthez.