Panduan Pemaketan Debian Termudah (Disertai Contoh)


Bismillahirrahmanirrahim.

Tulisan ini tersedia dalam PDF

Panduan ini menuntun Anda untuk bisa membuat paket Debian .deb sendiri dengan cara yang termudah. Panduan ini ditulis untuk Anda yang ingin memaketkan aplikasi Linux (C++, Python, Java, dll.). Panduan ini membuang banyak hal-hal rumit dari panduan asli pemaketan Debian sendiri semisal GPG key, source codepatch, pbuilder, chroot, dan lain-lain. Panduan ini ditulis sesederhana mungkin sehingga hanyalah langkah-langkah yang paling dibutuhkan saja yang disebutkan. Anda dijamin berhasil melakukan pemaketan Debian jika Anda mengikuti panduan ini dengan baik. Semoga panduan ini bermanfaat untuk Anda.

Kata kunci: dpkg –build debian; pemaketan; .deb; instalasi aplikasi

Persiapan Mental

  1. Anda harus terbiasa menggunakan Terminal di Linux karena pemaketan Debian itu dilakukan sebagian besar dengan baris perintah.
  2. Jika belum terbiasa, maka ikutilah panduan ini dengan sabar.

Selayang Pandang Pemaketan

Demikian garis besar langkah-langkah pemaketan Debian itu.

  1. control
  2. .desktop
  3. .sh
  4. struktur direktori
  5. fakeroot dpkg –build debian
  6. instal paket
  7. lintian

Anda tidak akan keluar dari 7 langkah ini.

Persiapan Peralatan Pemaketan

sudo apt-get install build-essential devscripts ubuntu-dev-tools debhelper fakeroot lintian tree

Saya menyediakan paket tarball yang berisi semua berkas yang Anda perlukan untuk mempraktikkan panduan ini. Paket ini sudah berisi berkas shell script, program eksekutabel biner (dibuat dengan Qt Creator), berkas .desktop, dan ikon PNG. Sebenarnya saya lebih menyukai jika Anda membuat sendiri segala bahan yang dituntunkan dalam panduan ini. Namun silakan unduh paket ini jika Anda ingin lebih mudah mempraktikkannya.

http://otodidak.freeserver.me/tarball/pemaketan-debian.tar.gz

Dasar Penting Pemaketan Debian

Kita perlu tahu dulu apa sesungguhnya pemaketan Debian itu. Pemaketan Debian sesungguhnya adalah membuat sebuah paket .deb dari sebuah berkas eksekutabel yang berada dalam struktur direktori tertentu agar paket bisa meletakkan berkas-berkas yang dimuatnya ke dalam direktori yang semestinya pada sistem tujuan secara otomatis jika dieksekusi. Paket .deb ini seperti .zip. Ia berisi struktur direktori yang selalu sama. Struktur direktori inilah yang Anda wajib ketahui untuk melakukan pemaketan Debian. Berikut ini contoh struktur direktori paket .deb untuk aplikasi Java (.jar):

/usr/bin/aplikasiku.sh
/usr/lib/aplikasiku/aplikasiku.jar
/usr/lib/aplikasiku/pustaka.jar
/usr/share/applications/aplikasiku.desktop
/usr/share/doc/aplikasiku/ikon.png

Jika Anda membuat aplikasi Qt (eksekutabelnya tidak punya ekstensi), struktur direktorinya sama juga yakni seperti ini:

/usr/bin/aplikasiku.sh
/usr/lib/aplikasiku/aplikasiku
/usr/lib/aplikasiku/pustaka
/usr/share/applications/aplikasiku.desktop
/usr/share/doc/aplikasiku/ikon.png

Itulah bentuk umum struktur direktori dari sebuah paket Debian yang wajib Anda ketahui. Nantinya Anda akan menambah atau malah mengurangi struktur direktori ini sesuai kebutuhan. Misalnya, Anda bisa membuang struktur /usr/lib/aplikasiku/pustaka jika aplikasi buatan Anda memang tidak membutuhkan pustaka. Anda perlu mengingat bahwa segala program di Linux selalu berada di /bin atau di /usr/bin. Segala pustaka selalu berada di /lib atau /usr/lib. Jadi, sebenarnya tanpa pemaketan Debian pun Anda bisa menginstal suatu program hanya dengan menyalinnya ke direktori yang benar lalu cukup dipanggil lewat Terminal.

