Debian

Cara Pembuatan Paket Debian

Cara Pembuatan Paket Debian

1. Kata pengantar

Bertanggung jawab atas mesin berarti merawat perangkat keras serta komponen perangkat lunak. Seperti yang terlihat dalam kehidupan sehari-hari sebagai administrator sistem, lebih baik menginstal perangkat lunak sebagai paket perangkat lunak daripada sekumpulan file sumber. Ini mengurangi biaya untuk memelihara sistem dengan benar.

Paket yang tersedia dari distributor pilihan Anda divalidasi dan diawasi oleh pengelola paket. Dia menguji perangkat lunak, dan memastikan bahwa itu cocok dengan paket perangkat lunak lain yang tersedia di distribusi. Selanjutnya, paket tersebut ditandatangani dengan kunci GPG dari pengelola paket. Ini menjamin integritas paket dan menunjukkan kepada Anda bahwa paket tersebut berasal dari sumber tepercaya.

Format paket tergantung pada distribusi Linux Anda. Format yang dipilih adalah sebagai berikut:

deb

Paket yang digunakan di: Debian GNU/Linux, Ubuntu,Armbian,Linux Mint, Knoppix

rpm

Paket yang digunakan di: RedHat, Fedora, CentOS,  OpenSuse

tgz dan txz

Paket yang digunakan dalam: Slackware

ter.xz

Paket yang digunakan di: Arch Linux

Dokumen ini menjelaskan cara membangun paket untuk Debian GNU/Linux secara singkat. Untuk informasi rinci tentang format paket Debian dan alat untuk memelihara sistem Linux berbasis 'deb', Anda dapat melihat ke Buku Manajemen Paket Debian [dpmb] Untuk membuat paket untuk Debian GNU/Linux, dokumen-dokumen ini penting:

Paket yang akan kami kerjakan bernama 'helloworld' dan memiliki nomor versi 0.1. Untuk tujuan demonstrasi, itu hanya berisi satu skrip Python yang menampilkan pesan terkenal "Halo, dunia"!”:

#!/usr/bin/python print ("Halo, dunia!") 

2. Persyaratan

2.1. kunci GPG

Sebagai langkah 1, siapkan kunci GPG Anda. Nantinya, kunci akan dibutuhkan untuk menandatangani paket. Ingatlah bahwa paket yang tidak ditandatangani tidak dapat dipercaya dan tidak dapat menjadi bagian dari alam semesta Debian.

Jika Anda belum memiliki kunci GPG, buatlah. Anda dapat mengikuti tiga langkah di bawah ini. Perintah pertama menghasilkan kunci baru, yang kedua mengekspor kunci baru Anda ke file terpisah, dan yang ketiga menambahkan kunci ke keyring pribadi Anda.

$ gpg --gen-key $ gpg -a --output ~/.gnupg/NAMA_ANDA.gpg --ekspor 'NAMA ANDA' $ gpg --import ~/.gnupg/NAMA_ANDA.gpg 

Selama pembuatan pastikan bahwa nama yang diberikan _NAMA ANDA_ benar. Adalah umum untuk menggunakan kombinasi nama depan dan nama belakang. Nama ini harus sama persis di dalam paket, kemudian, saat membuat file 'kontrol' dari paket Debian. Untuk informasi lebih lanjut mengenai GPG, lihat Buku Pegangan Privasi GNU [gph].

2.2. Rantai alat pengemasan

Untuk membangun paket Debian dengan kode sumber, paket perangkat lunak berikut diperlukan di sistem Anda:

Sebagai pengguna 'root' Anda dapat menginstal ini menggunakan perintah berikut:

# apt-get install build-essential autoconf automake autotools-dev dh-make debhelper devscripts fakeroot xutils lintian pbuilder 

2.3. Siapkan perangkat lunak yang akan dikemas

Kita harus menyiapkan direktori untuk membangun paket. Buat direktori untuk menyiapkan lingkungan di mana kita akan membangun paket:

$ mkdir -p ~./build/helloworld/0.1 

Salin 'tar.arsip terkompresi gz di direktori:

$cp helloworld-0.1.ter.gz ~./build/helloworld/0.1 

Ubah ke direktori, dan ekstrak paket:

