[Ubuntu] Membuat Paket Aplikasi Ubuntu *.deb dari Source Code yang tersimpan di *.tar.gz

Pada tutorial kali ini saya ingin berbagi info mengenai cara membuat paket aplikasi Ubuntu (*.deb) dari suatu source code (biasanya berekstensi *.tar.gz). Tutorial ini adalah cara membuat package paling dasar, sedangkan untuk tutorial lengkap mengenai membuat package untuk Ubuntu klik di sini. Very well, get ready mate! The show is about to begin.


Sebelum kita mulai, persiapkan dulu peralatan-peralatan di bawah ini:
Pertama, GPG Key:
Buka Terminal dan ketik:
gpg --gen-key
Akan muncul pesan seperti gambar di bawah ini:


Pilih "DSA and Elgamal" caranya ketik angka 2 kemudian tekan "Enter". Kemudian untuk langkah selanjutnya sama ketika kita membuat GPG Key untuk repository lokal, silakan merujuk ke sana untuk info lebih lengkap.

Jika pembuatan GPG Key telah selesai, ketik perintah di bawah ini di Terminal:
gpg -a --output ~/.gnupg/NAMA_KAMU.gpg --export 'NAMA KAMU'
Ganti nama kamu dengan nama yang sesuai dengan kalian. Misalnya:
gpg -a --output ~/.gnupg/Damar_Riyadi.gpg --export 'Damar Riyadi'
Kemudian import GPG Key yang telah di-export:
gpg --import ~/.gnupg/YOUR_NAME.gpg
Contoh:
gpg --import ~/.gnupg/Damar_Riyadi.gpg
Jika semuanya berjalan lancar, maka langkah pertama sudah selesai.

Kedua, menginstal package yang dibutuhkan:
Buka Terminal dan ketik:
sudo apt-get install build-essential autoconf automake autotools-dev dh-make debhelper devscripts fakeroot xutils lintian pbuilder
Sedangkan bagi teman-teman yang tidak mempunyai koneksi internet di Ubuntu-nya, saya sudah membuat daftar file yang harus di-download, klik di sini
untuk mendapatkan daftar tersebut.

Ketiga, menyiapkan source package:
Pada tutorial kali ini saya menggunakan gKamus (Kamus Bahasa Inggris-Indonesia), klik di sini untuk mendapatkan source-nya. Kemudian, ekstrak file *.tar.gz, sehingga akan tampak struktur file seperti gambar di bawah ini:


Nama folder harus dalam huruf kecil dengan format "namapaket-versipaket". Kemudian, pastikan kalian menaruh file source tepat satu tingkat di luar folder (perhatikan gambar di atas). Kemudian buka Terminal, masuk ke folder dan mulai debianize:
cd gkamus-0.3/
dh_make -e tldm217@gmail.com -f ../gkamus-0.3.tar.gz
Ganti "tldm217@gmail.com" dengan alamat email kalian ketika membuat GPG Key. Selanjutnya akan muncul pertanyaan-pertanyaan, lihat gambar di bawah untuk penjelasannya (klik untuk memperbesar):


Kemudian ketik perintah ini di Terminal:
dpkg-depcheck -d ./configure
Perhatikan output dari perintah di atas:


Pada gambar di atas, tampak dependencies yang harus kita penuhi untuk bisa membuat package (dalam contoh ini adalah gKamus). Catat baik-baik dependencies di atas pada secarik kertas atau semacamnya. Kemudian masuk ke folder yang bernama "debian":
cd debian/
Di dalam folder "debian" ada file-file yang harus kita edit terlebih dahulu. File-file tersebut adalah "control, copyright, dan changelog". Baiklah, buka file "control" dengan text editor favorit kalian.


Perhatikan gambar di atas, bagian yang diberi kotak merah adalah bagian yang harus di edit. Untuk "Build-Depends" TAMBAHKAN dengan output dari perintah"dpkg-depcheck -d ./configure" (dipisahkan dengan tanda koma kemudian spasi), untuk "Homepage" isi dengan sembarang URL, sedangkan untuk "Description" isi dengan deskripsi dari program (catatan: pada "long description" tiap baris diberi jarak satu spasi dari tepi). Berikut contoh yang sudah saya buat:


File selanjutnya yang perlu di-edit adalah "copyright". Buka dengan text-editor
favorit:


Edit sedemikian rupa sehingga menjadi kurang lebih seperti gambar di bawah ini: (catatan: pada bagian "License" tiap baris diberi jarak 4 spasi dari tepi)


File selanjutnya adalah file "changelog". Buka dengan text-editor favorit.


Ganti "unstable" dengan code-name dari distribusi tujuan pembuatan package
misalnya lucid, karmic, maverick, atau yang lain. Kemudian jangan lupa tuliskan perkembangan dari aplikasi (jangan hilangkan tanda "*").
Catatan penting: Dari semua file di atas, ketika kalian diminta memasukkan/mengedit nama dan alamat email, gunakan nama dan alamat email saat kalian membuat GPG Key (dalam contoh ini saya menggunakan: Damar Riyadi karena saya menggunakan itu ketika membuat GPG Key)

Baiklah, sekarang saatnya melakukan proses kompilasi. Keluar dari folder "debian" sehingga berada di folder "gkamus-0.3". Dengan asumsi kalian masih di dalam folder "debian" ketik perintah ini di Terminal:
cd ..
dpkg-buildpackage -rfakeroot
Jika proses berjalan dengan lancar, kalian mungkin akan diminta memasukkan password untuk GPG Key, masukkan password kalian. Nah, jika sudah selesai, seharusnya kalian mempunyai file berekstensi *.deb yang berada sama dengan source (*.tar.gz), di samping file *.deb terdapat pula file *.dsc, *.changes, *.diff.gz dan *.orig.tar.gz. Silakan cek.

