Gabay sa Ubuntu Packaging

Dokumentasyon

Packaging sa Debhelper


[Mahalaga]

Mga Kinakailangan: Ang mga kinakailangan mula sa seksyon na tinatawag na "Packaging From Scratch" plus debhelper at dh-make

Bilang isang packager, bihira kang lumikha ng mga pakete mula sa simula tulad ng ginawa namin sa nakaraang seksyon. Tulad ng maaari mong isipin, marami sa mga gawain at impormasyon sa mga patakaran ng file, halimbawa, ay karaniwan sa mga pakete. Upang gawing mas madali at mas mahusay ang packaging, maaari mong gamitin ang debhelper upang tumulong sa mga gawaing ito. Ang Debhelper ay isang hanay ng mga script ng Perl (prefix na may dh_ ) na nag-i-automate ang proseso ng pag-set-package. Sa mga script na ito, ang paggawa ng isang pakete ng Debian ay nagiging simple.

Sa halimbawang ito, muli naming itatayo ang paketeng GNU Hello, ngunit sa pagkakataong ito ikukumpara namin ang aming trabaho sa pakete ng hello-debhelper ng Ubuntu. Muli, lumikha ng direktoryo kung saan ka nagtatrabaho:

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

Pagkatapos, kunin ang pakete ng pinagmulang Ubuntu:

apt-get source hello-debhelper cd ..

Tulad ng nakaraang halimbawa, ang unang bagay na kailangan nating gawin ay i-unpack ang orihinal (upstream) tarball.

tar -xzvf hello-2.1.1.tar.gz

Sa halip na kopyahin ang upstream na tarball sa hello_2.1.1.orig.tar.gz tulad ng ginawa namin sa nakaraang halimbawa, hayaan namin dh_make gawin ang trabaho para sa amin. Ang tanging bagay na kailangan mong gawin ay palitan ang pangalan ng folder ng pinagmulan upang ito ay sa anyo ng - kung saan ang packagename ay lowercase. Sa kasong ito, ang pagdadala lamang ng tarball ay gumagawa ng isang wastong pinangalanan na direktoryo ng pinagmulan upang maaari naming ilipat ito:

cd hello-2.1.1

Upang lumikha ng paunang "debianization" ng source gagamitin namin ang dh_make .

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

Pagkatapos ay hihilingin sa iyo ng dh_make ang isang serye ng mga tanong:

Uri ng pakete: single binary, multiple binary, library, kernel module o cdbs? [s / m / l / k / b] s
Pangalan ng tagapagtustos: Captain Packager Email-Address: packager@coolness.com Petsa: Thu, 6 Abril 2006 10:07:19 -0700 Pangalan ng Package: hello Bersyon: 2.1.1 Lisensya: blangko Uri ng Package: Single Hit kumpirmahin: Ipasok


[Babala]

Tumakbo lamang dh_make -e isang beses. Kung patakbuhin mo ulit ito pagkatapos mong gawin ito sa unang pagkakataon, hindi ito gagana ng maayos. Kung nais mong baguhin ito o gumawa ng isang pagkakamali, alisin ang direktoryo ng pinagmulan at untar ang upstream na tarball muli. Pagkatapos ay maaari kang lumipat sa direktoryo ng pinagmulan at subukang muli.

Ang pagpapatakbo ng dh_make -e ay dalawang bagay:

Ang programa ng Hello ay hindi masyadong kumplikado, at tulad ng nakita natin sa seksyon na tinatawag na "Packaging From Scratch", ang packaging na ito ay hindi nangangailangan ng higit pa sa mga pangunahing mga file. Samakatuwid, alisin natin ang .ex file:

cd debian rm * .ex * .EX

Para sa hello , hindi ka rin

* Lisensya

* Ubuntu Packaging Guide Index

kailangan README.Debian (README file para sa mga partikular na isyu ng Debian, hindi sa README ng programa), dirs (ginagamit ng dh_installdirs upang lumikha ng mga kinakailangang direktoryo), doc (ginagamit ng dh_installdocs upang i-install ang dokumentasyon ng programa), o impormasyon (ginagamit ng dh_installinfo para i-install ang info file) sa mga direktoryo ng debian . Para sa karagdagang impormasyon sa mga file na ito, tingnan ang seksyong tinatawag na "dh_make example files".

Sa puntong ito, dapat kang magkaroon lamang ng changelog , compat , kontrol , copyright , at mga panuntunan ng mga file sa direktoryo ng debian . Mula sa seksyon na tinatawag na "Packaging From Scratch", ang tanging file na bago ay compat , na isang file na naglalaman ng bersyon ng debhelper (sa kasong ito 4) na ginagamit.

Kakailanganin mong ayusin ang changelog nang bahagya sa kasong ito upang ipakita na ang pakete na ito ay pinangalanang halo-debhelper sa halip na halo lamang:

halo-debhelper (2.1.1-1) dapper; urgency = low * Initial release - Captain Packager Thu, 6 Apr 2006 10:07:19 -0700

Sa pamamagitan ng paggamit ng debelper , ang mga bagay lamang na kailangan nating baguhin sa kontrol ay ang pangalan (substituting halo para sa hello-debhelper ) at pagdaragdag ng debhelper (> = 4.0.0) sa patlang ng Build-Depends para sa source package. Ang pakete ng Ubuntu para sa hello-debhelper ay ganito ang hitsura:

Maaari naming kopyahin ang file ng copyright at ang postinst at prerm script mula sa pakete ng hello-debhelper ng Ubuntu, dahil hindi nagbago ang mga ito dahil ang seksyon na tinatawag na "Packaging From Scratch". Isusumite din namin ang mga file ng panuntunan upang masuri namin ito.

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.

Ang huling file na kailangan nating tingnan ay mga patakaran , kung saan makikita ang kapangyarihan ng mga debelper script. Ang debelper na bersyon ng mga panuntunan ay medyo mas maliit (54 mga linya kumpara sa 72 mga linya sa bersyon mula sa seksyon na tinatawag na "mga patakaran").

Mukhang ang bersyon ng debhelper :

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

pindutin ang build binary-indep: i-install # Walang mga arkitekturang independiyenteng mga file na mai-upload # na binuo ng paketeng ito. Kung mayroong anumang magiging # ginawa dito. binary-arch: i-install dh_testdir -a dh_testroot -a dh_installdocs -a NEWS 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 binary: binary-indep binary- arko .PHONY: binary binary-arch binary-indep clean checkroot

Pansinin na ang mga gawain tulad ng pagsubok kung ikaw ay nasa tamang direktoryo ( dh_testdir ), tiyakin na iyong binubuo ang pakete na may mga pribilehiyo ng root ( dh_testroot ), pag-install ng dokumentasyon ( dh_installdocs at dh_installchangelogs ), at paglilinis pagkatapos ng build ( dh_clean ) . Maraming mga pakete na mas kumplikado kaysa sa hello ay may mga panuntunan ng mga file na walang mas malaki dahil ang mga script ng debhelper ay humahawak ng karamihan sa mga gawain. Para sa isang kumpletong listahan ng mga script ng debhelper , pakitingnan ang seksyon na tinatawag na "Listahan ng mga debelper script". Sila rin ay mahusay na dokumentado sa kani-kanilang mga pahina ng tao . Ito ay isang kapaki-pakinabang na ehersisyo upang basahin ang pahina ng tao (sila ay mahusay na nakasulat at hindi mahaba) para sa bawat script ng helper na ginamit sa file na panuntunan sa itaas.