$cd ~./build/helloworld/0.1 ~/build/helloworld/0.1$ tar -xzf helloworld-0.1.ter.gz 

Sekarang, direktori berisi kode sumber di direktori terpisah, dan arsip terkompresi:

~/build/helloworld/0.$1 ls helloworld-0.1 halo dunia-0.1.ter.gz 

3. Debianisasi

Pada titik ini kami akan menambahkan file yang khusus untuk paket Debian. Itu sebabnya langkah ini diberi nama _Debianization_ dari perangkat lunak. Ini dilakukan dalam beberapa langkah tunggal.

3.1 Siapkan struktur paket

Ubah ke direktori yang menyimpan seluruh kode sumber paket. Dalam contoh kami paket berisi file 'helloworld.py', hanya:

~$ cd build/helloworld/0.1/halo dunia-0.1 ~/build/helloworld/0.1/halo dunia-0.1$ ls helloworld.py 

Mari tambahkan file yang khusus untuk paket Debian. Alat 'dh_make' ikut bermain. Sakelar '-e' menggunakan alamat yang diberikan sebagai alamat email di bidang 'Pengelola' dari file 'debian/kontrol'. Membangun paket menggunakan alamat email Anda sendiri, sebagai gantinya. Ingatlah untuk menggunakan alamat email yang sama yang sesuai dengan kunci GPG Anda.

Sakelar '-f' menggunakan file yang diberikan sebagai arsip sumber asli, dan melewatkan penyalinan pohon program saat ini ke 'program.asal'.

~/build/helloworld/0.1/halo dunia-0.1$ dh_make -e [dilindungi email] -f… /helloworld-0.1.ter.gz 

Pada prompt Anda diminta untuk memilih jenis paket yang harus dibuat. Untuk memilih _single binary_ ketik 's'.

Jenis paket: biner tunggal, biner indep, biner ganda, perpustakaan, modul kernel, patch kernel? [s/i/m/l/k/n] s Nama pengelola : Frank Hofmann Alamat Email : [dilindungi email] Tanggal : Sab, 04 Nov 2017 21:16:13 +0100 Nama Paket : helloworld Versi : 0.1 Lisensi : kosong Jenis Paket : Single Hit  untuk mengonfirmasi: Saat ini tidak ada Makefile tingkat atas. Ini mungkin memerlukan penyetelan tambahan. Selesai. Silakan edit file di subdirektori debian/ sekarang. Anda juga harus memeriksa apakah helloworld Makefiles diinstal ke $DESTDIR dan bukan di / . 

Ini menghasilkan direktori bernama 'debian':

~/build/helloworld/0.1/halo dunia-0.1$ ls debian helloworld.py 

Direktori ini berisi semua file khusus paket.

3.2. Sesuaikan file kontrol

File 'debian/control' menyimpan dependensi yang diperlukan _untuk membangun_ paket. Menggunakan perintah  'dpkg-depcheck -d ./configure' Anda menerima daftar dengan semua paket yang diperlukan. Dalam kasus kami, tidak ada paket lebih lanjut yang diperlukan karena Python adalah bahasa yang ditafsirkan.

Selanjutnya, kita harus mengedit file 'debian/control' dan menambahkan nilai khusus paket. Untuk contoh kita terlihat sebagai berikut:

Sumber: helloworld Bagian: python Prioritas: opsional Pengelola: Frank Hofmann <[email protected]> Build-Tergantung: debhelper (>= 9) Versi Standar: 3.9.5 Beranda: http://www.efho.de/ #Vcs-Git: git://anonscm.debian.org/collab-maint/helloworld.git #Vcs-Browser: http://anonscm.debian.organisasi/?p=collab-maint/helloworld.git;a=summary Paket: helloworld Arsitektur: any Depends: $shlibs:Depends, $misc:Depends, python Deskripsi: Mencetak Hello World dengan Python Mencetak Hello World dengan Python 

3.3. Sesuaikan file hak cipta