Langkah-Langkah Pemaketan

1. Menyiapkan Berkas control

Package: aplikasiku
Version: 1
Section: utility
Priority: optional
Architecture: i386
Maintainer: Ade Malsasa Akbar <teknoloid@gmail.com>
Description: Ini adalah aplikasi percobaan pemaketan
 Debian. Tidak boleh lebih dari 80 karakter.
 .
 Ini adalah bagian deskripsi.
 Baris kedua.
 .

Berkas control ini adalah yang paling penting dalam satu biji paket Debian. Berkas inilah yang digunakan oleh apt untuk menginstalnya ke dalam sistem. Jika Anda pernah bertanya “bagaimana apt tahu satu paket memerlukan paket yang lain?” maka berkas control ini jawabannya.

pemaketan-debian-1

2. Menyiapkan Berkas .desktop

[Desktop Entry]
Version=1
Type=Application
Name=Aplikasiku
GenericName=Simple Repository Source Changer
Comment=Aplikasi Pertama Saya
Categories=Qt;KDE;System;FileTools;Package Manager;
Exec=/usr/bin/aplikasiku.sh
Icon=/usr/share/doc/aplikasiku/aplikasiku.png
Terminal=false

Berkas .desktop ini wajib ada. Berkas .desktop inilah yang menjadi ikon-ikon di menu, yang jika diklik maka program berjalan. Kode-kode di atas melakukan mekanisme pemanggilan program sebagai berikut:

.desktop -> /usr/bin/aplikasiku.sh -> /usr/lib/aplikasiku/aplikasiku

Dari .desktop, shell script /usr/bin/aplikasiku.sh dipanggil, lalu shell script memanggil program sesungguhnya yaitu /usr/lib/aplikasiku/aplikasiku. Memang tampak 2 kali kerja tetapi ini bertujuan membuat Anda paham bahwa segala executable file yang diletakkan di /usr/bin atau di /bin pasti dapat dipanggil secara langsung hanya dengan namanya saja dari Terminal. Oleh karena itu, hampir semua binary yang ada di /usr/bin/ Anda adalah shell script. Pada akhirnya, metode pemanggilan program yang memakai shell script seperti ini adalah standar Debian.

pemaketan-debian-2

3. Menyiapkan Shell Script

#!/bin/bash
/usr/lib/aplikasiku/aplikasiku

Shell script ini walau hanya 2 baris, lebih penting daripada berkas control karena sebenarnya yang diakses oleh pengguna adalah shell script Anda. Jika Anda sering menjalankan perintah Linux dari Terminal, maka Anda sebenarnya menjalankan shell script. Kemudian barulah shell script yang memanggil program yang sesungguhnya. Adapun shell script, aslinya hanyalah teks biasa yang namanya berakhiran .sh dan diberi hak akses executable. Cara membuatnya sebagai berikut.

  1. Buat sebuah berkas teks dengan nama aplikasiku.sh.
  2. Isikan ke dalamnya tulisan kode di atas.
  3. Simpan.
  4. Pada direktorinya, lakukan perintah chmod +x aplikasiku.sh

Nanti pada pemaketan-pemaketan selanjutnya, Anda harus mengganti nama shell script ini sesuai nama program Anda. Shell script yang berada pada /usr/bin/ ini adalah yang terpenting dalam pemaketan Debian untuk pengguna Anda.

pemaketan-debian-3

4. Menyiapkan Struktur Direktori

debian/DEBIAN/control
debian/usr/bin/aplikasiku.sh
debian/usr/lib/aplikasiku/aplikasiku
debian/usr/share/applications/aplikasiku.desktop
debian/usr/share/doc/aplikasiku/aplikasiku.png

Dalam pemaketan, kita membuat dahulu satu folder teratas yang bernama debian/. Di dalamnya terdapat 2 folder usr/ dan DEBIAN/. Barulah setelah itu ditambahkan folder-foler yang lain. Buatlah folder-folder itu sendiri secara manual. Jika Anda sudah sering melakukannya secara manual, pakailah perintah

mkdir -p debian/DEBIAN/ debian/usr/share/doc/aplikasiku/ debian/usr/bin/ debian/usr/lib/aplikasiku/

untuk membuat seluruh direktori hanya dengan 1 perintah saja.

pemaketan-debian-4

5. Menciptakan .deb

fakeroot dpkg –build debian

