Skip to main content

Panduan Pembungkusan Ubuntu - Pembungkusan dengan Debhelper

The Case of the White Kitten / Portrait of London / Star Boy (April 2025)

The Case of the White Kitten / Portrait of London / Star Boy (April 2025)
Anonim

Pembungkusan dengan Debhelper

Penting

Keperluan: Keperluan dari seksyen yang disebut "Pembungkus Dari Gores" ditambah debhelper dan dh-make

Sebagai pembungkus, anda jarang akan membuat pakej dari awal seperti yang telah kami lakukan di bahagian sebelumnya. Seperti yang anda bayangkan, banyak tugas dan maklumat di dalam peraturan fail, misalnya, adalah perkara biasa untuk pakej. Untuk membuat pembungkusan lebih mudah dan lebih cekap, anda boleh menggunakannya debhelper untuk membantu tugas-tugas ini. Debhelper adalah satu set skrip Perl (yang diawali dengan dh_) yang mengautomasikan proses pembungkusan pakej. Dengan skrip ini, membina pakej Debian menjadi agak mudah.

Dalam contoh ini, kami akan membina semula pakej Hello Hello, tetapi kali ini kami akan membandingkan kerja kami dengan Ubuntu hello-debhelper pakej. Sekali lagi, buat direktori di mana anda akan berfungsi:

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

Kemudian, dapatkan pakej sumber Ubuntu:

apt-get source hello-debhelper cd ..

Seperti contoh terdahulu, perkara pertama yang perlu kita lakukan adalah membongkar tarball asal (hulu).

tar -xzvf hello-2.1.1.tar.gz

Daripada menyalin tarball hulu ke hello_2.1.1.orig.tar.gz seperti yang kita lakukan dalam contoh terdahulu, kita akan membiarkan dh_make buat kerja untuk kami. Satu-satunya perkara yang perlu anda lakukan ialah menamakan semula folder sumber supaya ia adalah dalam bentuk - di mana packagename adalah huruf kecil. Dalam kes ini, hanya untul tarball menghasilkan direktori sumber yang diberi nama dengan betul supaya kami dapat memindahkannya:

cd hello-2.1.1

Untuk membuat "pembubaran" permulaan sumber yang akan kami gunakan dh_make.

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

dh_make kemudian akan bertanya kepada anda beberapa soalan:

Jenis pakej: biner tunggal, berbilang binari, perpustakaan, modul kernel atau cdbs? s / m / l / k / b s Nama pengemaskin: Kapten Packager Alamat Email: [email protected] Tarikh: Thu, 6 Apr 2006 10:07:19 -0700 Nama Pakej: hello Versi: 2.1.1 Lesen: kosong Jenis Pakej: Single Hit untuk mengesahkan: Masukkan

Awas

Hanya berlari dh_make -e sekali. Jika anda menjalankannya semula selepas anda melakukannya buat kali pertama, ia tidak berfungsi dengan betul. Sekiranya anda ingin mengubahnya atau membuat kesalahan, keluarkan direktori sumber dan untar semula tarball hulu. Kemudian anda boleh berhijrah ke direktori sumber dan cuba lagi.

Berjalan dh_make -e melakukan dua perkara:

  • Mencipta hello_2.1.1.orig.tar.gz fail dalam direktori induk,
  • Mencipta fail asas yang diperlukan dalam debian / dan banyak fail template (.ex) yang mungkin diperlukan.

The Hello program tidak begitu rumit, dan seperti yang kita lihat di bahagian yang dipanggil "Pembungkusan Dari Gores", pembungkusan itu tidak memerlukan lebih banyak daripada fail asas. Oleh itu, mari kita keluarkan .ex fail:

cd debian rm * .ex * .EX

Untuk hello, anda juga tidak akan

* Lesen

* Indeks Panduan Pembungkusan Ubuntu

keperluan README.Debian (Fail README untuk isu Debian tertentu, bukan program README), dirs (digunakan oleh dh_installdirs untuk membuat direktori yang diperlukan), dokumen (digunakan oleh dh_installdocs untuk memasang dokumentasi program), atau info (digunakan oleh dh_installinfo untuk memasang fail info) ke dalam debian direktori. Untuk maklumat lanjut mengenai fail ini, lihat bahagian yang dipanggil "contoh fail dh_make".

