Seperti yg telah diketahui bersama, paket instalasi program/aplikasi untuk Slackware menggunakan ekstensi .tgz secara default. Tetapi lebih baik kita coba melihat isi dari sebuah paket program/aplikasi milik Slackware. Secara garis besar sebuah paket program/aplikasi Slackware memiliki struktur seperti ini:
Direktori install berisi file script instalasi yaitu doinst.sh dan file deskripsi/summary dari program tsb. Di dalam file doinst.sh dapat ditulis script2 post-instalasi seperti pembuatan link/symbolic link, penambahan user dalam sistem, pengubahan permisi untuk file/direktori tertentu, pokoknya semua yang bisa dilakukan dalam shell. Deskripsi dalam file slack-desc, sangat berguna untuk mencari deskripsi sebuah program karena isi file ini akan di-copy ke dalam database paket slackware yang diletakkan di direktori /var/log/packages. Direktori yang saya tulis sebagai /DIR_SISTEM merupakan tempat/lokasi direktori dimana file2 dalam paket program tsb akan di-install. Misalnya jika dalam paket a.tgz terdapat
maka secara mudahnya dapat dikatakan bahwa a.conf akan di-install ke dalam direktori /etc dan paket binary_a akan di-install ke dalam direktori /usr/bin. Sekarang yang menjadi masalah adalah bagaimana membuat sebuah paket program dari source agar memiliki struktur seperti di atas.
Slackware sebenarnya sudah menyediakan utilitas untuk keperluan ini dengan menggunakan binary makepkg. Urutan pembuatan paket dengan makepkg secara mudah adalah seperti ini (misalnya source code abc.tar.gz):
- 1. Dekompres file abc.tar.gz dengan:
|-----handy-ruler------------------------------------------------------| abc: Program ABC abc: abc: Deskripsi singkat program abc
hasilnya adalah direktori source abc-1.0.0.
2. cd ke direktori abc-1.0.0
3. Lakukan pre-instalasi konfigurasi dengan menjalankan script configure:
Untuk mengetahui opsi konfigurasi dari source tsb (abc-1.0.0) bisa dengan melakukan:
Prosedur ini akan membuat Makefile sesuai dengan hasil system checking yang dilakukan script configure dari file dasar/template Makefile.in.
4. Jika tidak ada kesalahan dan Makefile terbuat dengan sukses, lakukan proses building dengan make:
5. Jika proses no. 4 selesai tanpa kesalahan, kita mulai membuat paket program tsb, atau paket tgz-nya.
- 5.a. Jika file Makefile source menyertakan string informasi DESTDIR, dapat diketahui dengan melakukan:
maka langkah pertama adalah membuat direktori instalasi, misalnya pkg yang letaknya terserah kita. kemudian lakukan:
binary yang telah terbuat pada prosedur 4 akan di-install ke dalam direktori pkg dan secara otomatis make akan membuat child directory dalam direktori pkg sesuai dengan informasi dari string DESTDIR dalam file Makefile, misalnya /usr/bin, /usr/lib, dst.
5.b. Jika file Makefile tidak memiliki string DESTDIR, maka kita harus melakukan pembuatan tree direktori secara manual, minimal kita membuat direktori prefix, misalnya /usr atau /usr/local atau yang lainnya. Jadi kita buat dulu direktori instalasi, misalnya pkg dan kemudian di dalam pkg kita buat direktori /usr atau /usr/local atau yang lainnya yang dibutuhkan oleh program yang akan di-install. Setelah itu lakukan (misalnya prefix direktorinya adalah /usr):
Periksa apakah semua binary yang diinginkan telah ter-install ke dalam direktori instalasi. Jika sudah yakin bahwa semua binary/file telah te-install sempurna maka file2 binary yang ada dalam direktori instalasi dapat di-stripping untuk menghilangkan simbol2 debugging dan dapat mengurangi ukuran file2 binary yang akan di-install. Lakukan dengan cara:
untuk libraries ada dua langkah, yang pertama untuk shared libs (file .so) dan yg kedua untuk static libs (file .a) (addition from rizzie, thanks):
strip hanya dapat men-stripping file2 binary. File teks atau lainnya akan di-ignore.
7. Buat direktori install di direktori install
8. Buat file deskripsi slack-desc dan letakkan dalam direktori install yang telah dibuat. Contoh file slack-desc dapat dilihat di sini
Syarat slack-desc hanya satu yaitu nama paket program dalam file slack-desc harus sama dengan nama paket program sebenarnya, misalnya abc-1.0.0, maka dalam slack-desc ditulis:
angka versi tidak perlu ditulis dalam slack-desc.
9. Setelah prosedur 8 selesai, paket dibuat dengan menggunakan makepkg di direktori instalasi (dalam kasus ini direktori pkg) dan jangan lupa kita tentukan output direktori tempat paket2 kita akan disimpan sebelum kita install:
ARCH=optimasi yang digunakan sewaktu building (prosedur 4). Lihat opsi yang diperlukan untuk membuat paket untuk arsitektur CPU dalam opsi help script configure. Biasanya string ini mengikuti tipe prosesor yang digunakan kompiler jika tidak diberikan opsi khusus, jadi isinya bisa i486, i586, i686, dst.
REV=angka ini menunjukkan urutan perubahan minor dari source code yang digunakan atau perubahan konfigurasi paket dari source code yang sama. misalnya untuk Dropline GNOME menggunakan 1dl, 2dl, 3dl, dst.
Dalam prosedur ini kita akan mendapat pertanyaan dari program makepkg, yaitu:
- 1. Penghilangan link/symbolic link yang ada dan membuat script untuk membuat link2 tsb sewaktu instalasi. 2. Mengubah permisi dan kepemilikan file2 dan direktori dalam paket.
Dapat pula disertakan/ditambahkan file2 konfigurasi atau lainnya ke dalam direktori instalasi misalnya menambahkan file2 dokumentasi yang biasanya diletakkan di direktori /usr/share/NAMA_PROGRAM.
10. Tunggu beberapa saat, jika tidak aa error maka paket kita, misalnya abc-1.0.0-i686-1wl.tgz terbuat dengan sempurna dan siap di-install edngan pkgtool ato installpkg:
Dengan begini proses install dan un-install paket program/aplikasi yang dibuat sendiri dari soure code menjadi mudah dan lebih aman.