Inilah inti seluruh kegiatan pemaketan Debian. Seluruh tahap di atas hanyalah persiapan untuk perintah ini. Perintah ini membuat dpkg memaketkan direktori-direktori yang sudah dipersiapkan menjadi satu berkas .deb utuh yang siap diinstal. Di sini kita menggunakan fakeroot untuk mengotomatisasi hak-hak akses untuk setiap direktori supaya sesuai dengan aturan pemaketan Debian. Kalau sudah jadi sebuah paket debian.deb, gantilah namanya jadi nama aplikasi Anda semisal Otodidak-i386-1.0.deb.

pemaketan-debian-5

6. Menguji Keabsahan Paket

lintian debian.deb | grep E:

Dengan menggunakan lintian, Anda akan mendapatkan keterangan error (E:) atau warning (W:) dari suatu paket. Pesan error maupun warning yang muncul adalah hasil pencocokan antara isi paket Debian Anda dengan Debian Packaging Guidelines (Aturan Pemaketan Debian). Hal ini memangkas waktu banyak sekali karena aturan pemaketan Debian itu sangatlah panjang. Dengan pengecekan lintian ini, Anda cukup melihat hasil keluarannya. Jika jumlah error sedikit bahkan tidak ada sama sekali, itu artinya paket Anda sudah bagus. Jika error Anda banyak, maka itu artinya paket Anda mesti diperbaiki.

pemaketan-debian-6

Bagaimana cara memperbaiki paket yang divonis E: atau W: oleh lintian? Bacalah setiap pesan E: atau W: yang muncul. Sekarang, fokuskan hanya pada E:. Salin pesan E: dari Terminal (Ctrl+Shift+C) lalu tempel (Ctrl+V) pesan tersebut di Find pada browser Anda ketika membuka laman http://lintian.debian.org/tags/. Ya, Anda harus membuka laman tersebut ketika memperbaiki paket untuk tahu apa kesalahannya. Karena Anda tidak akan selalu online, maka simpan halaman tersebut dan bookmark saja. Dengan melakukan ini, Anda akan tahu bagaimana cara memperbaikinya karena di setiap tag dari laman tersebut disebutkan spesifikasinya.

pemaketan-debian-7 pemaketan-debian-8

7. Menguji Instalasi Paket

Inilah tujuan pemaketan Debian. Silakan coba instal paket yang sudah Anda ciptakan. Saya pribadi menggunakan GDebi untuk menginstal supaya mudah melakukan instalasi berulang kali. Saya pun menyelingi instalasi dengan perintah sudo dpkg -i debian.deb melalui Terminal di dalam Dolphin.

pemaketan-debian-9

pemaketan-debian-10

Setelah instalasi, Anda harus melakukan uninstal untuk menguji keabsahannya pula.

pemaketan-debian-11

Hasil Pemaketan

Anda memperoleh sebuah berkas paket bernama debian.deb dalam direktori yang di situ terdapat folder debian/. Silakan buka paket ini dengan GDebi, Ubuntu Software Center, KPackageKit, atau bisa juga perintah dpkg -I debian.deb. Setelah instalasi, Anda akan memperoleh menu Unity Anda memiliki program baru bernama Aplikasiku. Selain Unity, KDE juga menayangkan aplikasi yang sama pada menunya. Perhatikan gambar berikut.

pemaketan-debian-12 pemaketan-debian-13 pemaketan-debian-14

Selain itu, Anda juga memperoleh berkas-berkas baru pada sistem Ubuntu Anda sebagai berikut.

/usr/bin/aplikasiku.sh
/usr/lib/aplikasiku/aplikasiku
/usr/share/applications/aplikasiku.desktop
/usr/share/doc/aplikasiku/aplikasiku.png

Jika aplikasi tersebut dijalankan, maka ia muncul sebagaimana aplikasi pada normalnya.

pemaketan-debian-15

Sampai di sini, pemaketan Debian Anda telah usai. Anda telah mampu melakukan pemaketan Debian paling minimal.

Unduh Paket Saya

Setelah mempraktikkan seluruh langkah di atas, Anda mungkin ingin melihat sendiri bagaimana penulis panduan membuat paketnya. Saya sediakan dalam 2 versi yaitu minimal dan menengah. Versi minimal adalah versi panduan ini sedangkan versi menengah berisi beberapa tambahan yang lebih kompleks. Keduanya masih berada dalam kriteria mudah dibuat.

