Cara Membuat Pakej RPM GNU Hello Dunia di Fedora

Cara Membuat Pakej RPM GNU Hello Dunia di Fedora

RPM (akronim rekursif untuk Pengurus Pakej RPM) adalah sistem pengurusan pakej percuma dan sumber terbuka untuk Linux. Walaupun ia pada asalnya dibuat untuk digunakan di Red Hat Linux, sekarang ia digunakan dalam banyak pengagihan linux seperti Centos, Fedora, dan Opensuse. Yang penting, nama rpm merujuk kepada program pengurus pakej dan .rpm adalah format fail.

Dalam artikel ini, kami akan menerangkan mengenai penulisan fail RPM, menunjukkan cara dengan mudah membuat sumber mudah dan pakej perisian binari, contohnya, GNU "Hello World" Pakej RPM dalam Fedora Linux pengedaran. Kami menganggap bahawa anda mempunyai pemahaman asas mengenai pakej RPM pra-dibuat, dan dengan proses bangunan perisian sumber terbuka percuma.

Pasang alat pembangunan di fedora

Mari mulakan dengan menubuhkan persekitaran pembangunan di Fedora Linux dengan menjalankan arahan berikut untuk memasang alat yang diperlukan untuk membina RPM.

$ sudo dnf memasang fedora-packager @pembangunan-alat 
Pasang alat pembangunan di fedora

Seterusnya, tambahkan akaun anda yang tidak istimewa ke 'mengejek'Kumpulan seperti berikut (ganti Tecmint dengan nama pengguna sebenar anda). Ini akan membolehkan anda menguji prosedur membina dalam chroot yang bersih.

$ sudo usermod -a -g mock tecmint 

Sekarang, buat binaan RPM di anda ~/rpmBuild direktori dan sahkan binaan menggunakan arahan berikut. Ia akan menunjukkan senarai sub-direktori, yang mengandungi kod sumber projek, fail konfigurasi rpm dan pakej binari.

$ rpmdev-setuptree $ pohon ~/rpmbuild/ 
Mewujudkan persekitaran binaan

Inilah yang dimaksudkan oleh setiap direktori untuk:

  1. Membina - menyimpan pelbagai direktori membina %apabila pakej dibina.
  2. Rpms - akan mengandungi rpm binari dalam sub-direktori seni bina.
  3. Sumber - kedai arkib sumber termampat dan mana -mana patch, ini adalah di mana perintah rpmbuild akan mencari mereka.
  4. Spesifikasi - menyimpan fail spec.
  5. SRPMS - menyimpan sumber rpm bukan rpm binari.

Membina RPM "Hello World"

Dalam langkah ini, anda perlu memuat turun kod sumber (juga dikenali sebagai "Hulu"Sumber) Projek Hello World Kami Pembungkusan, ke ~/rpmbuild/sumber direktori dengan arahan wget berikut.

$ cd ~/rpmbuild/sumber $ wget http: // ftp.gnu.org/gnu/hello/hello-2.10.tar.gz -p ~/rpmbuild/sumber 

Seterusnya, mari kita konfigurasikan pakej rpm menggunakan a .spesifikasi fail (mari namakannya Helo.spesifikasi dalam kes ini) di ~/rpmbuild/spesifikasi direktori, menggunakan RPMDEV-Newspec program.

$ cd ~/rpmbuild/spesifikasi $ rpmdev-newspec hello $ ls 
Buat Fail Hello Spec

Kemudian buka Helo.spesifikasi fail menggunakan editor kegemaran anda.

$ vim hello.spesifikasi 

Templat lalai sepatutnya kelihatan seperti ini:

Nama: Hello Versi: Siaran: 1%?Dist Ringkasan: Lesen: URL: Sumber Dokumen di sini %Changelog * TUE 28 Mei 2019 Aaron Kili 

Mari kita jelaskan parameter lalai secara ringkas di a .spesifikasi Fail:

  • Nama - digunakan untuk menetapkan nama untuk pakej.
  • Versi - harus mencerminkan hulu.
  • Pembebasan - Nombor yang anda bekerja di Fedora.
  • Ringkasan - adalah penerangan satu baris ringkas pakej, huruf pertama harus menjadi huruf besar untuk mengelakkan aduan rpmlint.
  • Lesen - Semak status lesen perisian dengan memeriksa fail sumber dan/atau fail lesen mereka, dan/atau dengan bercakap dengan penulis.
  • Url - Menentukan halaman utama pakej perisian.
  • Sumber0 - Menentukan fail sumber. Ia boleh menjadi url langsung atau jalan kod sumber termampat perisian.
  • Buildrequires - Menentukan kebergantungan yang diperlukan untuk membina perisian.
  • Memerlukan - Menentukan kebergantungan yang diperlukan untuk menjalankan perisian.
  • %prep - digunakan untuk mewujudkan persekitaran untuk membina pakej rpm.
  • %Membina - digunakan untuk menyusun dan membina kod sumber.
  • %Pasang - ini digunakan untuk memasang program. Ia menyenaraikan perintah yang diperlukan untuk menyalin fail yang dihasilkan dari proses binaan ke direktori bangunan.
  • %fail - Bahagian ini menyenaraikan fail yang disediakan oleh pakej, yang akan dipasang pada sistem.
  • %Changelog - Sekiranya menyimpan kerja untuk menyediakan rpm, terutamanya jika terdapat keselamatan dan tompok bug yang disertakan di atas sumber hulu asas. Ia dihasilkan secara automatik semasa membuat hello.fail spec. Data changelog biasanya dipaparkan oleh RPM --CHANGELOG -Q .

