Kuliax

GNU/Linux untuk Kampus

Alat Pengguna

Alat Situs


devel:pkg:build:manual

Membangun Paket Debian

Status: in progress

Halaman ini berisi langkah-langkah untuk membangun paket Debian dari awal dengan standar yang benar-benar Debian.

Diharapkan pengembang Kuliax dapat menggunakan, mengembangkan, dan memeliharanya untuk menghasilkan paket Debian yang OK. Jika dimungkinkan bisa saja pengembang Kuliax dapat melamar juga menjadi pengembang Debian lewat prosedur Debian New Maintainer.

Ke depan, langkah-langkah ini bisa dijadikan secara otomatis menjadi sebuah sistem dimana pengembang tinggal memberikan masukan dan mendapatkan keluaran paket Debian.

Kebutuhan Mesin

  • Minimal mesin x86 600 MHz dengan RAM 128 MB atau lebih tinggi
  • Terinstal Debian GNU/Linux 4.0r3, sebaiknya dimutakhirkan ke testing/lenny
  • Tersedia ruang disk cukup untuk menyimpan kode sumber dan hasil pembangunan paket

Kebutuhan Perangkat Lunak

  • build-essential, paket ini hanyalah meta-package yang akan menginstal paket-paket dasar untuk melakukan pengembangan yaitu dpkg-dev, gcc, g++, libc6-dev, make
  • Paket-paket yang direkomendasikan untuk mempermudah proses pembangunan paket, dan administrasi: debhelper, deborphan, dh-make, devscripts, fakeroot, gnupg.
  • Paket-paket untuk pemeriksaan paket .deb yang dihasilkan: linda, lintian
  • Paket opsional: cdbs, pbuilder

Pemilihan dan Pemeriksaan Aplikasi/Pustaka

  • Periksa dan pastikan bahwa aplikasi atau pustaka yang ingin kita paketkan tidak ada di dalam repositori Debian dan kita ingin menyertakannya di Kuliax. Paling tidak kita akan memaketkan aplikasi, skrip, pustaka, karya seni yang dibuat khusus di Kuliax. Gunakan perintah:
    $ apt-cache search [kata kunci]
  • Kunjungi situs aplikasi atau pustaka yang ingin kita paketkan ke Kuliax. Kita ambil aplikasi cnet sebagai contoh saja ;-)
  • Periksa lisensi dari aplikasi atau pustaka dan ketersediaan kode sumber di situsnya. Cnet berlisensi GNU GPL versi 2, lihat Downloading and installing cnet sebelum bagian Requirements.

Pengunduhan Aplikasi/Pustaka

  • Buat direktori tempat kita akan bekerja dengan paket cnet dan masuklah ke direktori tersebut.
    $ mkdir kuliax-devel
    $ cd kuliax-devel/
  • Unduh paket sumber aplikasi atau pustaka yang ingin kita paketkan ke Kuliax.
    $ wget -c http://www.csse.uwa.edu.au/cnet/cnet-2.0.10.tgz

Ekstrak dan Uji Coba

  • Paket cnet-2.0.10.tgz ketika diekstrak, isinya akan tersebar pada direktori kerja bukan pada sebuah direktori dengan nama cnet-2.0.10/, tentu saja jika Anda sudah mencobanya.
  • Buat direktori paket terlebih dahulu. Perhatikan bahwa standar untuk penamaan dan versi paket adalah <nama paket>-<versi>.
    $ mkdir cnet-2.0.10
    $ tar zxvf cnet-2.0.10.tgz -C cnet-2.0.10/
  • Masuk ke direktori cnet-2.0.10/
    $ cd cnet-2.0.10/
  • Cobalah membaca dokumentasi yang tersedia seperti README atau sejenisnya untuk mencari tahu bagaimana mengkompilasi, menginstal, dan lokasi instalasi di dalam sistem. Umumnya kode sumber aplikasi disertai dengan skrip configure untuk mengkonfigurasi lingkungan kompilasi dan dependensi. Tiga langkah yang umum digunakan adalah: ./configure-make-make install :-)
  • Pada paket cnet direktori dokumentasi ada di DOC/. Coba untuk melakukan kompilasi dan catat pesan kesalahan, periksa dan telusuri permasalahan. Buat tambalan jika kita mengubah berkas pada kode sumber. Detail selanjutnya bisa lihat ke Modifikasi Kode Sumber

Debianisasi

  • Set variabel DEBFULLNAME dan DEBEMAIL yang akan digunakan dh_make
    $ export DEBFULLNAME="Iwan Setiawan" DEBEMAIL="stwn@NOSPAMkuliax.org"

    Masukkan ke .bashrc jika kita ingin variabel-variabel tersebut terset secara otomatis ketika kita login.

  • Jika semuanya baik-baik saja, lakukan debianisasi dengan dh-make
    $ dh_make -c gpl -e stwn@NOSPAMkuliax.org -s -f ../cnet-2.0.10.tgz
    Maintainer name : Iwan Setiawan
    Email-Address   : stwn@NOSPAMkuliax.org
    Date            : Sun, 29 Jun 2008 15:11:00 +0700
    Package Name    : cnet
    Version         : 2.0.10
    License         : gpl
    Using dpatch    : no
    Type of Package : Single
    Hit <enter> to confirm: y
    Done. Please edit the files in the debian/ subdirectory now. You should also
    check that the cnet Makefiles install into $DESTDIR and not in / .