Demikian tutorial kali ini, jika ada pertanyaan tinggalkan di komentar.

Semoga bermanfaat.

14 comments :

caplax mengatakan...

mksih gan atas infox

Damar Riyadi mengatakan...

@caplax: sama2, semoga bermanfaat...

Dadali_007 mengatakan...

gan saya mau tnya. ketika saya eksekusi perintah 'dpkg-depcheck -d ./configure', kok tampilannya beda jauh ya dengan yang ada di screenshoot agan? Tampilan yg milik saya setelah mengeksekusi perintah di atas itu seperti di bawah ini:

dadali_007@dadali-007-G42-361TX:~/debianize/gkamus-0.3$ dpkg-depcheck -d ./configure
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... no
checking for mawk... mawk
checking whether make sets $(MAKE)... yes
checking whether to enable maintainer-specific portions of Makefiles... no
checking for style of include used by make... GNU
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking dependency style of gcc... gcc3
checking for library containing strerror... none required
checking for gcc... (cached) gcc
checking whether we are using the GNU C compiler... (cached) yes
checking whether gcc accepts -g... (cached) yes
checking for gcc option to accept ISO C89... (cached) none needed
checking dependency style of gcc... (cached) gcc3
checking for gcc... (cached) gcc
checking whether we are using the GNU C compiler... (cached) yes
checking whether gcc accepts -g... (cached) yes
checking for gcc option to accept ISO C89... (cached) none needed
checking dependency style of gcc... (cached) gcc3
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ANSI C header files... yes
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking for a sed that does not truncate output... /bin/sed
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for /usr/bin/ld option to reload object files... -r
checking for BSD-compatible nm... /usr/bin/nm -B
checking whether ln -s works... yes
checking how to recognize dependent libraries... pass_all
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking dlfcn.h usability... yes
checking dlfcn.h presence... yes
checking for dlfcn.h... yes
checking for g++... g++
checking whether we are using the GNU C++ compiler... no
checking whether g++ accepts -g... no
checking dependency style of g++... none
checking how to run the C++ preprocessor... /lib/cpp
configure: error: C++ preprocessor "/lib/cpp" fails sanity check
See `config.log' for more details.
Running strace failed (command line:
strace -e trace=open,execve -f -q -o /tmp/depchpTvhND ./configure
dadali_007@dadali-007-G42-361TX:~/debianize/gkamus-0.3$ cd debian/

Saya peka NB HP G42-361TX dengan processor i5 dan OS ubuntu maverick.
Mohon pencerahannya, maklum nubie... heheeeee.
Terimas kasih.

Damar Riyadi mengatakan...

@Dadali_007: Menurut pendapat saya Anda belum menginstal paket build-essential:

sudo apt-get install build-essential

Tips: Di google ada banyak sugesti, coba cari dengan keyword pesan Error yang kisanak hadapi, dlm kasus ini adalah:

configure: error: C++ preprocessor "/lib/cpp" fails sanity check

Semoga berhasil.

Dadali_007 mengatakan...

Terima kasih banyak gan atas pencerahannya.
(^_^)

Damar Riyadi mengatakan...

@Dadali_007: Sama-sama, semoga berhasil ...

Anonim mengatakan...

matur tengkyu gan atas posting yg sangat bermanfaat sekali.. he he, berhasil juga debianize gbilling.. bukmarek dulu ah.. joz tenan..

Damar Riyadi mengatakan...

@Anonim: Sip2, sama-sama :D

Putra mengatakan...

mas mau nanya instal driver wireless compag gmna ya

Anonim mengatakan...

muncul eror seperti ini saat melakukan perintah dpkg-depcheck -d ./configure

No package 'gtk+-2.0' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables PACKAGE_CFLAGS
and PACKAGE_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.

Running strace failed (command line:
strace -e trace=open,execve -f -q -o /tmp/depchj2PGs2 ./configure



mohon bantuannya :)

Anonim mengatakan...

dpkg-buildpackage: warning: using a gain-root-command while being root
dpkg-buildpackage: set CFLAGS to default value: -g -O2
dpkg-buildpackage: set CPPFLAGS to default value:
dpkg-buildpackage: set LDFLAGS to default value: -Wl,-Bsymbolic-functions
dpkg-buildpackage: set FFLAGS to default value: -g -O2
dpkg-buildpackage: set CXXFLAGS to default value: -g -O2
dpkg-buildpackage: source package gkamus
dpkg-buildpackage: source version 0.3-1
dpkg-buildpackage: source changed by FARAH ADILAH
dpkg-buildpackage: host architecture i386
dpkg-checkbuilddeps: error: syntax error in debian/control at line 6: line with unknown format (not field-colon-value)
dpkg-buildpackage: warning: Build dependencies/conflicts unsatisfied; aborting.
dpkg-buildpackage: warning: (Use -d flag to override.)

eror seperti ini saat : dpkg-buildpackage -rfakeroot , kenapa ya ? thank's pencerahannya

Damar Riyadi mengatakan...

@Anonim:

Amati pesan error ini gan:

"dpkg-checkbuilddeps: error: syntax error in debian/control at line 6: line with unknown format (not field-colon-value)"

Pasti ada yang salah dengan file "control" Anda.

tadHo mengatakan...

ghan kho saya pas d perintah dpkg-depcheck -d ./configure gx nongol yah..??

martadinata mengatakan...

hhohooh..... thx :D

Posting Komentar