Ada banyak distribusi Linux, dan mengemas aplikasi untuk berbagai distribusi Linux cukup memakan waktu dan tugas yang sulit. Aplikasi pengemasan tidak mudah untuk semua orang. Untungnya, ada cara alternatif dan termudah untuk membuat paket. Temui Fpm (Lb jari p ackage m anagement), program baris perintah yang membantu membangun paket Linux dengan mudah.
Menggunakan Fpm, Anda dapat dengan mudah mengonversi paket ke format berbeda dan menginstalnya menggunakan manajer paket default distribusi.
Dan ya, Snaps dan flatpak Ubuntu berkembang pesat dan dapat diinstal pada sebagian besar distribusi Linux. Namun, jika Anda ingin mengemas aplikasi yang belum tersedia untuk distribusi Anda, Fpm adalah salah satu cara untuk melakukannya.
Dan, ini jauh lebih mudah daripada metode pengemasan tradisional. Fpm sepenuhnya gratis, alat sumber terbuka yang ditulis menggunakan Ruby bahasa pemrograman.
Dalam panduan ini, kita akan membahas bagaimana membangun sebuah paket menggunakan Fpm di Linux.
Instal Fpm di Linux
Karena fpm ditulis menggunakan Ruby, Anda harus menginstal Ruby terlebih dahulu. Ruby sudah diinstal sebelumnya dengan beberapa sistem operasi. Jika belum diinstal, jalankan perintah berikut tergantung pada distribusi yang Anda gunakan.
Di Arch Linux dan variannya:
$ sudo pacman -S ruby
Pada sistem Red Hat (Fedora 22 atau lebih lama, CentOS, dll):
$ sudo yum install ruby-devel gcc make rpm-build
Di Fedora 23 atau lebih baru:
$ sudo dnf install ruby-devel gcc make rpm-build
Pada sistem turunan Debian (Debian, Ubuntu, dll):
$ sudo apt-get install ruby ruby-dev rubygems gcc make rpm
Anda juga dapat menginstal Ruby menggunakan Linuxbrew manajer paket. Untuk menginstal Linuxbrew di Linux, lihat panduan berikut.
- Linuxbrew – Manajer Paket Umum Untuk Linux dan Mac OS X
Setelah menginstal Linuxbrew, jalankan perintah ini untuk menginstal Ruby.
$ brew install ruby
Setelah Anda menginstal Ruby, jalankan perintah berikut untuk menginstal FPM:
$ sudo gem install --no-ri --no-rdoc fpm
Anda akan melihat output seperti di bawah ini.
Fetching: cabin-0.9.0.gem (100%) Successfully installed cabin-0.9.0 Fetching: backports-3.6.8.gem (100%) Successfully installed backports-3.6.8 Fetching: arr-pm-0.0.10.gem (100%) Successfully installed arr-pm-0.0.10 Fetching: clamp-1.0.1.gem (100%) Successfully installed clamp-1.0.1 Fetching: ffi-1.9.17.gem (100%) Building native extensions. This could take a while... Successfully installed ffi-1.9.17 Fetching: childprocess-0.6.1.gem (100%) Successfully installed childprocess-0.6.1 Fetching: archive-tar-minitar-0.5.2.gem (100%) Successfully installed archive-tar-minitar-0.5.2 Fetching: io-like-0.3.0.gem (100%) Successfully installed io-like-0.3.0 Fetching: ruby-xz-0.2.3.gem (100%) Successfully installed ruby-xz-0.2.3 Fetching: stud-0.0.22.gem (100%) Successfully installed stud-0.0.22 Fetching: mustache-0.99.8.gem (100%) Successfully installed mustache-0.99.8 Fetching: insist-1.0.0.gem (100%) Successfully installed insist-1.0.0 Fetching: dotenv-2.2.0.gem (100%) Successfully installed dotenv-2.2.0 Fetching: pleaserun-0.0.28.gem (100%) Successfully installed pleaserun-0.0.28 Fetching: fpm-1.8.1.gem (100%) Successfully installed fpm-1.8.1 15 gems installed
Untuk memastikan apakah Fpm terinstal dengan benar, jalankan perintah berikut.
$ fpm --version
Atau,
$ fpm --v
Contoh keluarannya adalah:
1.8.1
Jika Anda melihat output seperti di atas, selamat! Fpm siap digunakan.
Unduh - eBuku Gratis:"Linux® Patch Management:Menjaga Sistem Linux Tetap Terkini"Membangun Paket Linux Menggunakan Fpm
Perintah khas untuk menggunakan FPM untuk membangun sebuah paket diberikan di bawah ini:
$ fpm -s <source type> -t <target type> [list of sources]...
Di sini,
- -s
- Jenis paket sumber. Itu bisa berupa direktori (dir), rubygem (permata), rpm (rpm), paket python (python), modul php pear (pear), dll. - -t
- jenis paket keluaran Anda, seperti .rpm, .deb dll.
Berikut adalah daftar lengkap jenis file sumber dan target.
Sumber:
- permata
- modul python
- pir
- direktori
- arsip tar(.gz)
- rpm
- debit
- paket simpul (npm)
- paket pacman (ArchLinux)
Target:
- debit
- rpm
- matahari
- freebsd
- tar
- direktori
- Berkas .pkg Mac OS X
- paket pacman (ArchLinux)
Anda juga dapat membuka bagian bantuan kapan saja dengan mengetikkan perintah berikut dari Terminal.
$ fpm --help
Membuat paket RPM
Saya akan menunjukkan beberapa contoh untuk memahami lebih baik. Perintah berikut akan mengunduh json gem latest terbaru dan mengubahnya menjadi paket .rpm:
$ fpm -s gem -t rpm json
Contoh keluaran:
Created package {:path=>"rubygem-json-2.0.3-1.x86_64.rpm"}
Perintah di atas akan mengunduh rubygem 'json' terbaru dari rubygems.org dan mengubahnya menjadi .rpm
kemasan. Seperti yang Anda lihat pada output di atas, perintah ini telah membuat paket bernama ‘rubygem-json-VERSION_ARCH.rpm’
dengan versi/lengkungan yang sesuai. Cukup mudah, bukan? Tentu saja!
Hanya butuh satu menit untuk membangun .rpm
ini kemasan. Paket-paket akan disimpan di direktori kerja saat ini. Sekarang, Anda dapat menginstal paket rpm ini pada semua distribusi berbasis rpm seperti RHEL, CentOS, Fedora dll seperti yang ditunjukkan di bawah ini.
$ sudo rpm -ivh rubygem-json-2.0.3-1.x86_64.rpm
Anda memeriksa detail paket .rpm yang baru dibuat seperti di bawah ini.
$ sudo rpm -qip rubygem-json-2.0.3-1.x86_64.rpm
Contoh keluaran:
Name : rubygem-json Version : 2.0.3 Release : 1 Architecture: x86_64 Install Date: (not installed) Group : Languages/Development/Ruby Size : 1487109 License : Ruby Signature : (none) Source RPM : rubygem-json-2.0.3-1.src.rpm Build Date : Tue 21 Feb 2017 03:45:50 PM IST Build Host : server1.ostechnix.local Relocations : / Packager : <[email protected]> Vendor : Florian Frank URL : http://flori.github.com/json Summary : This is a JSON implementation as a Ruby extension in C. Description : This is a JSON implementation as a Ruby extension in C.
Seperti yang Anda lihat pada output di atas, fpm secara otomatis memilih nama paket, versi, arsitektur, tanggal pemasangan, pengelola, beranda, dan deskripsi semuanya dari paket ruby itu sendiri. Anda tidak perlu menambahkan apa pun secara manual. Fpm akan mengurus semuanya.
Untuk melihat dependensi, jalankan saja:
$ rpm -qRp rubygem-json-2.0.3-1.x86_64.rpm
Contoh keluaran
rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rpmlib(CompressedFileNames) <= 3.0.4-1
Mari kita lihat contoh lain.
Membuat paket DEB
Dalam contoh di atas, kami telah membangun json gem dan mengubahnya menjadi paket .rpm menggunakan:
$ fpm -s gem -t rpm json
Demikian pula, untuk membuat deb menjadi paket, cukup ganti kata rpm
dengan deb
.
$ fpm -s gem -t deb json
Contoh keluaran:
Debian packaging tools generally labels all files in /etc as config files, as mandated by policy, so fpm defaults to this behavior for deb packages. You can disable this default behavior with --deb-no-default-config-files flag {:level=>:warn} Debian packaging tools generally labels all files in /etc as config files, as mandated by policy, so fpm defaults to this behavior for deb packages. You can disable this default behavior with --deb-no-default-config-files flag {:level=>:warn} Created package {:path=>"rubygem-json_2.0.3_amd64.deb"}
Untuk memeriksa detail paket yang baru dibuat, jalankan:
$ dpkg --info rubygem-json_2.0.3_amd64.deb
Contoh keluaran:
new debian package, version 2.0. size 581592 bytes: control archive=4018 bytes. 327 bytes, 12 lines control 11986 bytes, 126 lines md5sums Package: rubygem-json Version: 2.0.3 License: Ruby Vendor: Florian Frank Architecture: amd64 Maintainer: <[email protected]> Installed-Size: 1640 Provides: rubygem-json Section: Languages/Development/Ruby Priority: extra Homepage: http://flori.github.com/json Description: This is a JSON implementation as a Ruby extension in C
Untuk melihat dependensi paket di atas, jalankan:
$ dpkg -c ./rubygem-json_2.0.3_amd64.debUnduh - eBuku gratis:"Platform Pengembangan Linux"
Buat paket versi tertentu
Semua perintah sebelumnya telah membuat versi stabil terbaru. Jika Anda perlu membuat paket versi tertentu, Anda dapat melakukannya menggunakan perintah:
$ fpm -s gem -t deb -v 2.0.0 json
Perintah di atas akan mengunduh rubyjson verion 2.0.0 dan mengubahnya menjadi .deb
paket.
Contoh keluaran:
[...] Created package {:path=>"rubygem-json_2.0.0_amd64.deb"}
Demikian pula, Anda dapat menetapkan nama tertentu untuk paket seperti di bawah ini.
$ fpm -s gem -t deb -n my_json -v 2.0.0 json
Contoh keluaran:
[...] Created package {:path=>"my-json_2.0.0_amd64.deb"}
Seperti yang Anda lihat pada output di atas, saya telah menetapkan nama khusus untuk paket yaitu my-json_2.0.0_amd64.deb
.
Konversi paket RPM ke DEB dan sebaliknya
Anda tidak perlu membuat paket untuk platform yang berbeda. Cukup konversikan dari satu format ke format lainnya. Perintah berikut akan mengubah paket rpm menjadi paket deb.
$ fpm -t deb -s rpm rubygem-json-2.0.3-1.x86_64.rpm
Harap dicatat bahwa saya telah mengubah sedikit sintaks. tipe target (-t) didahulukan dan tipe sumber diurutkan berikutnya.
Contoh keluaran:
[..] Created package {:path=>"rubygem-json_2.0.3-1_amd64.deb"}
Buat paket dari direktori sumber
Berikut adalah langkah-langkah sederhana untuk membuat rpm program 'halo'.
$ wget http://ftp.gnu.org/gnu/hello/hello-2.10.tar.gz
$ tar -zxvf hello-2.10.tar.gz
$ cd hello-2.10/
$ ./configure --prefix=/usr
$ make
Selanjutnya, instal ke direktori sementara seperti yang ditunjukkan di bawah ini:
$ mkdir /tmp/installdir
$ make install DESTDIR=/tmp/installdir/
Sekarang, buat paket rpm menggunakan Fpm seperti di bawah ini.
$ fpm -s dir -t rpm -n hello -v 2.10 -C /tmp/installdir
Di sini,
-s
menunjukkan jenis file sumber (direktori),-t
adalah jenis paket (rpm),-n
menunjukkan nama paket-v
adalah versi;-C
adalah direktori (Misalnya/tmp/installdir
) tempat fpm akan mencari file.
Contoh keluaran:
Created package {:path=>"hello-2.10-1.x86_64.rpm"}
Untuk membuat paket deb, jalankan perintah berikut:
$ fpm -s dir -t deb -n hello -v 2.10 -C /tmp/installdir
Demikian pula, Anda dapat membuat paket apa pun dari direktori.
Bacaan terkait:
- Cara Membuat Paket Debian Dari Sumber
- Cara Membuat Paket Dari Sumber Menggunakan CheckInstall
- Cara Mengonversi Paket Linux Dengan Alien
Kesimpulan
Fpm menyederhanakan proses pembuatan paket untuk banyak distribusi tanpa memiliki banyak pengetahuan pemrograman. Bahkan pengguna Linux tingkat menengah dapat dengan mudah membuat paket apa pun untuk platform apa pun dalam waktu singkat.