File 'debian/copyright' berisi informasi lisensi untuk paket perangkat lunak. Ini disiapkan untuk rilis melalui GNU Public License 2 (GPLv2). Untuk contoh kita terlihat sebagai berikut:

Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Nama: helloworld Sumber: http://www.efho.de/ Berkas: debian/* Hak Cipta: 2017 Frank Hofmann <[email protected]> Lisensi: GPL-2+ Paket ini adalah perangkat lunak gratis; Anda dapat mendistribusikan ulang dan/atau memodifikasinya di bawah ketentuan Lisensi Publik Umum GNU yang diterbitkan oleh Free Software Foundation; baik versi 2 dari Lisensi, atau (sesuai pilihan Anda) versi yang lebih baru… Paket ini didistribusikan dengan harapan akan berguna, tetapi TANPA JAMINAN APAPUN; bahkan tanpa jaminan tersirat tentang KELAYAKAN DIPERDAGANGKAN atau KESESUAIAN UNTUK TUJUAN TERTENTU. Lihat GNU General Public License untuk lebih jelasnya… Anda seharusnya telah menerima salinan GNU General Public License bersama dengan program ini. Jika tidak, lihat  . Pada sistem Debian, teks lengkap dari GNU General Public License versi 2 dapat ditemukan di "/usr/share/common-licenses/GPL-2". 

3.4. Sesuaikan file changelog

Setelah informasi hak cipta, file 'debian/changelog' harus disesuaikan. Dalam contoh kami, kami menambahkan informasi "Rilis awal".

halo dunia (0.1-1) tidak stabil; urgensi=rendah * Rilis awal -- Frank Hofmann <[email protected]> Sab, 04 Nov 2017 21:16:13 +0100 

Hanya itu yang kami butuhkan sejauh ini - sekarang kami dapat membuat paket, akhirnya.


4. Bangun paketnya

Untuk membangun paket, kita harus naik satu direktori dan menjalankan perintah berikut:

~/build/helloworld/0.1/halo dunia-0.1$ dpkg-buildpackage -rfakeroot

Opsi '-rfakeroot' memungkinkan 'dpkg-buildpackage' untuk menjalankan perintah sebagai pengguna istimewa dengan bantuan perintah 'fakeroot'. Ini diperlukan untuk menyiapkan paket, dan untuk membuat file dan direktori.
Perintah di atas menghasilkan daftar pesan keluaran yang lebih panjang (ditampilkan di sini dalam lingkungan bahasa Jerman):

dpkg-buildpackage: Quellpaket helloworld dpkg-buildpackage: Quellpaket helloworld dpkg-buildpackage: Quellversion 0.1-1 dpkg-buildpackage: Quelldistribution stable dpkg-buildpackage: Quellen geändert durch Frank Hofmann <[email protected]> dpkg-buildpackage: Host-Architektur amd64 dpkg-source --before-build helloworld-0.1 fakeroot debian/rules clean dh clean dh_testdir dh_auto_clean dh_clean dpkg-source -b helloworld-0.1 dpkg-sumber: Informasi: Quellformat "3.0 (quilt)" wird verwendet dpkg-sumber: Informasi: helloworld wird unter Benutzung des existierenden ./helloworld_0.1.asal.ter.gz gebaut dpkg-sumber: Informasi: helloworld wird di helloworld_0.1-1.debian.ter.xz gebaut dpkg-sumber: Informasi: helloworld wird di helloworld_0.1-1.dsc gebaut debian / rules build dh membangun dh_testdir dh_auto_configure dh_auto_build dh_auto_test fakeroot debian / aturan biner dh biner dh_testroot dh_prep dh_auto_install dh_instaldocs dh_instalchangelogs dh_perl dh_link dh_compress dh_fixperms dh_strip dh_makeshlibs dh_shlibdeps dh_installdeb dh_gencontrol dpkg-gencontrol: Warnung: Feld Depends von Paket helloworld: unbekannte Substitutionsvariable $ shlibs :Tergantung dh_md5sums dh_builddeb dpkg-deb: Paket "helloworld" wird di "… /helloworld_0.1-1_amd64.deb" gebaut. dpkg-genchanges <… /helloworld_0.1-1_amd64.changes dpkg-genchanges: kompletter Quellcode beim Hochladen hinzufügen dpkg-source --after-build helloworld-0.1 dpkg-buildpackage: Alles hochzuladen (Originalquellen enthalten) signfile helloworld_0.1-1.dsc Sie benötigen eine Passphrase, um den geheimen Schlüssel zu entsperren. Benutzer: "Frank Hofmann (Hofmann EDV) <[email protected]> " 4096-Bit RSA Schlüssel, ID D431AC07, erzeugt 2014-09-05 

