Ubuntu Paketleme Rehberi

belgeleme

Debhelper ile Paketleme


[Önemli]

Gereksinimler: "Scratch'ten Paketleme" bölümünden gelen gereksinimler ve debhelper ve dh-make

Bir paketleyici olarak, önceki bölümde yaptığımız gibi nadiren paketleri sıfırdan yaratabilirsiniz. Tahmin edebileceğiniz gibi, kural dosyasındaki birçok görev ve bilgi, paketler için yaygındır. Paketlemeyi daha kolay ve daha verimli hale getirmek için, bu görevlerle ilgili yardım için debhelper'ı kullanabilirsiniz. Debhelper, paket oluşturma sürecini otomatikleştiren bir dizi Perl komut dosyasıdır ( dh_ ile önekli ). Bu betikler ile bir Debian paketi oluşturmak oldukça basit hale gelir.

Bu örnekte, yine GNU Hello paketini kuracağız, ancak bu sefer işimizi Ubuntu hello-debhelper paketiyle karşılaştıracağız. Yine, çalışacağınız bir dizin oluşturun:

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

Ardından Ubuntu kaynak paketini edinin:

apt-get kaynağı hello-debhelper cd ..

Önceki örnekte olduğu gibi, yapmamız gereken ilk şey orijinal (yukarı akış) tarponun paketini açmaktır.

tar -xzvf merhaba-2.1.1.tar.gz

Önceki örnekte yaptığımız gibi yukarı akışlı tarball'u hello_2.1.1.orig.tar.gz'ye kopyalamak yerine, bizim için işi dh_make yapalım. Yapmanız gereken tek şey, kaynak klasörünü yeniden adlandırmaktır, bu yüzden - biçimindedir. Bu durumda, tarponun unreal'ı doğru bir şekilde adlandırılmış bir kaynak dizin oluşturur, böylece ona geçebiliriz:

cd merhaba-2.1.1

Kaynağın ilk "debianization" u oluşturmak için dh_make kullanacağız.

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

dh_make size bir dizi soru soracaktır:

Paket tipi: tek ikili, çoklu ikili, kütüphane, çekirdek modülü veya cdbs? [s / m / l / k / b] s
Bakımcının adı: Kaptan Paketleyici E-posta Adresi: packager@coolness.com Tarih: Per, 6 Nis 2006 10:07:19 -0700 Paket Ad: merhaba Sürüm: 2.1.1 Lisans: boş Paket Türü: Tek Hit to onaylayın: Gir


[Dikkat]

Sadece dh_make -e'yi bir kez çalıştırın. İlk kez yaptıktan sonra tekrar çalıştırırsanız, düzgün çalışmayacaktır. Bunu değiştirmek veya bir hata yapmak isterseniz, kaynak dizini kaldırın ve yukarı akış tarball'unu açın. Ardından kaynak dizine geçebilir ve tekrar deneyebilirsiniz.

Dh_make -e'yi çalıştırmak iki şey yapar:

Merhaba programı çok karmaşık değildir ve "Paketlemeden Paketleme" bölümünde gördüğümüz gibi, ambalajlama temel dosyalardan çok daha fazlasını gerektirmez. Bu nedenle, .ex dosyalarını kaldıralım :

cd debian rm * .ex * .EX

Merhaba , sen de değilsin

* Lisans

* Ubuntu Paketleme Rehberi Dizini

README.Debian (belirli bir Debian sorunları için README dosyası, programın README'sini değil), dirs (gerekli dizinleri oluşturmak için dh_installdirs tarafından kullanılır), dokümanlar (program belgelerini yüklemek için dh_installdocs tarafından kullanılır) veya bilgi (bilgi yüklemek için dh_installinfo tarafından kullanılır) dosya) debian dizinine dosyalar. Bu dosyalar hakkında daha fazla bilgi için "dh_make örnek dosyalar" adlı bölüme bakın.

Bu noktada, debian dizinde yalnızca değişiklik , uyumluluk , denetim , telif hakkı ve kural dosyalarının olması gerekir. "Scratch'ten Paketleme" adlı bölümden, yeni olan tek dosya, budur; bu, kullanılan debhelper sürümünü (bu durumda 4) içeren bir dosyadır.

Bu pakete, bu pakete sadece merhaba'dan ziyade hello-debhelper adını verdiğine dikkat çekmek için biraz değiştirmelisiniz:

merhaba-debhelper (2.1.1-1) dapper; aciliyet = düşük * İlk sürüm - Kaptan Paketleyici Per, 6 Nis 2006 10:07:19 -0700

Debhelper'ı kullanarak, kontrolde değiştirmek için ihtiyacımız olan tek şey, adın ( hello-debhelper için mertebenin yerine kullanılması ) ve kaynak paketi için Build-Depends alanına debhelper (> = 4.0.0) eklenmesidir. Merhaba-debhelper için Ubuntu paketi şöyle görünür:

"Scratch'ten Paketleme" adlı bölümden beri değişmediklerinden, telif hakkı dosyasını ve postinst ve prerm betiklerini Ubuntu hello-debhelper paketinden kopyalayabiliriz. Kural dosyasını da inceleyip inceleyelim.

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.

Bakmamız gereken son dosya, debhelper komut dosyalarının gücünün görülebileceği kurallardır . Kuralların debhelper sürümü biraz daha küçüktür ("kurallar" olarak adlandırılan bölümdeki versiyonda 72 satıra karşılık 54 satır).

Debhelper sürümü şöyle görünüyor:

#! / usr / bin / make -f paketi = merhaba-debhelper CC = gcc CFLAGS = -g -tüm ifeq (, $ (findstring noopt, $ (DEB_BUILD_OPTIONS))) CFLAGS + = -O2 endif #export DH_VERBOSE = 1 temiz : dh_testdir dh_clean rm -f derleme - $ (MAKE) -i dağıtım: dh_clean dh_installdirs $ (MAKE) önek = $ (CURDIR) / debian / $ (paket) / usr \ mandir = $ (CURDIR) / debian / $ (paket) / usr / share / man \ infodir = $ (CURDIR) / debian / $ (paket) / usr / share / info \ install derlemesi: ./configure --prefix = / usr $ (MAKE) CC = "$ (CC) "CFLAGS =" $ (CFLAGS) "

touch build binary-indep: install # Yüklenecek mimariden bağımsız dosya yok # bu paket tarafından üretildi. Varsa, burada # yapılır. binary-arch: 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 ikili: binary-indep ikili- Arch .PHONY: ikili ikili-kemer ikili-bağımsız temiz checkroot

Doğru dizindeyseniz ( dh_testdir ) test etme, root ayrıcalıklarıyla ( dh_testroot ) paket oluşturduğunuzdan, belgeleri ( dh_installdocs ve dh_installchangelogs ) yüklediğinizden ve derleme ( dh_clean ) otomatik olarak işlendikten sonra temizlik yaptığınızdan emin olun. . Merhaba'dan çok daha karmaşık olan paketler, daha büyük olmayan kural dosyalarına sahiptir, çünkü debhelper komut dosyaları çoğu görevi üstlenir. Debshelper komut dosyalarının tam listesi için lütfen " Debhelper scriptlerinin listesi" bölümüne bakınız. Onlar da kendi adam sayfalarında iyi belgelenmiştir. Yukarıdaki kural dosyasında kullanılan her bir yardımcı komut dosyası için man sayfasını (iyi yazılmış ve uzun değil) okumak için yararlı bir alıştırmadır.