GNU/Linux >> Belajar Linux >  >> Linux

Cara Mudah Membangun Paket Linux Menggunakan Fpm Untuk Berbagai Platform

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.deb
Unduh - 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.


Linux
  1. Cara Mengganti Nama Banyak File Bersama di Linux Menggunakan 3 Metode

  2. Cara Menambahkan Beberapa Rute di Linux Menggunakan Contoh Perintah ip

  3. Cara Memeriksa vendor paket RPM yang diinstal di Linux

  1. Cara membuat paket rpm

  2. Cara Membangun Paket Dari Sumber Menggunakan CheckInstall

  3. Cara mendengarkan beberapa koneksi tcp menggunakan nc

  1. Cara Mendaftar Paket yang Diinstal Yang Milik Grup Tertentu Di Linux

  2. Cara Mendaftar Paket yang Diinstal Dari Repositori Tertentu Di Linux

  3. Mengkompilasi dan membangun paket Linux untuk beberapa distribusi / platform