4.1. Memvalidasi paket

Selamat - Anda berhasil membangun paket Debian - ya! Sekarang, mari kita lihat lebih dekat paketnya. Di sini, 'lintian' ikut bermain. Alat ini memvalidasi paket Anda untuk menemukan pelanggaran terhadap aturan ketat yang harus dipenuhi oleh paket Debian.

Untuk menjalankan tes ketik perintah berikut:

lintian helloworld_0.1-1_amd64.deb 

Alat ini tidak menemukan pelanggaran aturan tetapi juga kesalahan ejaan, dan karakter yang salah. Tombol '-pedantic' meminta 'lintian' menjadi lebih kritis dari biasanya. Seperti yang Anda lihat di bawah 'lintian' sedikit pemarah dan telah menemukan tiga peringatan, dan satu kesalahan.

Kecuali peringatan pertama kita dapat dengan mudah membuat 'lintian' senang dan menyesuaikan isi paket sesuai dengan aturan yang ditetapkan. Peringatan 'new-package-should-close-itp-bug' berarti tidak ada laporan bug terhadap paket ITP (ITP berarti _dimaksudkan untuk paket_). Untuk paket Debian biasa, laporan bug harus dikirim ke pelacak bug untuk paket ITP untuk memberi tahu orang lain bahwa Anda berniat untuk mulai mengemas perangkat lunak ini.

4.2. Peringatan: 'readme-debian-contains-debmake-template

File 'README.Debian' dimaksudkan untuk menyimpan catatan tambahan mengenai paket ini. 'dh_make' membuat file ini untuk kita:

helloworld untuk Debian ---------------------  -- Frank Hofmann <[email protected]> Sab, 04 Nov 2017 21:16:13 +0100 

Dalam contoh kami, kami tidak memiliki informasi tambahan, jadi kami dapat menghapus file.

4.3. Peringatan: 'deskripsi-dimulai-dengan-spasi-terkemuka'

Peringatan ini dimunculkan karena deskripsi paket kita yang lebih panjang di file 'debian/control' dimulai dengan lebih dari satu spasi. Segera setelah kami menghapus satu spasi, peringatan akan hilang.

4.4. Kesalahan: 'deskripsi-sinopsis-digandakan'

Setiap paket membutuhkan deskripsi singkat dan deskripsi yang lebih panjang di 'debian/control'. Kesalahan ini dimunculkan karena kedua deskripsi identik. Segera setelah kami memperpanjang deskripsi yang lebih panjang, kesalahannya hilang.


5. Tautan dan Referensi

- [ddr] Andreas Barth, Adam Di Carlo, Raphaël Hertzog, Lucas Nussbaum, Christian Schwarz, Ian Jackson: Referensi Pengembang Debian
- [dnmg] Josip Rodin, Osamu Aoki: Panduan Pengelola Baru Debian
- [dpmb] Axel Beckert, Frank Hofmann: Buku Manajemen Paket Debian
- [dpm] Manual Kebijakan Debian
- [dpt] Tutorial Pengemasan Debian
- [gph] Buku Pegangan Privasi GNU
- [lushpaiPackage] Alex Lushpai: Cara membuat paket debian dari sumber


6. Ucapan Terima Kasih

Penulis mengucapkan terima kasih kepada Axel Beckert dan Gerold Rupprecht atas dukungan, dan kritiknya selama penyusunan artikel ini.

Game Remaster HD untuk Linux yang Belum Pernah Rilis Linux Sebelumnya
Banyak pengembang dan penerbit game datang dengan remaster HD dari game lama untuk memperpanjang umur waralaba, harap penggemar meminta kompatibilitas...
Cara Menggunakan AutoKey untuk Mengotomatiskan Game Linux
AutoKey adalah utilitas otomatisasi desktop untuk Linux dan X11, diprogram dengan Python 3, GTK dan Qt. Dengan menggunakan skrip dan fungsionalitas MA...
Cara Menampilkan Penghitung FPS di Game Linux
Game Linux mendapat dorongan besar ketika Valve mengumumkan dukungan Linux untuk klien Steam dan game mereka pada tahun 2012. Sejak itu, banyak game A...