Debian

Pembuatan Pakej Debian HowTo

Pembuatan Pakej Debian HowTo

1. Kata Pengantar

Bertanggungjawab terhadap mesin bermaksud menjaga perkakasan dan juga komponen perisian. Seperti yang dilihat dalam kehidupan seharian sebagai pentadbir sistem, lebih baik memasang perisian sebagai pakej perisian daripada sekumpulan fail sumber. Ini mengurangkan kos untuk menjaga sistem dengan betul.

Pakej yang tersedia dari pengedar pilihan anda disahkan dan diawasi oleh penyelenggara pakej. Dia menguji perisian, dan memastikan bahawa ia sesuai dengan pakej perisian lain yang tersedia dalam pengedaran. Selanjutnya, pakej ditandatangani dengan kunci GPG dari penyelenggara pakej. Ini menjamin integriti pakej dan menunjukkan kepada anda bahawa pakej itu berasal dari sumber yang dipercayai.

Format pakej bergantung pada sebaran Linux anda. Format yang dipilih adalah seperti berikut:

deb

Pakej yang digunakan dalam: Debian GNU / Linux, Ubuntu, Armbian, Linux Mint, Knoppix

rpm

Pakej yang digunakan dalam: RedHat, Fedora, CentOS, OpenSuse

tgz dan txz

Pakej yang digunakan dalam: Slackware

tar.xz

Pakej yang digunakan dalam: Arch Linux

Dokumen ini menerangkan cara membina pakej untuk Debian GNU / Linux secara ringkas. Untuk maklumat terperinci mengenai format pakej Debian dan alat untuk mengekalkan sistem Linux berdasarkan 'deb', anda mungkin melihat Buku Pengurusan Pakej Debian [dpmb] Untuk membina pakej untuk Debian GNU / Linux, dokumen-dokumen ini penting:

Pakej yang akan kami bekerjasama diberi nama 'helloworld' dan mempunyai nombor versi 0.1. Untuk tujuan demonstrasi, ia hanya mengandungi satu skrip Python yang mengeluarkan mesej terkenal "Hello, world!":

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

2. Keperluan

2.1. Kunci GPG

Sebagai langkah 1, sediakan kunci GPG anda. Kemudian, kunci akan diperlukan untuk menandatangani pakej. Perlu diingat bahawa pakej yang tidak ditandatangani tidak boleh dipercayai dan tidak boleh menjadi sebahagian daripada alam semesta Debian.

Sekiranya anda belum mempunyai kunci GPG, buatlah kunci. Anda boleh mengikuti tiga langkah di bawah. Perintah pertama menghasilkan kunci baru, yang kedua mengeksport kunci baru anda ke fail yang berasingan, dan yang ketiga menambahkan kunci pada kunci peribadi anda.

$ gpg --gen-key $ gpg -a --output ~ /.gnupg / YOUR_NAME.gpg --eksport 'NAMA ANDA' $ gpg --import ~ /.gnupg / YOUR_NAME.gpg 

Semasa membuat, pastikan nama yang diberi _NAMA ANDA_ betul. Adalah biasa menggunakan gabungan nama depan dan nama belakang. Nama ini harus sama persis dalam pakej, ketika membuat fail 'kawalan' pakej Debian. Untuk maklumat lebih lanjut mengenai GPG, lihat Buku Panduan Privasi GNU [gph].

2.2. Rantai alat pembungkusan

Untuk membina pakej Debian dengan kod sumber, pakej perisian berikut diperlukan pada sistem anda:

Sebagai pengguna 'root' anda boleh memasangnya dengan menggunakan perintah berikut:

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

2.3. Sediakan perisian yang akan dikemas

Kita harus menyediakan direktori untuk membina pakej. Buat direktori untuk mempersiapkan persekitaran di mana kita akan membina pakej:

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

Salin 'tar.arkib termampat gz dalam direktori:

$ cp helloworld-0.1.tar.gz ~./ bina / helloworld / 0.1 

Tukar ke direktori, dan ekstrak pakej:

