Cara Membuat Paket RPM Hello World GNU di Fedora

Cara Membuat Paket RPM Hello World GNU di Fedora

RPM (akronim rekursif untuk RPM Package Manager) adalah sistem manajemen paket open dan open-source untuk Linux. Meskipun awalnya dibuat untuk digunakan di Linux topi merah, sekarang digunakan dalam banyak distribusi Linux seperti Centos, Fedora, Dan OpenSuse. Yang penting, nama RPM mengacu pada program manajer paket dan .RPM adalah format file.

Dalam artikel ini, kami akan menjelaskan tentang menulis file RPM, menunjukkan cara dengan mudah membuat sumber sederhana dan paket perangkat lunak biner, misalnya, GNU “Hello World” Paket RPM di Fedora Linux distribusi. Kami berasumsi bahwa Anda telah beberapa pemahaman dasar tentang paket RPM yang sudah dibuat sebelumnya, dan dengan proses pembangunan perangkat lunak open source gratis.

Pasang alat pengembangan di fedora

Mari kita mulai dengan menyiapkan lingkungan pengembangan Fedora Linux Dengan menjalankan perintah berikut untuk menginstal alat yang diperlukan untuk membangun RPM.

$ sudo DNF menginstal fedora-packager @development-tools 
Pasang alat pengembangan di fedora

Selanjutnya, tambahkan akun Anda yang tidak istimewa ke 'mengejek'Grup sebagai berikut (ganti tecmint dengan nama pengguna Anda yang sebenarnya). Ini akan memungkinkan Anda untuk menguji prosedur pembuatan dalam chroot yang bersih.

$ sudo usermod -a -g mock tecmint 

Sekarang, buat rpm build di ~/rpmBuild direktori dan verifikasi bangunan menggunakan perintah berikut. Ini akan menampilkan daftar sub-direktori, yang berisi kode sumber proyek, file konfigurasi RPM dan paket biner.

$ rpmdev-setuptree $ tree ~/rpmbuild/ 
Menciptakan lingkungan build

Inilah yang dimaksudkan untuk setiap direktori:

  1. MEMBANGUN - menyimpan berbagai %direktori buildroot saat paket dibangun.
  2. Rpms - akan berisi rpms biner di sub-direktori arsitektur.
  3. Sumber - menyimpan arsip sumber terkompresi dan tambalan apa pun, di sinilah perintah rpmBuild akan mencarinya.
  4. SPESIFIKASI - menyimpan file spec.
  5. SRPMS - Menyimpan RPM Sumber, bukan RPM biner.

Membangun RPM "Hello World"

Pada langkah ini, Anda perlu mengunduh kode sumber (juga dikenal sebagai "ke hulu"Sumber) dari proyek Hello World yang kami kemas, ke dalam ~/rpmBuild/sumber direktori dengan perintah wget berikut.

$ CD ~/RPMBuild/Sumber $ wget http: // ftp.gnu.org/gnu/halo/halo-2.10.ter.gz -p ~/rpmbuild/sumber 

Selanjutnya, mari kita konfigurasikan paket RPM menggunakan a .spec file (mari kita beri nama Halo.spec dalam hal ini) di ~/rpmBuild/spesifikasi direktori, menggunakan rpmdev-newspec program.

$ CD ~/RPMBuild/Spesifikasi $ RPMDEV-NEWSPEC Hello $ LS 
Buat file hello spec

Lalu buka Halo.spec file menggunakan editor favorit Anda.

$ vim halo.spec 

Template default akan terlihat seperti ini:

Nama: Hello Versi: Rilis: 1%?Dist Ringkasan: Lisensi: URL: Sumber0: Buildrequires: Membutuhkan: %Deskripsi %Persiapan %AutoSetup %Build %Konfigurasi %make_build %instal RM -RF $ rpm_build_root %make_install %File %lisensi add-license file-here %doc add-- Docs-here %changelog * Sel 28 Mei 2019 Aaron Kili 

