Panduan Pengemasan Ubuntu

Dokumentasi

Kemasan dengan Debhelper


[Penting]

Persyaratan: Persyaratan dari bagian yang disebut "Kemasan Dari Awal" ditambah debhelper dan dh-make

Sebagai pembuat paket, Anda jarang akan membuat paket dari awal seperti yang telah kami lakukan di bagian sebelumnya. Seperti yang dapat Anda bayangkan, banyak tugas dan informasi dalam file aturan , misalnya, umum untuk paket. Untuk membuat pengemasan lebih mudah dan lebih efisien, Anda dapat menggunakan debhelper untuk membantu tugas-tugas ini. Debhelper adalah seperangkat skrip Perl (diawali dengan dh_ ) yang mengotomatiskan proses pembangunan paket. Dengan skrip ini, membangun paket Debian menjadi sangat sederhana.

Dalam contoh ini, kita akan kembali membangun paket GNU Hello, tetapi kali ini kita akan membandingkan pekerjaan kita dengan paket hello-debhelper Ubuntu. Sekali lagi, buat direktori tempat Anda akan bekerja:

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 paket source Ubuntu:

apt-get source hello-debhelper cd ..

Seperti contoh sebelumnya, hal pertama yang perlu kita lakukan adalah membongkar tarbal asli (upstream).

tar -xzvf hello-2.1.1.tar.gz

Alih-alih menyalin tarball upstream ke hello_2.1.1.orig.tar.gz seperti yang kita lakukan pada contoh sebelumnya, kita akan membiarkan dh_make melakukan pekerjaan untuk kita. Satu-satunya hal yang harus Anda lakukan adalah mengubah nama folder sumber sehingga dalam bentuk - di mana nama paket adalah huruf kecil. Dalam hal ini, cukup batalkan tarball yang menghasilkan direktori sumber yang bernama dengan benar sehingga kita dapat pindah ke dalamnya:

cd hello-2.1.1

Untuk membuat "debianisasi" awal dari sumber, kita akan menggunakan dh_make .

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

dh_make kemudian akan mengajukan serangkaian pertanyaan:

Jenis paket: biner tunggal, beberapa biner, pustaka, modul kernel atau cdbs? [s / m / l / k / b] s
Nama Maintainer: Captain Packager Email-Address: packager@coolness.com Tanggal: Kamis, 6 April 2006 10:07:19 -0700 Nama Paket: hello Versi: 2.1.1 Lisensi: kosong Jenis Paket: Single Hit ke konfirmasi: Masukkan


[Peringatan]

Hanya jalankan dh_make -e sekali. Jika Anda menjalankannya lagi setelah Anda melakukannya pertama kali, itu tidak akan berfungsi dengan baik. Jika Anda ingin mengubahnya atau membuat kesalahan, hapus direktori sumber dan untar tarbal hulu lagi. Kemudian Anda dapat bermigrasi ke direktori sumber dan coba lagi.

Menjalankan dh_make -e melakukan dua hal:

Program Hello tidak terlalu rumit, dan seperti yang telah kita lihat di bagian yang disebut "Packaging From Scratch", pengemasannya tidak memerlukan lebih dari file dasar. Oleh karena itu, mari kita hapus file .ex :

cd debian rm * .ex * .EX

Untuk halo , Anda juga tidak

* Lisensi

* Indeks Panduan Pembungkusan Ubuntu

perlu README.Debian (file README untuk masalah-masalah khusus Debian, bukan README program), dirs (digunakan oleh dh_installdirs untuk membuat direktori yang diperlukan), dokumen (digunakan oleh dh_installdocs untuk menginstal dokumentasi program), atau info (digunakan oleh dh_installinfo untuk menginstal info file) file ke direktori debian . Untuk informasi lebih lanjut tentang file-file ini, lihat bagian yang disebut "dh_make file contoh".

Pada titik ini, Anda seharusnya hanya memiliki file changelog , compat , kontrol , hak cipta , dan aturan di direktori debian . Dari bagian yang disebut "Packaging From Scratch", satu-satunya file yang baru adalah compat , yang merupakan file yang berisi versi debhelper (dalam hal ini 4) yang digunakan.

Anda perlu menyesuaikan changelog sedikit dalam kasus ini untuk mencerminkan bahwa paket ini diberi nama hello-debhelper bukan hanya hello :

hello-debhelper (2.1.1-1) necis; urgensi = rendah * Rilis awal - Captain Packager Kamis, 6 April 2006 10:07:19 -0700

Dengan menggunakan debhelper , satu-satunya hal yang perlu kita ubah dalam kontrol adalah nama (mengganti halo untuk hello-debhelper ) dan menambahkan debhelper (> = 4.0.0) ke bidang Build-Depends untuk paket sumber. Paket Ubuntu untuk hello-debhelper terlihat seperti:

Kita dapat menyalin file hak cipta dan skrip postingan dan prapembayaran dari paket hello-debhelper Ubuntu, karena mereka tidak berubah sejak bagian yang disebut "Kemasan Dari Awal". Kami juga akan menyalin file aturan sehingga 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.

File terakhir yang perlu kita lihat adalah aturan , di mana kekuatan skrip debhelper dapat dilihat. Versi debhelper aturan agak lebih kecil (54 baris dibandingkan dengan 72 baris dalam versi dari bagian yang disebut "aturan").

Versi debhelper terlihat seperti:

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

sentuh build binary-indep: install # Tidak ada file arsitektur-independen yang akan diunggah # yang dihasilkan oleh paket ini. Jika ada 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- arch .PHONY: binary-arch binary-indep clean checkroot

Perhatikan bahwa tugas seperti pengujian jika Anda berada di direktori yang benar ( dh_testdir ), pastikan Anda sedang membangun paket dengan hak akses root ( dh_testroot ), menginstal dokumentasi ( dh_installdocs dan dh_installchangelogs ), dan membersihkan setelah build ( dh_clean ) ditangani secara otomatis . Banyak paket yang jauh lebih rumit daripada hello memiliki file aturan tidak lebih besar karena skrip debhelper menangani sebagian besar tugas. Untuk daftar lengkap skrip debhelper , silakan lihat bagian yang disebut "Daftar skrip debhelper ". Mereka juga didokumentasikan dengan baik di halaman manual masing-masing. Ini adalah latihan yang berguna untuk membaca halaman manual (ditulis dengan baik dan tidak panjang) untuk setiap skrip pembantu yang digunakan dalam file aturan di atas.