$ cd ~./ bina / helloworld / 0.1 ~ / bina / helloworld / 0.1 $ tar -xzf helloworld-0.1.tar.gz 

Sekarang, direktori mengandungi kod sumber dalam direktori yang terpisah, dan arkib yang dimampatkan:

~ / bina / helloworld / 0.1 $ ls helloworld-0.1 helloworld-0.1.tar.gz 

3. Pembaharuan

Pada ketika ini kami akan menambahkan fail yang khusus untuk pakej Debian. Itulah sebabnya langkah ini dinamakan _Debianisasi_ perisian. Ini dilakukan dalam beberapa langkah tunggal.

3.1 Sediakan struktur bungkusan

Tukar ke direktori yang menyimpan keseluruhan kod sumber pakej. Dalam contoh kami, pakej itu mengandungi fail 'helloworld.py ', hanya:

~ $ cd build / helloworld / 0.1 / helloworld-0.1 ~ / bina / helloworld / 0.1 / helloworld-0.1 $ ls helloworld.py 

Mari tambahkan fail yang khusus untuk pakej Debian. Alat 'dh_make' mula digunakan. Suis '-e' menggunakan alamat yang diberikan sebagai alamat e-mel di medan 'Maintainer' pada fail 'debian / control'. Sebagai gantinya, membina pakej menggunakan alamat e-mel anda sendiri. Perlu diingat untuk menggunakan alamat e-mel yang sama dengan kunci GPG anda.

Suis '-f' menggunakan fail yang diberikan sebagai arkib sumber asal, dan melangkau penyalinan pokok program semasa ke 'program.orig '.

~ / bina / helloworld / 0.1 / helloworld-0.1 $ dh_make -e [dilindungi e-mel] -f ... / helloworld-0.1.tar.gz 

Pada arahan anda diminta untuk memilih jenis pakej yang harus dibuat. Untuk memilih _single binary_ type 's'.

Jenis pakej: binari tunggal, binari indep, berbilang binari, perpustakaan, modul kernel, patch kernel? [s / i / m / l / k / n] s Nama penyelenggara: Frank Hofmann Alamat E-mel: [dilindungi e-mel] Tarikh: Sabtu, 04 Nov 2017 21:16:13 +0100 Nama Pakej: helloworld Versi: 0.1 Lesen: kosong Jenis Pakej: Single Hit  untuk mengesahkan: Buat masa ini tidak ada Makefile tingkat atas. Ini mungkin memerlukan penalaan tambahan. Selesai. Sila edit fail dalam debian / subdirektori sekarang. Anda juga harus memastikan bahawa Makefiles helloworld dipasang ke $ DESTDIR dan bukan di / . 

Ini menghasilkan direktori yang disebut 'debian':

~ / bina / helloworld / 0.1 / helloworld-0.1 $ ls debian helloworld.py 

Direktori ini mengandungi semua fail khusus pakej.

3.2. Laraskan fail kawalan

Fail 'debian / control' menyimpan kebergantungan yang diperlukan _untuk membina_ pakej. Menggunakan arahan 'dpkg-depcheck -d ./ konfigurasikan 'anda menerima senarai dengan semua pakej yang diperlukan. Dalam kes kami, tidak ada lagi pakej yang diperlukan kerana Python adalah bahasa yang ditafsirkan.

Seterusnya, kita harus mengedit fail 'debian / control' dan menambah nilai khusus pakej. Sebagai contoh kami kelihatan seperti berikut:

Sumber: helloworld Bahagian: python Keutamaan: pilihan Penyelenggara: Frank Hofmann <[email protected]> Build-Depends: debhelper (> = 9) Standard-Version: 3.9.5 Halaman Utama: http: // www.efho.de / # Vcs-Git: git: // anonscm.debian.org / kolab-maint / helloworld.git # Vcs-Penyemak Imbas: http: // anonscm.debian.org /?p = collab-maint / helloworld.git; a = ringkasan Pakej: helloworld Architecture: any Depends: $ shlibs: Depends, $ misc: Depends, python Keterangan: Cetakan Hello World di Python Prints Hello World di Python 