Sekarang edit anda .spesifikasi fail dan buat perubahan seperti yang ditunjukkan.

Nama: Hello Versi: 2.10 Siaran: 1%?Dist Ringkasan: Program "Hello World" dari Lesen GNU: GPLV3+ URL: http: // ftp.gnu.org/gnu/%name sumber0: http: // ftp.gnu.org/gnu/%name/%name-%versi.tar.GZ BuildRequires: GettExt Memerlukan (Pos): Maklumat Memerlukan (Preun): Info %Deskripsi Pakej Program "Hello World" %Prep %Autosetup %Build %Configure Buat %Make_Build %Pasang %Make_install %find_lang %name rm - f %buildroot/ %_ infodir/dir %post/sbin/install-info %_ infodir/ %name.info %_ infodir/dir || : %preun jika [$ 1 = 0]; kemudian/sbin/install-info --delete %_ infodir/ %name.info %_ infodir/dir || : fi %fail -f %name.lang %_ Mandir/man1/hello.1.* %_ infodir/hello.maklumat.* %_ bindir/hello %doc penulis changelog news readme terima kasih todo %salinan lesen %changelog * tue 28 Mei 2019 Aaron Kili 

Anda akan melihat bahawa kami telah menggunakan beberapa parameter baru dalam fail di atas yang belum dijelaskan. Ini dipanggil makro, Digunakan untuk membina penyerahan sistem yang ditakrifkan oleh rpm untuk menetapkan laluan pemasangan untuk pakej. Oleh itu, biasanya lebih baik untuk tidak kod keras laluan ini dalam fail spec sama ada, tetapi gunakan makro yang sama untuk konsistensi.

Berikut adalah rpm membina dan direktori makro bersama -sama dengan definisi dan nilai lalai mereka:

  • %make_build - digunakan dalam %Membina bahagian fail spec, ia menjalankan perintah membuat.
  • %name - mentakrifkan pakej atau nama direktori.
  • %buildroot - %_ BuildRootdir/%name-%version-%Release.%_ arch, sama dengan $ bangunan
  • %_ infodir - %_ datarootdir/info, lalai:/usr/share/info
  • %_ Mandir - %_ datarootdir/man, lalai:/usr/share/man
  • %_ bindir - %_ exec_prefix/bin, lalai:/usr/bin

Perhatikan bahawa anda boleh mencari nilai untuk ini makro di dalam /usr/lib/rpm/platform/*/makro Atau rujuk garis panduan pembungkusan: makro rpm.

Membina pakej rpm

Untuk membina pakej sumber, binari dan debugging, jalankan perintah rpmbuild berikut.

$ rpmbuild -ba hello.spesifikasi 

Selepas proses membina, sumber rpms dan rpms binari akan dibuat di ... /srpms / dan ... /rpms / masing -masing direktori. Anda boleh menggunakan program RPMLINT untuk memeriksa dan memastikan fail spec dan fail RPM yang dibuat mematuhi peraturan reka bentuk RPM:

$ rpmlint Hello.Spec…/srpms/hello*.../rpms/*/hello* 
Semak pakej untuk kesilapan

Sekiranya terdapat sebarang kesilapan seperti yang ditunjukkan dalam tangkapan skrin di atas, selesaikannya sebelum anda dapat meneruskannya.

Terakhir tetapi tidak kurang, gunakan Program Mock Untuk memastikan bahawa binaan pakej akan berjaya di persekitaran membina Fedora terhad.

$ mock --Verbose ... /srpms /hello-2.10-1.FC29.SRC.rpm 
Periksa binaan pakej rpm

Untuk maklumat lanjut, rujuk dokumentasi Fedora: Membuat Pakej RPM.

Itu sahaja! Dalam artikel ini, kami telah menjelaskan bagaimana untuk meningkatkan sistem fedora anda untuk membuat pakej perisian sumber dan binari yang mudah. Kami juga menunjukkan cara membuat pakej Hello Word RPM. Gunakan borang maklum balas di bawah untuk menghubungi kami untuk sebarang pertanyaan atau komen.