Rangkuman

Agar Anda mudah mengingat versi paling minimal dari pemaketan Debian, berikut ini saya tuliskan langkah-langkahnya.

  1. Menyiapkan berkas control.
  2. Menyiapkan berkas .desktop.
  3. Menyiapkan shell script pemanggil.
  4. Menyiapkan struktur direktori.
  5. Memaketkan.
  6. Menguji paket dengan lintian.
  7. Menguji instalasi paket.

Jurus-Jurus Rahasia Pemaketan

Langkah-langkah di atas adalah bentuk sederhana dari pemaketan yang saya lakukan. Semua ditulis agar Anda mudah mengikuti. Sekarang saatnya Anda tahu jurus-jurus tambahan supaya pemaketan yang Anda lakukan lebih cepat selesai.

  1. Gunakan shortcut key Terminal Ctrl+R untuk mencari perintah yang sebelumnya.
  2. Gunakan shortcut key Terminal Ctrl+L untuk membersihkan layar.
  3. Gunakan shortcut key Terminal Ctrl+U untuk membersihkan 1 baris mulai posisi terakhir kursor.
  4. Buka paket Anda sendiri dengan manajer arsip semacam Ark/File Roller di Ubuntu Anda untuk melihat sendiri bagaimana strukturnya. Jangan dibuka dengan Ubuntu Software Center jika ingin melihat isinya.
  5. Buka paket yang Anda unduh dari repo lalu perhatikan struktur direktori dan bagaimana penulisan berkas-berkas pentingnya (control, .desktop, posinst, dll.). Contek dan terapkan itu pada paket Debian Anda maka Anda tidak perlu lagi membaca tulisan ini dan mungkin semua tulisan seperti ini kelak. Karena setiap paket yang berhasil masuk ke repositori resmi Debian atau Ubuntu pasti sudah benar. Kalau Anda contek, maka otomatis paket Anda juga ikut benar. Cari di /var/cache/apt/archives/ Anda. Inilah tip sukses saya memaketkan Otodidak sendiri sebelum dirilisnya.
  6. Perhatikan keterangan jumlah karakter/kolom dari penyunting teks Anda (Kate/Gedit/lainnya) agar Anda tidak melampaui standar maksimal 80 karakter per baris ketika menuliskan keterangan program Anda dalam berkas Debian control.
  7. Gunakan perintah cd ../ untuk pindah 1 tingkat direktori ke atas, cd ../../ pindah 2 tingkat, cd ../../../ pindah 3 tingkat, dan seterusnya.
  8. Gunakan perintah tree . untuk mencetak lengkap pohon direktori mulai direktori sekarang sampai ke akar paling bawah. Gunakan perintah tree debian/ untuk mencetak pohon direktori mulai direktori debian/.
  9. Gunakan opsi -p untuk membuat direktori berikut subdirektori secara otomatis dalam 1 baris perintah mkdir.
  10. Gunakan perintah strip –strip-all <namaprogram> untuk melakukan kompresi terhadap eksekutabel yang dihasilkan oleh Qt Creator. Jika tidak dilakukan, maka lintian memvonis E: unstripped-binary-or-object. Maksud stripping ini adalah membuang bagian-bagian yang tidak diperlukan dari sebuah eksekutabel biner. Pastikan program bernama strip tersebut sudah terinstal di Ubuntu Anda.
  11. Jika Anda benar-benar mengikuti panduan ini dengan saksama, maka Anda bisa memanggil program Anda dengan perintah aplikasiku.sh di Terminal secara langsung. Ini namanya membuat perintah sendiri.
  12. Gunakan Dolphin agar Anda bisa melakukan semua itu cukup dari 1 jendela saja.

pemaketan-debian-16

Tentang Tulisan Ini

Tulisan ini sejatinya adalah versi saya sendiri dari tulisan http://blog.noizeramp.com/2005/08/31/packaging-java-applications-for-ubuntu-and-other-debians/. Saya telah menelusuri sekian tutorial pemaketan Debian mulai yang resmi sampai buku pemaketan Ubuntu dan Blankon (total ratusan halaman) ditambah posting-posting tidak resmi dari komunitas yang ada. Hasilnya saya kebingungan. Pemaketan Debian terasa sangat sulit. Padahal yang saya inginkan hanyalah memaketkan aplikasi Java saya begitu saja supaya bisa diinstal di Ubuntu lain. Namun semua berubah ketika saya menemukan tulisan tersebut. Begitu mudah dan saya tidak ragu menobatkannya sebagai tutorial pemaketan Debian termudah di dunia. Oleh karena itu, saya memberi judul tulisan ini Panduan Pemaketan Debian Termudah.

