2.4. Membuat Paket RPMS

Saya menganggap Anda telah mengetahui dasar-dasar RPM seperti install dan uninstall paket. Selain itu Anda juga diharapkan telah mengetahui bagaimana membuat paket RPM dari kode sumber yang ada. Anda dapat mengacu ke beberapa sumber informasi mengenai RPM, antara lain:

2.4.1. Persiapan Lingkungan Kerja

Sebelum memulai, kita akan membuat direktori kerja RPM agar kita tidak perlu melakukan proses build sebagai root:
   bash$ mkdir -p ~/rpm/{RPMS,SRPMS,BUILD,SOURCES,SPECS}
   bash$ mkdir -p ~/rpm/RPMS/{i386,noarch}
  

Sekarang buat file ~/.rpmrc yang isinya:
    buildarchtranslate: i386: i386
    buildarchtranslate: i486: i386
    buildarchtranslate: i585: i386
    buildarchtranslate: i686: i386
   

Buat juga file ~/.rpmmacros:
    %_topdir /home/rimba/rpm
    %distribution Rimba Linux
    %disturl <http://rimbalinux.sourceforge.net>
    %packager Tim Rimba Linux <rimbalinux-devel@lists.sourceforge.net>
    %vendor Komunitas Linux Indonesia
    %_vendor rimba
   
Diasumsikan bahwa /home/rimba adalah home direktori kita.

2.4.2. Memperoleh Kode Sumber

Kode sumber (source code) atau program yang akan dipaketkan dapat dicari dari situs-situs berikut:

Letakkan kode sumber yang diperoleh (biasa dengan akhiran .tar.gz, .tar.bz2, dll.) di dalam direktori ~/rpm/SOURCES yang telah kita buat sebelumnya.

2.4.3. Membuat Paket RPM untuk Rimba Linux

Setiap paket RPM yang dibuat harus ada keterangan berbahasa Indonesia. Tambahkan 'r' sebagai identitas RPM yang dibuat (dirilis). Berikut adalah contoh header salah satu file spec yang dibuat untuk paket RPM Rimba Linux:

Teladan 2-1. Contoh Header sebuah File spec Rimba Linux

  Summary: A smaller version of the Bourne shell (sh).
  Summary(id): Versi lebih kecil dari Bourne shell (sh). (1)
  Name: ash
  Version: 0.3.7
  Release: 1r	(2)
  License: BSD
  Group: System Environment/Shells
  Source: ftp://ftp.debian.org/debian/dists/woody/main/source/shells/%{name}_%{version}.orig.tar.gz
  Patch0: ftp://ftp.debian.org/debian/dists/woody/main/source/shells/%{name}_%{version}-13.diff.gz
  Prereq: fileutils grep
  BuildPrereq: pmake >= 1.45 byacc
  Buildroot: %{_tmppath}/%{name}-%{version}-root
  Conflicts: mkinitrd <= 1.7
 
  %description
  A shell is a basic system program which interprets user's keyboard or
  mouse commands. The ash shell is a clone of Berkeley's Bourne shell
  (sh). Ash supports all of the standard sh shell commands, but is
  considerably smaller than sh.  The ash shell lacks some Bourne shell
  features (for example, command-line histories), but it uses a lot less
  memory.
 
  You should install ash if you need a lightweight shell with many of
  the same capabilities as the sh shell.
 
  %description -l id (3)
  Shell adalah perintah dasar sistem yang menginterpretasikan perintah
  keyboard atau mouse. Shell ash adalah tiruan dari Berkeley's Bourne shell
  (sh). Ash mendukung semua perintah shell sh, tapi lebih kecil dari sh.
  Sh memiliki kekurangan feature Bourne shell seperti history), tapi
  menggunakan memory lebih kecil.
 
  Anda harus instal ash jika ingin shell kecil dengan kemampuan sama
  dengan sh.
 

(1)
Perhatikan Summary(id) yang memuat informasi umum mengenai paket ini dalam bahasa Indonesia.
(2)
Setiap rilis RPM diberi identitas r yang menandakan paket RPM ini dibuat oleh Rimba Linux
(3)
Keterangan yang lebih rinci mengenai paket RPM ini.

FIXME: Source dan Patch0 terlalu panjang dan tidak kelihatan lengkap bila dirender menjadi PDF.

Kemudian di setiap akhir file spec tambahkan changelog, nama, dan email Anda. Misalnya:
 * Mon Sep 2 2001 Yogya Linux <yogyalinux@yahoo.com>
 - initial built for Rimba Linux
 

2.4.4. Perawatan Paket

Agar kita memiliki paket yang up-to-date, luangkan waktu untuk mencari bug fixes, kode sumber terbaru, dan lain-lain. Apabila Anda ingin mengupdate paket, informasikan ke milis pengembang di agar tidak bentrok dengan pengembang lain yang mungkin juga telah atau akan mengupdate paket tersebut.

Mekanisme:

  1. Masing-masing pengembang memperoleh wewenang untuk memaket aplikasi.

  2. Cari versi terakhir dari aplikasi tersebut (file a).

  3. Build di mesin sendiri, hingga proses make (tidak perlu make install.)

  4. Jika ada dependency, cari semua dependencynya (file b), dan install hingga semua dependency terpenuhi.

  5. Buat file rpm dari dependency tersebut (file b), hingga berhasil dengan output b.rpm dan b.src.rpm.

  6. Jalankan kembali proses pembuatan RPM untuk file a, hingga proses make.

  7. Buat file RPM dari file a, sehingga menghasilkan a.rpm dan a.src.rpm.

  8. Jika telah selesai, upload ke server development ( ftp://rimbalinux.dhs.org) ke empat file tersebut, yaitu a.rpm, b.rpm, a.src.rpm, dan b.src.rpm. Informasikan ke milis jika telah diupload, beserta keterangan dependency, dan urutannya. (Misal: install b.rpm dulu, baru a.rpm.)

  9. Setiap mengupdate atau mengganti file spec, jangan lupa membuat informasi ChangeLog.