Bab 5. Meng-update Paket

Jika Anda telah menggunakan distribusi Linux sebelumnya, Anda sadar kadang-kadang ada bug di dalam program. Dalam distribusi Debian dan Ubuntu, bug sering diperbaiki melalui pembuatan paket dengan cara mem-patch kode source. Terkadang ada juga bug pada pembuatan paket itu sendiri yang dapat menimbulkan kesulitan.

Untuk mem-patch kode source program, Anda cukup men-download paket source Ubuntu (dengan apt-get source) dan lakukan perubahan. Anda kemudian dapat menambah entri baru ke debian/changelog menggunakan dch -i atau dch -v <version>-<revision> untuk menetapkan revisi baru. Ketika Anda menjalankan debuild -S dari direktori source Anda akan mendapatkan paket source baru dengan berkas .diff.gz baru di dalam direktori utama yang berisikan perubahan. Permasalahan yang terjadi karena pendekatan ini adalah pembedaan antara source dan patch yang tidak jelas.

Solusi untuk masalah ini adalah dengan memisahkan perubahan dalam source code menjadi patch individu yang disimpan dalam direktori debian. Salah satu sistem patch yang ada adalah dpatch. Patch disimpan dalam direktori debian/patches/ dan menggunakan format khusus.

Untuk membuat dpatch, lakukan langkah-langkah berikut secara berurutan.

Buat ruang kerja sementara dan dua salinan dari direktori source saat ini:

mkdir tmp
cd tmp
cp -a ../<package>-<version> . 
cp -a <package>-<version> <package>-<version>.orig 

Buat perubahan di dalam direktori <package>-<version>

Buat berkas patch menggunakan diff dan tempatkan di dalam direktori debian/patches.

diff -Nru  <package>-<version>.orig <package>-<version> > patch-file

Buat dpatch menggunakan dpatch patch-template dan berkas dengan nama 00list yang memuat daftar dpatches:

dpatch patch-template -p "01_patchname" "patch-file description" \
	< patch-file > 01_patchname.dpatch
echo 01_patchname.dpatch >00list

Sekarang Anda dapat menempatkan 01_patchname.dpatch dan 00list di direktori debian/patches dalam paket source Anda:

mkdir ../<package>-<version>/debian/patches
cp 01_patchname.dpatch 00list ../<package>-<version>/debian/patches
cd ..
rm -rf tmp
			
[Catatan]

Anda juga dapat menyunting patch yang sudah ada dengan menggunakan dpatch-edit-patch.

Setelah seluruh perubahan Anda lakukan, entri changelog akan ditambah, dan dpatch telah ditambahkan ke berkas debian/control (jika diperlukan), Anda kemudian dapat membangun ulang paket source dengan debuild -S.

Agar paket source yang telah Anda perbaiki dapat di-upload ke repository Ubuntu, Anda harus mendapatkan sponsor dari seseorang yang memiliki hak untuk meng-upload. Lihat “Meng-upload dan Tinjauan” untuk lebih jelasnya. Terkadang, daripada mengirimkan seluruh paket source (.diff.gz, .dsc, dan .orig.tar.gz), akan lebih mudah dan efisien jika hanya mengirimkan perbedaan antara paket source yang ada di repository saat ini dengan paket source yang telah Anda perbaiki. Perkakas untuk melakukan hal ini disebut debdiff. Penggunaan debdiff sangat mirip dengan diff tetapi perkakas tersebut dibuat khusus untuk pembuatan paket. Anda dapat melakukan debdiff pada paket source dengan:

debdiff <oldpackage>.dsc <newpackage>.dsc > package.debdiff
		

atau paket binary dengan:

debdiff <oldpackage>.deb <newpackage>.deb > package.debdiff
		

Debdiffs sangat bagus untuk melampirkan laporan bug dan apabila Anda telah mempunyai sponsor untuk meng-upload.