Modifikasi Kode Sumber

Penyuntingan Berkas di debian/

  • Masuk ke direktori debian/
    $ cd debian/
  • Hapus berkas-berkas contoh berekstensi .ex dan .EX yang tidak diperlukan.
    $ rm *.ex *.EX
  • Sunting berkas-berkas di dalam direktori debian/, ini adalah berkas-berkas yang diperlukan untuk membangun paket debian
    • changelog: catatan perubahan paket
    • control: berkas kontrol berisi informasi paket dari nama paket, dependensi, sampai dengan deskripsi. Pastikan sesuai dengan aturan yang ada di dokumen New Maintainer's Guide dan Debian Policy.
    • copyright: berkas berisi informasi pengarang, hak cipta, dan lisensi aplikasi/pustaka. Isilah dengan benar dan periksa kesahihan sumbernya.
    • rules: aturan-aturan pembangunan paket, mirip dengan Makefile. Gunakan skrip helper Debian sebisa mungkin ;-)
    • Berkas-berkas lain yang diperlukan seperti dir untuk membuat direktori, docs untuk nama berkas dokumentasi, dst.

Pembuatan Kunci GPG

  • Buat kunci GPG jika kita belum sama sekali membuatnya. Kunci GPG dibuat untuk melakukan penandatangan dan otentifikasi terhadap paket yang kita buat dan berkas-berkas yang berhubungan. Jika Anda sudah mempunyai kunci GPG lewati saja bagian ini.
  • Ketik perintah untuk menghasilkan kunci GPG dan ikut langkah-langkahnya
    $ gpg --gen-key
    gpg (GnuPG) 1.4.6; Copyright (C) 2006 Free Software Foundation, Inc.
    This program comes with ABSOLUTELY NO WARRANTY.
    This is free software, and you are welcome to redistribute it
    under certain conditions. See the file COPYING for details.
    
    Please select what kind of key you want:
       (1) DSA and Elgamal (default)
       (2) DSA (sign only)
       (5) RSA (sign only)
    Your selection?
    DSA keypair will have 1024 bits.
    ELG-E keys may be between 1024 and 4096 bits long.
    What keysize do you want? (2048)
    Requested keysize is 2048 bits
    Please specify how long the key should be valid.
             0 = key does not expire
          <n>  = key expires in n days
          <n>w = key expires in n weeks
          <n>m = key expires in n months
          <n>y = key expires in n years
    Key is valid for? (0) 0
    Key does not expire at all
    Is this correct? (y/N) y
    
    You need a user ID to identify your key; the software constructs the user ID
    from the Real Name, Comment and Email Address in this form:
    
        "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"
    
    Real name: Iwan Setiawan
    Email address: stwnNOSPAM@NOSPAMkuliax.NOSPAMorg
    Comment: stwn
    You selected this USER-ID:
        "Iwan Setiawan (stwn) <stwnNOSPAM@NOSPAMkuliax.NOSPAMorg>"
    
    Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
    You need a Passphrase to protect your secret key.
    
    We need to generate a lot of random bytes. It is a good idea to perform
    some other action (type on the keyboard, move the mouse, utilize the
    disks) during the prime generation; this gives the random number
    generator a better chance to gain enough entropy.
    ++++++++++++++++++++.+++++++++++++++.++++++++++++++++++++.+++++....+++++..+++++++++++++++++++++++++++++++++++++++++++++.++++++++++++++++++++>+++++.+++++........+++++
    We need to generate a lot of random bytes. It is a good idea to perform
    some other action (type on the keyboard, move the mouse, utilize the
    disks) during the prime generation; this gives the random number
    generator a better chance to gain enough entropy.
    .++++++++++..+++++++++++++++++++++++++++++++++++++++++++++++++++++++.+++++++++++++++++++++++++.+++++++++++++++++++++++++.+++++..+++++.+++++++++++++++.+++++>+++++..+++++>..+++++...<+++++..........>..+++++....................+++++^^h^^
    gpg: key 301A3CAF marked as ultimately trusted
    public and secret key created and signed.
    
    gpg: checking the trustdb
    gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
    gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
    pub   1024D/301A3CAF 2008-06-13
          Key fingerprint = 5B0B FFDE B470 C54E 4CB6  B938 E328 A6D6 301A 3CAF
    uid                  Iwan Setiawan (stwn) <stwnNOSPAM@NOSPAMkuliax.NOSPAMorg>
    sub   2048g/44E05D80 2008-06-13

Pembangunan Paket Debian

  • Lakukan pembangunan paket dengan perintah:
    $ fakeroot debuild

    atau

    $ fakeroot debian/rules binary

    Jika ada dependensi atau pesan kesalahan segera perbaiki, sesuaikan dengan instruksinya ;-)

Ujicoba Paket Debian

Gunakan linda dan lintian

Pemutakhirkan Paket

  • Gunakan dch untuk melakukan catatan perubahan paket
    $ cd paket-0.1.2/
    $ dch -i
  • Mutakhirkan berkas yang diperlukan
  • Bangun ulang paket debian

Referensi

devel/pkg/build/manual.txt · Terakhir diubah: 2008/12/30 14:55 (Perubahan eksternal)