Standar Pengembangan Kuliax
Standar pengembangan Kuliax secara umum menggunakan Debian Policy, dengan perbedaan dan penambahan yang akan dijelaskan pada halaman ini.
Tujuan: pengaturan standar dan kemudahan pemeliharaan dalam jangka panjang.
Kebutuhan Perangkat Keras
Rekomendasi spesifikasi mesin untuk pemaket adalah:
- prosesor ber-clock 1.6 GHz, akan lebih baik jika punya dua inti/dual core
- RAM 512 GB, Swap 512 MB
- terpasang Debian GNU/Linux stable terkini
- tersedia ruang kosong yang cukup untuk menyimpan kode sumber, proses pemaketan, dan hasilnya.
Kebutuhan Perangkat Lunak
Perangkat lunak yang harus ada di mesin pengembang adalah:
- Kuliax versi pengembangan terkini
- akses ke repositori Debian stable (termasuk main/{debian-installer, installer-i386), backports, dan Kuliax terdekat. Jika pengembang memiliki repo lokal buat symlink dari direktori root apache
sudo ln -s /media/repo/debian /var/www/debian sudo ln -s /media/repo/backports /var/www/backports sudo ln -s /media/repo/kuliax /var/www/kuliax
dan pasang server jejaring apache2
sudo apt-get install apache2
Jika pengembang sudah memasang apache2 sebelumnya, jalankan. Untuk mencerminkan repo ke lokal gunakan
debmirror
Jika diperlukan
cd /media/repo/debian/dists/ ln -s stable lenny
- Repo mercurial Kuliax
- Paket-paket:
Pemaket programcdebootstrap, debhelper, devscripts, dh-make, fakeroot, gnupg, live-helper, pbuilder, libparse-debcontrol-perl (opsional)
Opsional, tergantung program
cdbs, diffstat, dpatch, patchutils, quilt
- Pemaket kernel
kernel-package, libncurses5-dev, zlib1g-dev, xmlto
Pengembang sistem
debmirror kbuild live-helper module-assistant virtualbox-ose virtualbox-ose-qt virtualbox-ose-source vrms
- Sistem pembangun d-i dan CD
genisoimage kernel-wedge
- Paket-paket lain yang dibutuhkan saat pemaketan, khususnya saat membangun paket sumber
pkg-config
Pemilihan Paket
Pemilihan paket program yang akan disertakan di Kuliax harus sesuai dengan sasaran atau target proyek ini. Berikut sebagian hal-hal yang dapat dipertimbangkan ketika memilih paket-paket program untuk Kuliax.
- Paket-paket untuk kebutuhan umum yang akan disertakan sebaiknya sudah menjadi standar defacto di sistem berbasis Linux, misal OpenOffice.org untuk aplikasi perkantoran
- Paket-paket untuk kebutuhan khusus atau target Kuliax lebih baik dilakukan survei terlebih dahulu melalui:
- Internet seperti: situs pengembangan dan mata kuliah di beberapa universitas termasuk silabusnya
- melalui wawancara formal dan non formal pada masyarakat pendidikan tinggi di Indonesia
- pengalaman pemaket bahwa suatu program telah banyak digunakan, hal ini dapat didiskusikan dengan tim
- pertimbangan orientasi pembelajaran dan pengembangan serta potensi program ini di masa sekarang dan yang akan datang.
- Sedapat mungkin program-program yang disertakan mempunyai fitur dan kebutuhan ruang yang pas atau sesuai dengan analisa tim pengembang
- Sebagai pembanding ketika memilih dua atau lebih program yang mempunyai fungsi mirip lihat diskusi atau perbandingan yang dilakukan orang-orang dalam komunitas, pasang dan jalankan sendiri, dan juga apakah tersedia dokumentasi
- Program program yang merupakan rekomendasi dari proses-proses di atas disusun berdasarkan prioritas ketika dimasukkan ke cakram #1 dan #2
- Pada setiap rilis Kuliax program-program yang akan disertakan perlu dilakukan pertimbangan ulang berdasarkan kondisi saat itu dan masukan dari para pengguna dan pemerhati Kuliax.
Paket tak bebas: minimal ada ijin distribusi untuk paket-paket tak bebas yang terpaksa disertakan karena memang dukungan bebasnya belum ada. Lihat berkas copyright.
Pemaketan
- Kuliax menggunakan format .deb dan pengatur paket APT dari Debian.
- Dalam melakukan pemaketan di Kuliax, jika paket berasal dari:
- Debian, maka versi paketnya adalah VERSIPROGRAM-XkuliaxY. X adalah revisi paket dari Debian dan Y adalah revisi paket dari Kuliax. Misal program ktechlab di Debian mempunyai versi 0.3.7-3, maka untuk pemaketan pertama kali pada Kuliax versinya menjadi 0.3.7-3kuliax1
- upstream1), maka versi paketnya adalah sama dengan poin di atas, hanya saja X bernilai 0 jika paket tersebut belum ada di Debian
- Kuliax dan ada pertimbangan bahwa paket tidak mungkin dimasukkan ke repo Debian suatu saat nanti, versi paketnya adalah seperti standar Debian yaitu VERSIPROGRAM-Y, untuk versi paket pertama aplikasi 1.0 adalah aplikasi_1.0-1. Contoh paket dalam kategori ini adalah kuliax-base-files
- Kasus khusus: jika ada paket menggunakan versi dengan revisi Debian yang tergabung di dalamnya misal gdebi 0.5.9debian2, maka versi paket tersebut mendapatkan tambahan +kuliaxY, sehingga menjadi gdebi 0.5.9debian2+kuliax1
- Jika paket selanjutnya dimodifikasi maka versi bertambah pada revisi Kuliax yaitu nilai Y-nya: kuliax1, kuliax2, dst.
- Jika paket yang dihasilkan adalah berbasis paket Debian atau yang lain, biarkan debian/changelog yang ada, jangan dihapus!
- Jika versi proyek upstream tidak ada atau hanya tanggal rilis saja, maka gunakan format versi TAHUNBULANTANGGAL. Misal sumber program yang dirilis tanggal 25 Januari 2009 maka versinya adalah 20090125. Jika digabung dengan nama program menjadi program-20090125
- Gunakan opsi –createorig pada penggunaan dh_make, jika belum ada arsip sumber untuk paket
- Isi direktori debian/
- changelog:
- periksa nama distribusi adalah nama kode Kuliax
- catat semua perubahan yang dilakukan!
- compat: set kompatibilitas debhelper, nilai sebelum 5 dinyatakan sudah ditinggalkan (deprecated). Baca manual debhelper untuk mendapatkan informasi perubahan setiap kompatibilitas
- control
- periksa Debian Policy untuk isi dari Section
- set Priority ke optional
- set Architecture ke all jika paket bukan berupa hasil kompilasi/biner
- set Depends dan tambahkan Replaces atau Provides jika diperlukan
- isi Description dengan Bahasa Inggris, agar lebih universal diterima oleh pengguna di seluruh dunia dan juga kemungkinan masuk ke repo Debian
- copyright
- hapus tar URL paket sumber jika paket dibuat oleh pemaket sendiri
- cek dan ricek lisensi
- Lihat berkas kode sumber, README, AUTHORS, dan sejenisnya untuk mendapat lisensi program
- Hilangkan "(s)" pada "Upstream Author(s)" sehingga menjadi "Upstream Author" atau "Upstream Authors"
- Lihat Debian Free Software Guidelines (DFSG), The DFSG and Software Licenses, dan DFSG and Software License FAQ (Draft) untuk penjelasan rinci mengenai lisensi
- (*)install: berikan baris kosong di akhir berkas
- (skrip) pre* dan post*
- Ketika membuat skrip shell, gunakan /bin/sh setelah hashbang (#!) dan tidak menggunakan spesifik shell misal /bin/bash. Contoh yang benar
#!/bin/sh # # ini adalah informasi fungsi skrip shell ini isi dengan operasi skrip shell
- berikan tag #DEBHELPER# sebelum "exit 0". Tag ini akan diisi oleh debhelper secara otomatis untuk fungsi manajemen paket
- exit 1 pada skrip shell digunakan untuk mengembalikan nilai saat terjadi kesalahan, sedang exit 0 pada kondisi sebaliknya
- kroscek logika skrip dan selalu ujicoba hasil pemaketan untuk memastikannya berjalan sesuai dengan rencana
- rules:
- dh_installchangelogs pada debian/rules digunakan untuk memasang changelog di data paket debian dan dh_installdocs digunakan untuk memasang dokumen termasuk berkas copyright
- tukar binary-arch dan binary-indep jika berkas yang dipaketkan adalah bukan berbentuk hasil kompilasi, misal karya seni, konfigurasi
- bersih berkas rules dari komentar-komentar dan perintah yang tidak diperlukan
- gunakan .PHONY untuk memasukkan "perintah"(?) yang sebenarnya tidak digunakan pemaket tapi dibutuhkan sistem build, misal build
- Gunakan packages.debian.org untuk mencari informasi paket dan isinya, misal pemaket ingin melihat dependensi
- Lihat baik-baik pesan kesalahan (E) dan peringatan (W) pada saat lintian dijalankan oleh debuild, perbaiki paket, kecuali yang memang dianggap salah oleh lintian padahal sudah sesuai, misal "bad-distribution-in-changes-file lumpia". Informasi lebih rinci tentang lintian dapat dilihat di manualnya
- Bacalah README atau dokumen mengenai kompilasi dan instalasi program. Lakukan eksperimen terlebih dahulu dengan mencoba melakukan proses kompilasi dan masukan informasi yang diperlukan ke pemaketan, misal info dependensi program untuk Build-Depends
- Jika pemaket menemukan pesan kesalahan seperti "dpkg-shlibdeps: warning: dependency on libbla.so.6 could be avoided if "debian/usr/bin/blabla", cari tahu permasalahan sehingga kita punya alasan kenapa kita mengabaikan pesan tersebut
- Jika berkas dalam paket berbentuk biner dan ada pemutakhiran, maka paket source .orig.tar.gz perlu dipaket ulang, contoh stardict-kbbi
- Gunakan cdebootstrap untuk kinerja pembangunan yang sedikit lebih baik dan agresif
apt-get install cdebootstrap
- Jika ada pesan kesalahan ketika membuat paket sumber debian yaitu [program].make, pasang [program] dan sesuaikan dengan versi program yang memiliki [program].make, karena beberapa paket tidak memiliki *.make di versi stabil
- Jika ada pesan kesalahan saat proses pembangunan, cari solusinya dengan melihat pesan tersebut dan jika tidak mengerti cari solusinya di Internet. Umumnya untuk kasus-kasus yang umum sudah ada solusinya baik dari forum, milis, bugtracker, atau yang lain.
- Gunakan perintah
grep -r "teks" *|less
untuk mencari kata "teks" pada berkas-berkas di direktori kerja dan semua yang ada di bawahnya
- Agar berkas orig.tar.gz disertakan di dalam berkas .changes, pengembang perlu melewatkan parameter "–debbuildopts -sa" ke pbuilder
- Untuk memeriksa apakah sebuah versi paket memiliki perubahan tertentu yang diperlukan, misal memiliki perbaikan atas kutu yang ditemukan, lihat berkas changelog di packages.debian.org
- Gunakan perintah
dpkg -S [berkas]
untuk mencari paket apa yang memilikinya
- MIME
- dpkg-query -W -f='${Package}\n'|grep xorg > xorg.pkgs
- Sertakan opsi "-sa" jika pengembang mempaketkan ulang orig.tar.gz
- Jika pemaketan menutup kutu yang ada, tambahkan "(Closes: #N)" pada changelog, N adalah nomor kutu di bugtracker.
Lisensi
Kuliax mengacu pada Debian Free Software Guidelines (DFSG) untuk paket-paket pada bagian utama (main) distribusi, termasuk hasil karya yang dipaketkan dengan lisensi Creative Common Attribution-Share Alike atau CC-BY-SA 3.0.