Pada ketika ini, anda hanya perlu changelog, compat, kawalan, hak cipta, dan peraturan fail dalam debian direktori. Daripada bahagian yang dipanggil "Pembungkusan Dari Gores", satu-satunya fail yang baru adalah compat, yang merupakan fail yang mengandungi debhelper versi (dalam kes ini 4) yang digunakan.

Anda perlu menyesuaikan changelogsedikit dalam kes ini untuk menunjukkan bahawa pakej ini dinamakan hello-debhelper bukan sahaja hello:

hello-debhelper (2.1.1-1) dapper; urgensi = rendah * Pelepasan awal - Kapten Packager Thu, 6 Apr 2006 10:07:19 -0700

Dengan menggunakan debhelper, satu-satunya perkara yang perlu kita ubah kawalan adalah nama (menggantikan hello untuk hello-debhelper) dan menambah debhelper (> = 4.0.0) kepada Membina-Bergantung bidang untuk pakej sumber. Pakej Ubuntu untuk hello-debhelper kelihatan seperti:

Sumber: hello-debhelper Seksyen: devel Priority: extra Maintainer: Packitan Packager Standard-Version: 3.6.1 Build-Depends: debhelper (> = 4) Package: hello-debhelper Architecture: any Depends: $ {shlibs: Depends} Conflicts: hello Provides: hello Replaces: hello Description: contoh yang baik Program hello GNU menghasilkan sambutan yang mesra dan mesra. Ia membolehkan bukan pengaturcara menggunakan alat sains komputer klasik yang sebaliknya akan tidak tersedia kepada mereka. . Serius, walaupun: ini adalah contoh bagaimana melakukan pakej Debian. Ia adalah versi Debian dari program 'halo dunia' Projek GNU (yang merupakan contoh untuk Projek GNU). . Ini adalah sama dengan pakej hello, kecuali ia menggunakan debhelper untuk membuat deb. Sila lihat debelper tentang apa itu.

Kita boleh menyalin hak cipta fail dan postinst dan prerm skrip dari Ubuntu hello-debhelper pakej, kerana ia tidak berubah sejak seksyen yang dipanggil "Pembungkusan Dari Gores". Kami juga akan menyalin peraturan fail supaya kami dapat memeriksanya.

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.

Fail terakhir yang perlu kita lihat ialah peraturan, di mana kuasa debhelper skrip boleh dilihat. The debhelper versi peraturan agak kecil (54 baris berbanding dengan 72 baris dalam versi dari seksyen yang dipanggil "peraturan").

The debhelper versi kelihatan seperti:

#! / usr / bin / make -f package = 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 install: build dh_clean dh_installdirs $ prefix = $ (CURDIR) / debian / $ (package) / usr mandir = $ (CURDIR) / debian / / package / man infodir = $ (CURDIR) / debian / $ (pakej) / usr / share / info install build: ./configure --prefix = / usr $ (MAKE) CC = "$ (CC) "CFLAGS =" $ (CFLAGS) "

sentuhan membina binari-indep: pasang # Tidak ada fail-bebas yang tidak boleh dibina untuk dimuat naik # yang dihasilkan oleh pakej ini. Jika ada apa-apa mereka akan # dibuat di sini. binary-arch: 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- gerbang .PHONY: binary-arch binary-indep checkroot bersih

Perhatikan bahawa tugas-tugas seperti ujian jika anda berada di direktori yang betul (dh_testdir), pastikan anda membina pakej dengan keistimewaan root (dh_testroot), memasang dokumentasi (dh_installdocs dan dh_installchangelogs), dan membersihkan selepas membina (dh_clean) dikendalikan secara automatik. Banyak pakej yang lebih rumit daripada hello mempunyai peraturan fail tidak lebih besar kerana debhelper skrip mengendalikan kebanyakan tugas. Untuk senarai lengkap debhelper skrip, sila lihat bahagian yang dipanggil "Senarai debhelper skrip. "Mereka juga didokumenkan dengan baik di dalam masing-masing lelaki halaman. Ia adalah latihan berguna untuk membaca halaman lelaki (mereka ditulis dengan baik dan tidak panjang) untuk setiap skrip penolong yang digunakan di atas peraturan fail.