15.4.1. Belajar untuk Membuat Perubahan
Creating a quality Debian package is not always a simple task. And becoming a package maintainer takes some learning, both with theory and practice in technical and legal matters. It is not a simple matter of building and installing software; rather, the bulk of the complexity comes from understanding the problems and conflicts, and more generally the interactions, with the myriad of other packages available.
Sebuah paket Debian harus patuh dengan aturan presisi yang terkumpul dalam kebijakan Debian, dan setiap pengelola paket harus mengetahuinya. Tidak terdapat persyaratan untuk hafal mereka luar kepala, namun perlu mengetahui mereka ada dan mengacu padanya saat suatu pilihan menghadirkan alternatif yang non-trivial. Setiap pengelola Debian membuat kesalahan dengan tidak mengetahui suatu aturan, namun ini bukan masalah besar selama kesalahan diperbaiki saat pengguna melaporkannya dalam laporan bug (yang cenderung terjadi cukup segera terima kasih pada pengguna mahir).Ruas
Standards-Version
dalam
debian/control
menyatakan versi kebijakan Debian mana yang dipatuhi oleh paket. Pengelola mesti patuh ke versi terakhir kebijakan Debian.
Debian bukanlah koleksi sederhana dari paket-paket individual. Semua pekerjaan pemaketan merupakan bagian dari proyek kolektif; menjadi pengembang Debian meliputi mengetahi bagaimana proyek Debian beroperasi ... Setiap pengembang akan, cepat atau lambat, berinteraksi satu sama lain. Referensi pengembang Debian (dalam paket
developers-reference) menyarikan apa yang harus diketahui oleh setiap pengembang Debian agar dapat berinteraksi dengan baik mungkin dengan beragam tim dalam proyek, dan untuk keuntungan terbaik dari sumber daya yang tersedia. Dokumen ini juga ... beberapa tanggung jawab pengembang yang diharapkan dipenuhi.
Banyak perkakas membantu maintainer paket dalam pekerjaannya. Bagian ini menjelaskan mereka secara cepat, namun tidak memberikan detail sepenuhnya, karena mereka semua memiliki dokumentasi komprehensifnya sendiri.
Paket devscripts berisi banyak program yang membantu beragam pekerjaan pengembang Debian:
debuild
memungkinkan menghasilkan sebuah paket (dengan dpkg-buildpackage
) dan menjalankan lintian
untuk memeriksa kepatuhan dengan kebijakan Debian.
debclean
membersihkan paket sumber setelah paket binari dihasilkan.
dch
memungkinkan penyuntingan cepat dan mudah dari berkas debian/changelog
dalam paket sumber.
uscan
memeriksa apakah terdapat versi baru perangkat lunak yang dirilis oleh penulis upstream; hal ini membutuhkan berkas debian/watch
dengan deskripsi dari lokasi rilis.
debi
memungkinkan memasang (dengan dpkg -i
) paket Debian yang baru saja dibuat tanpa perlu mengetik nama lengkap dan pathnya.
Hal yang mirip, debc
memungkinkan pencarian isi dari paket yang baru dibuat (dengan dpkg -c
), tanpa harus mengetik nama lengkap dan path.
bts
mengendalikan sistem pelacakan bug dari baris perintah; program ini secara otomatis menghasilkan surel yang sesuai.
debrelease
menggunggah paket yang baru dibuat ke server remote, tanpa harus mengisi nama lengkap dan path dari berkas .changes
terkait.
debsign
menandatangani berkas *.dsc
dan *.changes
.
uupdate
... proses pembuatan dari revisi baru paket saat versi upstream telah dirilis.
Semua perintah yang disebutkan didokumentasikan di halaman manual masing-masing. Mereka selanjutnya dapat dikonfigurasi per pengguna dalam satu berkas: ~/.devscripts
.
15.4.1.3.2. debhelper dan dh-make
Debhelper adalah sekumpulan skrip yang memudahkan pembuatan paket yang patuh kebijakan; skrip ini dipanggil dari debian/rules
. Debhelper telah diterima secara luas dalam Debian, terbukti dengan fakta bahwa itu digunakan oleh mayoritas paket Debian resmi. Semua perintah di dalamnya berisi prefiks dh_
. Masing-masing didokumentasikan dalam halaman manual. Tingkat kompatibilitas yang berbeda dan opsi umum dijelaskan dalam debhelper(7).
Skrip dh_make
(dalam paket dh-make) membuat berkas yang dibutuhkan untuk membuat paket Debian dalam direktori yang pada awalnya berisi sumber untuk perangkat lunak. Seperti sudah bisa ditebak dari nama program, berkas yang dihasilkan menggunakan Debhelper secara default.
Perkakas ini adalah salah satu yang paling penting: pemeriksa paket Debian. Itu berlandaskan pada kumpulan besar dari tes yang dibuat dari kebijakan Debian, dan mendeteksi secara cepat dan secara otomatis banyak kesalahan yang dapat diperbaiki sebelum paket dirilis.
Perkakas ini hanyalah pembantu, dan sesekali salah (contohnya, sejak kebijakan Debian berubah seiring waktu, lintian
sesekali ....) ... juga tidak lengkap: tidak mendapatkan kesalahan Lintian bukan berarti bukti bahwa paket sudah sempurna; ... mencegah kesalahan yang paling umum.
Ini adalah alat penting lain: mengotomatisasi instalasi, upgrade, penghapusan, dan pembersihan paket (dalam lingkungan yang terisolasi), dan memeriksa bahwa tidak satupun dari operasi ini menyebabkan kesalahan. Itu dapat membantu dalam mendeteksi dependensi yang hilang, dan juga mendeteksi ketika berkas-berkas masih tersisa setelah paket dibersihkan.
autopkgtest
menjalankan tes pada paket biner, menggunakan tes yang disediakan dalam paket sumber di debian/tests/
. Beberapa perintah memungkinkan pembuatan mudah lingkungan uji chroot atau virtual.
reprotest
membangun kode sumber yang sama dua kali di lingkungan yang berbeda, dan kemudian memeriksa biner yang dihasilkan oleh masing-masing build untuk mencari perbedaan. Jika ada yang ditemukan, maka diffoscope
(bila tidak tersedia, diff
) digunakan untuk menampilkannya secara rinci untuk analisis nanti.
15.4.1.3.7. dupload
dan dput
Perintah dupload
dan dput
memungkinkan mengunggah paket Debian ke server (bisa jadi remote). Hal ini memungkinkan pengembang untuk mempublikasikan paket mereka pada server Debian utama (ftp-master.debian.org
) sehingga bisa terintegrasi ke dalam arsip dan didistribusikan oleh cermin. Perintah ini mengambil berkas .changes
sebagai parameter, dan menyimpulkan berkas relevan lainnya dari isinya.
15.4.1.3.8. git-buildpackage dan dgit
Proyek ini telah menggunakan berbagai sistem kontrol versi selama bertahun-tahun untuk menyimpan upaya pengemasan atau kode sumber paket, atau memungkinkan pemeliharaan paket kolaboratif. Dalam upaya untuk menyatukan sistem dan upaya, akhirnya diputuskan pada tahun 2017 untuk memindahkan (hampir) semua sumber paket ke
Git (
KULTUR Git) ke instansi Gitlab yang disebut
salsa.debian.org
.
Untuk membuat pengemasan menggunakan Git lebih mudah bagi pengembang Debian, alat telah dikembangkan. Ini memungkinkan tidak hanya untuk menyimpan berkas kemasan di Git, tetapi juga untuk menggunakan repositori Git (dan sejarahnya) dari proyek perangkat lunak, menempatkan patch yang diterapkan pada sumber paket ke dalam sejarah Git, memelihara versi perangkat lunak per distribusi, dll.
Salah satu paket yang paling terkenal adalah git-buildpackage. Alternatifnya adalah dgit. Tentu saja masih mungkin untuk tidak menggunakan keduanya.
Di bawah ini adalah contoh untuk berkas konfigurasi ~/.gbp.conf
[DEFAULT]
builder = sbuild -d bookworm --build-dep-resolver=aptitude -s --source-only-changes --build-failed-commands "%SBUILD_SHELL"
pristine-tar = true
[buildpackage]
sign-tags = true
keyid = XXXX
postbuild = autopkgtest --user debci --apt-upgrade -s "$GBP_CHANGES_FILE" -- lxc --sudo autopkgtest-bookworm-amd64
export-dir = /tmp/build-area/
notify = off
[import-orig]
filter-pristine-tar = true
sign-tags = true
[pq]
drop = true
Building the package is then as easy as running gbp buildpackage
in the Git tree. It will start a package build in a Debian Bookworm chroot using sbuild
. When the build succeeds, the created files are checked running the autopkgtest
-testsuite (if defined). All the various options are explained in gbp.conf(5) and /etc/git-buildpackage/gbp.conf
.
Semua alat yang disebutkan sejauh ini telah dimasukkan dalam proses integrasi berkelanjutan (continuous integration, CI) dalam instansi
salsa.debian.org
juga:
15.4.2. Proses Penerimaan
Menjadi pengembang Debian bukanlah hal administratif sederhana. Proses ini terdiri dari beberapa langkah, sekaligus merupakan inisiasi dan proses seleksi. Pada kasus apapun, hal ini diformalkan dan terdokumentasi dengan baik, jadi siapapun dapat melacak perkembangan mereka pada situs yang khusus ditujukan untuk pemrosesan anggota baru.
Semua kandidat diharapkan memiliki pengetahuan ... dari bahasa Inggris. Hal ini dibutuhkan pada semua tingkat: untuk komunikasi awal dengan penguji, tentunya, dan tentu nanti, sejak bahasa Inggris adalah bahasa yang ... untuk hampir semua dokumentasi; juga, pengguna paket akan berkomunikasi dengan bahasa Inggris saat melaporkan bug, dan mereka berharap balasan dalam bahasa Inggris.
Persyaratan lainnya berkaitan dengan motivasi. Menjadi pengembang Debian merupakan proses yang hanya masuk akal jika kandidat mengetahui bahwa minat mereka dalam Debian akan bertahan hingga berbulan-bulan. Proses penerimaanya itu sendiri bisa jadi berlangsung beberapa bulan, dan Debian membutuhkan pengembang untuk jangka waktu panjang; setiap paket perlu pengelolaan permanen, dan tidak hanya unggah di awal saja.
Langkah pertama (nyata) terdiri dari mencari sponsor atau advokat; ini berarti seorang pengembang resmi bersedia menyatakan bahwa mereka yakin bahwa menerima X akan baik untuk Debian. Ini biasanya berarti menandakan bahwa kandidat telah aktif di dalam komunitas, dan karya mereka telah diapresiasi. Jika kandidat pemalu dan karya mereka tidak digembar-gemborkan secara publik, mereka dapat mencoba meyakinkan pengembang Debian untuk mengadvokasi dan menunjukkan karya mereka secara privat.
Pada saat yang sama, kandidat harus menghasilkan sebuah pasangan kunci RSA publik/privat dengan GnuPG, yang mesti ditandatangani oleh setidaknya dua pengembang Debian resmi. Tanda tangan mengotentikasi nama pada kunci. Secara efektif, selama key signing party, setiap peserta harus menunjukkan identifikasi resmi (biasanya KTP atau paspor) bersamaan dengan pengidentifikasi kunci mereka. Langkah ini menegaskan hubungan antara manusia dan kunci. Maka tanda tangan ini memerlukan pertemuan di kehidupan nyata. Jika Anda belum pernah bertemu dengan pengembang Debian manapun dalam konferensi publik perangkat lunak bebas, Anda dapat secara eksplisit mencari pengembang yang tinggal di dekat Anda menggunakan daftar pada halaman web berikut sebagai titik awal.
Sekali registrasi pada nm.debian.org
telah divalidasi oleh advokat, seorang Manajer Lamaran ditugaskan ke kandidat. Manajer lamaran selanjutnya akan mengikuti prosedur dan memvalidasi beragam langkah proses ini.
Verifikasi pertama adalah pemeriksaan identitas. Jika Anda telah memiliki kunci yang ditandatangani oleh dua orang pengembang Debian, langkah ini sangat mudah; sebaliknya, manajer aplikasi akan mencoba mencari dan memandu Anda dalam mencari pengembang Debian yang dekat atau mengadakan kopdar dan penandatanganan kunci.
15.4.2.3. Menerima Prinsip-prinsip
Semua formalitas administratif ini diikuti dengan pertimbangan filosofis. Poinnya adalah memastikan bahwa kandidat memahami dan menerima kontrak sosial dan prinsip di balik Perangkat Lunak Bebas. Bergabung dengan Debian hanya mungkin jika seseorang berbagi nilai yang menyatukan pengembang saat ini, seperti yang dinyatakan dalam teks pendirian (dan diringkas dalam
Bab 1, Proyek Debian).
Sebagai tambahan, setiap kandidat yang ingin bergabung Debian ranks diharapkan mengetahui cara kerja dari proyek, dan bagaimana berinteraksi dengan tepat untuk memecahkan masalah yang pasti akan mereka temui seiring berjalannya waktu. Semua informasi ini secara umum didokumentasikan di dalam manual yang ditujukan kepada maintainer baru, dan dalam referensi pengembang Debian. Pembacaan teliti dari dokumen ini seharusnya cukup untuk menjawab pertanyaan penguji. Jika jawaban tidak cukup memuaskan, kandidat akan dikabari. Ia akan harus membaca (lagi) dokumentasi yang relevan sebelum mencoba lagi. Pada kasus di mana dokumentasi saat ini tidak mengandung jawaban yang tepat untuk pertanyaan, kandidat umumnya dapat mencapai jawaban dengan pengalaman praktikal selama di Debian, atau mendiskusikannya dengan pengembang Debian lainnya. Mekanisme ini memastikan bahwa kandidat sedikit terlibat dalam Debian sebelum bergabung secara utuh. Ini merupakan kebijakan yang disengaja, agar kandidat yang pada akhirnya bergabung ke proyek terintegrasi sebagai kepingan lain dari teka teki gambar yang dapat diperluas tak hingga.
Langkah ini umumnya dikenal sebagai Philosophy & Procedures (disingkat P&P) dalam lingo para pengembang yang terlibat dalam proses anggota baru.
15.4.2.4. Pemeriksaan Keahlian
Setiap aplikasi untuk menjadi pengembang resmi Debian harus dijustifikasi. Menjadi anggota proyek membutuhkan ... menunjukkan status ini legitimasi, dan memfasilitasi pekerjaan kandidat dalam membantu Debian. Justifikasi yang paling umum adalah ... diberikan Debian developer status ... memudahkan pengelolaan paket Debian, namun ini bukan satu-satunya. Beberapa pengembang bergabung ke proyek untuk aktif berkontribusi dengan mem-porting ke arsitektur spesifik, lainnya ingin meningkatkan dokumentasi, dan seterusnya.
Langkah ini merepresentasikan peluang bagi kandidat untuk menyatakan bahwa mereka ingin ... dalam proyek Debian dan menunjukkan bahwa mereka telah bergerak maju... Debian adalah proyek pragmatis dan mengatakan sesuatu tidak cukup, jika tindakan tidak sesuai dengan apa yang dikatakan. Umumnya, saat ... dalam proyek berkaitan dengan pengelolaan paket, versi pertama dari prospektif pakt akan harus divalidasi secara teknis dan diunggah ke server Debian oleh sponsor dari pengembang Debian saat ini.
Akhirnya, penguji memeriksa kemampuan teknis (pemaketan) kandidat dengan kuesioner yang detail. Jawaban buruk tidak diizinkan, namun waktu menjawab tidak dibatasi. Semua dokumentasi tersedia dan beberapa kali percobaan diizinkan jika jawaban pertama belum mencukupi. Langkah ini bukan bermaksud untuk mendiskriminasi, namun untuk memastikan sebagian kecil pengetahuan yang sama bagi kontributor baru.
Langkah ini dikenal sebagai langkah Tasks & Skills (disingkat dengan T&S) pada jargon penguji.
15.4.2.5. Persetujuan Akhir
Pada langkah terakhir, seluruh proses di-review oleh DAM (Debian Account Manager). DAM akan me-review semua informasi kandidat yang telah dikumpulkan penguji dan membuat keputusan apakah akan membuat akun pada server Debian atau tidak. Pada keadaan di mana informasi tambahan dibutuhkan, pembuatan akun bisa jadi tertunda. Penolakan jarang terjadi jika penguji melakukan pekerjaannya dengan baik, namun sesekali terjadi penolakan. Hal ini tidak pernah permanen, dan kandidat bebas untuk mencoba lagi pada waktu berikutnya.
Keputusan DAM bersifat otoritatif dan (hampir) tanpa sanggahan, yang menerangkan mengapa orang yang menjabat seringkali pada masa lalu dikritik.