Penutup

Anda bisa memaketkan program apa pun sekarang. Anda mulai menjadi seorang packager sekaligus developer Ubuntu saat ini. Semoga panduan ini bermanfaat untuk Anda.

Iklan

15 thoughts on “Panduan Pemaketan Debian Termudah (Disertai Contoh)

  1. barunyobalinux

    apakah akang pernah extract file deb resmi pake archive manager, tanpa melakukan pengeditan, kemudian di repack lagi pake teknik di tutorial ini?

    dapatkah berjalan seperti normal nya?

    Balas
      1. barunyobalinux

        kalo dpkg repack itu ga perlu install paket paket yang disebutkan di tutorial ini kah?

        dapatkah bila kita bikin deb aplikasiku dengan dpkg-repack?

        dengan cara mengcopy semua struktur aplikasi ditempatnya dan bikin manual apt-status bahwa aplikasiku sudah terinstall

        kemudian di dpkg-repack

        ada kemungkinan kah seperti itu?

  2. Azrul Haifan

    Kang, jadi gini.
    kan saya mau buat paket deb dari aplikasi qt saya, seperti yang sudah dibahas di forum ubuntu-indonesia. Sebelum melangkah ke pemaketan. saya ingin tanya masalah dependensinya.

    Seperti yang diketahui, aplikasi yang di release dari qt membutuhkan pustaka. dan ini adalah sebagaian output requirement pustaka yang saya dapat dari perintah “ldd” aplikasi saya.
    _________________________________________________________________
    linux-gate.so.1 => (0xb77b5000)
    libQt5Widgets.so.5 => /usr/lib/i386-linux-gnu/libQt5Widgets.so.5 (0xb7173000)
    libQt5Gui.so.5 => /usr/lib/i386-linux-gnu/libQt5Gui.so.5 (0xb6d1b000)
    libQt5Core.so.5 => /usr/lib/i386-linux-gnu/libQt5Core.so.5 (0xb6884000)
    libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xb679b000)
    libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xb677e000)
    libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb65cf000)
    libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xb65b3000)
    libgobject-2.0.so.0 => /usr/lib/i386-linux-gnu/libgobject-2.0.so.0 (0xb6560000)
    libglib-2.0.so.0 => /lib/i386-linux-gnu/libglib-2.0.so.0 (0xb6454000)
    __________________________________________________________________

    nah apakah kita tidak perlu mengurus pustaka-pusataka tersebut. atau kita kopi semua pustakanya ke pemaketan juga ? atau menggunakan dependensi untuk menginstall pusataka itu ke komputer tujuan.

    Pada tutorial lain yang saya baca, pada file kontrol, disitu juga ditulisakan dependency dari aplikasi kita juga. Mohon bantuanya

    Balas
    1. Ade Malsasa Akbar Penulis Tulisan

      1) Apa tidak perlu mengurus? Tidak perlu. Sekali daftar dependensi dicantumkan di control di dalam paket, nanti apt di sistem target akan otomatis mengunduhkan semua dependensi yang dibutuhkan.

      2) Apa kita kopi saja pustakanya dalam paket? Ini bisa dilakukan tetapi dikhawatirkan menyalahi lisensi dari setiap pustaka yang dilibatkan.

      3) Saran saya: bacalah banyak-banyak tutorial/trid deploying di qt-project.org. Di sana dijelaskan panjang lebar teknik-tekniknya untuk Ubuntu. Jangan mudah menyerah.

      Balas
  3. Ping balik: Membuat Paket DEB sekaligus Mengunggahnya ke PPA Launchpad | Pandalon

  4. Ping balik: KNotes Ingat Aku Per 17 Maret 2015 | RESTAVA

  5. Ping balik: Membuat paket deb untuk aplikasimu dengan dpkg-repack | PENA - SARAN

  6. noviar bagus

    Persiapan Peralatan Pemaketan
    sudo apt-get install build-essential devscripts ubuntu-dev-tools debhelper fakeroot lintian tree
    Klo menggunakan debian 8, apakah peralatannya juga sama kang?

    Balas

Dilarang menggunakan emotikon

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s