3.3. Laraskan fail hak cipta

Fail 'debian / hak cipta' mengandungi maklumat lesen untuk pakej perisian. Ia disiapkan untuk dilancarkan melalui GNU Public License 2 (GPLv2). Sebagai contoh kami kelihatan seperti berikut:

Format: http: // www.debian.org / doc / pembungkusan-manual / format hak cipta / 1.0 / Hulu-Nama: helloworld Sumber: http: // www.efho.de / Files: debian / * Hak cipta: 2017 Frank Hofmann <[email protected]> Lesen: GPL-2 + Pakej ini adalah perisian percuma; anda boleh mengagihkannya dan / atau mengubahnya mengikut syarat-syarat Lesen Awam Umum GNU seperti yang diterbitkan oleh Yayasan Perisian Percuma; sama ada versi 2 dari Lesen, atau (mengikut pilihan anda) mana-mana versi yang kemudian… Pakej ini diedarkan dengan harapan ia akan berguna, tetapi TANPA JAMINAN; bahkan tanpa jaminan tersirat KEBOLEHANAN atau KESESUAIAN UNTUK TUJUAN TERTENTU. Lihat Lesen Umum Umum GNU untuk maklumat lebih lanjut… Anda semestinya telah menerima salinan Lesen Awam Umum GNU bersama dengan program ini. Sekiranya tidak, lihat  . Pada sistem Debian, teks lengkap Lesen Awam Umum GNU versi 2 boleh didapati di "/ usr / share / common-license / GPL-2". 

3.4. Laraskan fail changelog

Selepas maklumat hak cipta, fail 'debian / changelog' harus disesuaikan. Dalam contoh kami, kami menambah maklumat "Pelepasan awal".

helloworld (0.1-1) tidak stabil; urgency = rendah * Pelepasan awal - Frank Hofmann <[email protected]> Sabtu, 04 Nov 2017 21:16:13 +0100 

Itu yang kami perlukan setakat ini - akhirnya kami dapat membina pakej itu.


4. Bina bungkusan

Untuk membina pakej, kita harus memindahkan satu direktori dan menjalankan perintah berikut:

~ / bina / helloworld / 0.1 / helloworld-0.1 $ dpkg-buildpackage -rfakeroot

Pilihan '-rfakeroot' membolehkan 'dpkg-buildpackage' menjalankan perintah sebagai pengguna yang dilindungi undang-undang dengan bantuan arahan 'fakeroot'. Ini perlu untuk menyediakan pakej, dan membuat fail dan direktori.
Perintah di atas menghasilkan senarai mesej output yang lebih panjang (ditunjukkan di sini dalam persekitaran bahasa Jerman):

dpkg-buildpackage: Quellpaket helloworld dpkg-buildpackage: Quellpaket helloworld dpkg-buildpackage: Quellversion 0.1-1 dpkg-buildpackage: Quelldistribution tidak stabil dpkg-buildpackage: Quellen geändert durch Frank Hofmann <[email protected]> dpkg-buildpackage: Host-Architektur amd64 dpkg-source - sebelum membina helloworld-0.1 fakeroot debian / Rules clean dh clean dh_testdir dh_auto_clean dh_clean dpkg-source -b helloworld-0.1 dpkg-source: Maklumat: Quellformat "3.0 (selimut) "wird verwendet dpkg-sumber: Maklumat: helloworld wird unter Benutzung des υπάρierenden ./ helloworld_0.1.orig.tar.gz gebaut dpkg-sumber: Maklumat: helloworld aneh dalam helloworld_0.1-1.debian.tar.xz gebaut dpkg-source: Maklumat: helloworld aneh dalam helloworld_0.1-1.DSC gebaut debian / peraturan membina dh bina dh_testdir dh_auto_configure dh_auto_build dh_auto_test fakeroot debian / peraturan binari dh binari dh_testroot dh_prep dh_auto_install dh_installdocs dh_installchangelogs 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 : Bergantung dh_md5sums dh_builddeb dpkg-deb: Paket "helloworld" wird in "… / 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. Mengesahkan pakej

