Skip to main content

Panduan Pengemasan Ubuntu - Kemasan dengan Debhelper

Panduan pengepakan sepeda motor untuk pengiriman (Februari 2025)

Panduan pengepakan sepeda motor untuk pengiriman (Februari 2025)
Anonim

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 di aturan file, misalnya, umum untuk paket. Untuk membuat kemasan lebih mudah dan lebih efisien, Anda dapat menggunakan debhelper untuk membantu tugas-tugas ini. Debhelper adalah satu set skrip Perl (diawali dengan dh_) yang mengotomatiskan proses pembangunan paket. Dengan skrip ini, membangun paket Debian menjadi sangat sederhana.

Dalam contoh ini, kami akan kembali membangun paket GNU Hello, tetapi kali ini kami akan membandingkan pekerjaan kami dengan Ubuntu hello-debhelper paket. 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

Daripada menyalin tarball upstream ke hello_2.1.1.orig.tar.gz seperti yang kami lakukan pada contoh sebelumnya, kami akan membiarkannya dh_make lakukan 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 "debianization" awal dari sumber yang akan kita gunakan 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-Alamat: [email protected] Tanggal: Kamis, 6 April 2006 10:07:19 -0700 Nama Paket: hello Versi: 2.1.1 Lisensi: kosong Jenis Paket: Satu Hit untuk mengkonfirmasi: Memasukkan

Peringatan

Hanya berlari 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.

Lari dh_make -e melakukan dua hal:

  • Menciptakan hello_2.1.1.orig.tar.gz file di direktori induk,
  • Menciptakan file-file dasar yang dibutuhkan di debian / dan banyak file template (.ex) yang mungkin diperlukan.

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

cd debian rm * .ex * .EX

Untuk Halo, Anda juga tidak akan

* Lisensi

* Indeks Panduan Pengemasan Ubuntu

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

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

Anda harus menyesuaikan changelogsedikit dalam hal ini untuk mencerminkan bahwa paket ini diberi nama hello-debhelper bukan hanya Halo:

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

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

Sumber: hello-debhelper Bagian: devel Prioritas: extra Maintainer: Capitan Packager Versi-Standar: 3.6.1 Build-Depends: debhelper (> = 4) Paket: hello-debhelper Architecture: any Depends: $ {shlibs: Depends} Konflik: hello Menyediakan: hello Menggantikan: hello Keterangan: Salam klasik, dan contoh yang baik Program Halo GNU menghasilkan sapaan akrab yang akrab. Hal ini memungkinkan non-programmer untuk menggunakan alat ilmu komputer klasik yang seharusnya tidak tersedia untuk mereka. . Serius, meskipun: ini adalah contoh bagaimana melakukan paket Debian. Ini adalah versi Debian dari program 'hello world' proyek GNU (yang merupakan contoh untuk Proyek GNU). . Ini sama dengan paket halo, kecuali menggunakan debhelper untuk membuat deb. Silakan lihat debhelper seperti apa itu.

Kami dapat menyalin hak cipta file dan postingan dan prerm skrip dari Ubuntu hello-debhelper paket, karena mereka tidak berubah sejak bagian yang disebut "Kemasan Dari Awal". Kami juga akan menyalin aturan file 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 debhelper skrip bisa dilihat. Itu debhelper versi dari aturan agak lebih kecil (54 baris dibandingkan dengan 72 baris dalam versi dari bagian yang disebut "aturan").

Itu debhelper versi 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-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 membangun (dh_clean) ditangani secara otomatis. Banyak paket yang jauh lebih rumit daripada Halo memiliki aturan file tidak lebih besar karena debhelper skrip menangani sebagian besar tugas. Untuk daftar lengkap debhelper skrip, silakan lihat bagian yang disebut "Daftar debhelper skrip ". Mereka juga didokumentasikan dengan baik di masing-masing pria halaman. Ini adalah latihan yang berguna untuk membaca halaman manual (ditulis dengan baik dan tidak panjang) untuk setiap skrip pembantu yang digunakan di atas aturan mengajukan.