Mari kita jelaskan secara singkat parameter default di a .spec mengajukan:

  • Nama - digunakan untuk mengatur nama untuk paket.
  • Versi: kapan - harus mencerminkan hulu.
  • Melepaskan - Angka yang Anda Bekerja Dalam Fedora.
  • Ringkasan - adalah deskripsi satu baris singkat dari paket, surat pertama harus huruf besar untuk menghindari keluhan rpmlint.
  • Lisensi - Periksa status lisensi perangkat lunak dengan memeriksa file sumber dan/atau file lisensi mereka, dan/atau dengan berbicara dengan penulis.
  • Url - Menentukan halaman beranda dari paket perangkat lunak.
  • Sumber0 - Menentukan file sumber. Ini bisa berupa URL langsung atau jalur kode sumber terkompresi perangkat lunak.
  • Buildrequires - Menentukan dependensi yang diperlukan untuk membangun perangkat lunak.
  • Memerlukan - Menentukan dependensi yang diperlukan untuk menjalankan perangkat lunak.
  • %persiapan - digunakan untuk menciptakan lingkungan untuk membangun paket rpm.
  • %membangun - digunakan untuk menyusun dan membangun kode sumber.
  • %Install - Ini digunakan untuk menginstal program. Ini mencantumkan perintah yang diperlukan untuk menyalin file yang dihasilkan dari proses pembuatan ke direktori buildroot.
  • %file - Bagian ini mencantumkan file yang disediakan oleh paket, yang akan diinstal pada sistem.
  • %Changelog - harus menyimpan pekerjaan untuk mempersiapkan RPM, terutama jika ada patch keamanan dan bug yang disertakan di atas sumber hulu pangkalan. Secara otomatis dihasilkan saat membuat halo.file spesifikasi. Data Changelog biasanya ditampilkan oleh RPM --Changelog -q .

Sekarang edit .spec mengajukan dan membuat perubahan seperti yang ditunjukkan.

Nama: Hello Versi: 2.10 rilis: 1%?Dist Ringkasan: Program "Hello World" dari Lisensi GNU: GPLV3+ URL: http: // ftp.gnu.org/gnu/%name Source0: http: // ftp.gnu.org/gnu/%name/%name-%Versi.ter.GZ BuildRequires: getText membutuhkan (pos): info membutuhkan (preun): info %deskripsi paket program "hello world" %prep %autosetup %build %configure Make %Make_Build %instal %make_install %find_lang %name rm - f %buildroot/ %_ infodir/dir %post/sbin/install-info %_ infodir/ %name.info %_ infodir/dir || : %preun if [$ 1 = 0]; lalu/sbin/install-info --delete %_ infodir/ %name.info %_ infodir/dir || : fi %file -f %name.lang %_ mandir/man1/halo.1.* %_ infodir/halo.info.* %_ bindir/halo %penulis dokumen Berita Changelog ReadMe Terima kasih lisensi %Menyalin %changelog * Sel tue 28 Mei 2019 Aaron Kili 

Anda akan melihat bahwa kami telah menggunakan beberapa parameter baru dalam file di atas yang belum dijelaskan. Ini disebut makro, Digunakan untuk membangun doa sistem yang ditentukan oleh RPM untuk mengatur jalur instalasi untuk paket. Oleh karena itu, biasanya lebih disukai daripada tidak kode keras jalur ini dalam file spec juga, tetapi gunakan makro yang sama untuk konsistensi.

Berikut ini adalah rpm build dan direktori makro bersama dengan definisi dan nilai defaultnya:

  • %make_build - digunakan di %membangun bagian dari file spesifikasi, itu menjalankan perintah Make.
  • %nama - mendefinisikan nama atau nama direktori.
  • %buildroot - %_ buildrootdir/%name-%Versi-%rilis.%_ arch, sama dengan $ buildroot
  • %_ infodir - %_ DATAROOTDIR/info, default:/usr/share/info
  • %_ mandir - %_ DadarOtDir/man, default:/usr/share/man
  • %_ bindir - %_ exec_prefix/bin, default:/usr/bin

Perhatikan bahwa Anda dapat menemukan nilai untuk ini makro dalam /usr/lib/rpm/platform/*/makro Atau lihat Pedoman Pengemasan: RPM Macro.

Membangun Paket RPM

Untuk membangun paket sumber, biner dan debugging, jalankan perintah RPMBuild berikut.

$ rpmbuild -ba halo.spec 

Setelah proses pembangunan, sumber rpms dan rpms biner akan dibuat di … /Srpms / Dan … /Rpms / direktori masing -masing. Anda dapat menggunakan program RPMLint untuk memeriksa dan memastikan bahwa file spesifikasi dan file RPM yang dibuat sesuai dengan aturan desain RPM:

$ rpmlint Halo.spec .../srpms/halo*…/rpms/*/halo* 
Periksa paket untuk kesalahan

Jika ada kesalahan seperti yang ditunjukkan pada tangkapan layar di atas, perbaiki sebelum Anda dapat melanjutkan.

Terakhir, gunakan program tiruan Untuk memeriksa apakah paket build akan berhasil di lingkungan pembangunan terbatas Fedora.

$ mock --verbose… /srpms /hello-2.10-1.FC29.SRC.RPM 
Periksa paket rpm build

Untuk informasi lebih lanjut, konsultasikan dokumentasi Fedora: Membuat paket RPM.

Itu saja! Di artikel ini, kami telah menjelaskan cara meningkatkan sistem fedora Anda untuk membuat sumber dan paket perangkat lunak biner sederhana. Kami juga menunjukkan cara membuat paket rpm pistol hello word. Gunakan formulir umpan balik di bawah ini untuk menghubungi kami untuk pertanyaan atau komentar.