Tahniah - anda berjaya membina pakej Debian - ya! Sekarang, mari kita lihat pakejnya dengan lebih dekat. Di sini, 'lintian' dimainkan. Alat ini mengesahkan pakej anda untuk mencari pelanggaran terhadap peraturan ketat yang harus dipenuhi oleh pakej Debian.

Untuk menjalankan jenis ujian dalam arahan berikut:

lintian helloworld_0.1-1_amd64.deb 

Alat ini tidak menemui pelanggaran peraturan tetapi juga kesalahan ejaan, dan watak yang salah. Suis '-pedantic' meminta 'lintian' menjadi lebih kritikal daripada biasa. Seperti yang anda lihat di bawah 'lintian' agak pemarah dan telah menemui tiga amaran, dan satu kesalahan.

Kecuali untuk amaran pertama, kita dapat dengan senang hati membuat 'lintian' gembira dan menyesuaikan kandungan pakej mengikut peraturan yang ditetapkan. Amaran 'bungkus-baru-harus-tutup-itp-bug' bermaksud bahawa tidak ada laporan bug terhadap pakej ITP (ITP bermaksud _disarankan untuk pakej_). Untuk pakej Debian biasa, laporan bug harus dihantar ke bugtracker untuk pakej ITP untuk memberitahu orang lain bahawa anda berhasrat untuk mula mengemas perisian ini.

4.2. Amaran: 'readme-debian-mengandung-debmake-template

Fail 'README.Debian 'bertujuan untuk menyimpan catatan tambahan mengenai pakej ini. 'dh_make' membuat fail ini untuk kami:

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

Dalam contoh kami, kami tidak mempunyai maklumat tambahan, jadi kami dapat menghapus failnya.

4.3. Amaran: 'deskripsi-bermula-dengan-ruang-terkemuka'

Amaran ini dibangkitkan kerana keterangan lebih panjang mengenai pakej kami dalam fail 'debian / control' bermula dengan lebih dari satu ruang. Sebaik sahaja kita mengeluarkan satu ruang, amaran akan hilang.

4.4. Ralat: 'description-synopsis-is-duplicate'

Setiap pakej memerlukan penerangan pendek dan panjang dalam 'debian / control'. Kesalahan ini ditimbulkan kerana kedua-dua keterangan itu sama. Sebaik sahaja kami memanjangkan keterangan lebih lama, ralat akan hilang.


5. Pautan dan Rujukan

- [ddr] Andreas Barth, Adam Di Carlo, Raphaël Hertzog, Lucas Nussbaum, Christian Schwarz, Ian Jackson: Rujukan Pembangun Debian
- [dnmg] Josip Rodin, Osamu Aoki: Panduan Pemelihara Baru Debian
- [dpmb] Axel Beckert, Frank Hofmann: Buku Pengurusan Pakej Debian
- [dpm] Manual Dasar Debian
- [dpt] Tutorial Pembungkusan Debian
- [gph] Buku Panduan Privasi GNU
- [lushpaiPackage] Alex Lushpai: Cara membuat pakej debian dari sumber


6. Ucapan terima kasih

Penulis ingin mengucapkan terima kasih kepada Axel Beckert dan Gerold Rupprecht atas sokongan mereka, dan pengkritik semasa menyiapkan artikel ini.

Cara Memasang dan Memainkan Doom di Linux
Pengenalan Doom Seri Doom berasal dari tahun 90an selepas pembebasan Doom yang asal. Ini adalah hit seketika dan sejak saat itu dan seterusnya siri pe...
Vulkan untuk Pengguna Linux
Dengan setiap kad grafik generasi baru, kami melihat pembangun permainan mendorong had kesetiaan grafik dan semakin dekat dengan fotorealisme. Tetapi ...
OpenTTD vs Simutrans
Membuat simulasi pengangkutan anda sendiri boleh menyeronokkan, santai dan sangat menarik. Itulah sebabnya anda perlu memastikan bahawa anda mencuba s...