Kamis, 15 Juli 2010

[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 komentar:

  1. @caplax: sama2, semoga bermanfaat...

    BalasHapus
  2. 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.

    BalasHapus
  3. @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.

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

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

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

    BalasHapus
  7. mas mau nanya instal driver wireless compag gmna ya

    BalasHapus
  8. 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 :)

    BalasHapus
  9. 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

    BalasHapus
  10. @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.

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

    BalasHapus