Cara memodifikasi paket rpm menggunakan rpmrebuild

Cara memodifikasi paket rpm menggunakan rpmrebuild

Perkenalan

RPM adalah salah satu manajer paket GNU/Linux paling canggih. Dibuat oleh Red Hat, digunakan dalam banyak distribusi, seperti misalnya fedora dan turunan seperti rhel dan centos.

Paket yang akan diinstal dengan manajer paket ini memiliki .RPM ekstensi dan pada dasarnya arsip yang berisi file yang disediakan oleh perpustakaan atau aplikasi plus informasi yang diperlukan untuk paket yang akan diinstal dan dijalankan dengan benar, seperti dependensinya. Dalam tutorial ini kita akan belajar cara menggunakan rpmrebuild, Alat yang sangat kuat yang memungkinkan kami memodifikasi paket RPM yang ada tanpa harus membangunnya kembali dari kode sumber.

Memperbaiki ketergantungan yang hilang dalam contoh paket atom

Demi tutorial ini, kami akan memperbaiki bug nyata, mempengaruhi pejabat Atom Paket RPM Editor. Atom tergantung pada Gconf2, Namun paket ini dihilangkan dalam daftar dependensi termasuk spec mengajukan.

Anda tidak boleh memperhatikan ini jika Anda menginstal atom pada instalasi default workstation fedora, karena Gconf2 Paket sudah diinstal pada sistem (mungkin beberapa paket lain mengharuskannya sebagai ketergantungan).

Namun, ketika memasang atom di lingkungan minimal masalah akan muncul: paket akan diinstal tanpa masalah, tetapi ketika mencoba meluncurkan editor, kesalahan berikut akan ditampilkan:

/usr/share/atom/atom: kesalahan saat memuat perpustakaan bersama: libgconf-2.Jadi.4: Tidak dapat membuka file objek bersama: tidak ada file atau direktori tersebut

Itu libgconf-2.Jadi.4 objek bersama disediakan oleh Gconf2 paket, karena kami dapat dengan mudah memverifikasi mengeluarkan perintah Linux berikut:

$ dnf Whatprovides libgconf-2.Jadi.4 GCONF2-3.2.6-20.FC28.I686: Sistem konfigurasi transparan proses Repo: Fedora cocok dari: Menyediakan: libgconf-2.Jadi.4 

Mari kita perbaiki bug ini dengan menambahkan ketergantungan yang hilang di file spesifikasi.



Langkah 1 - Instalasi RPMRebuild

Hal pertama yang perlu kita lakukan adalah menginstal rpmrebuild paket, yang tersedia di repositori fedora default. Perintah dapat bervariasi tergantung jika pengguna berada di roda grup, dan karena itu dapat menggunakan perintah sudo, atau jika kami ingin menjalankan perintah beralih ke pengguna root, menggunakan su. Saya akan menganggap kasus sebelumnya di sini:

$ sudo dnf menginstal rpmrebuild

Biarkan DNF melakukan tugasnya, dan segera paket akan diinstal pada sistem kami. Pada titik ini, kita perlu mengambil paket atom dari situs web proyek resmi. Kami akan menggunakannya sebagai basis untuk membangun RPM khusus kami.

Langkah 2 - Modifikasi File Spec

Itu spec File paket RPM berisi informasi penting tentang paket itu sendiri, seperti ketergantungannya dan file yang disediakannya: Ini adalah file ini yang perlu kita modifikasi untuk memperbaiki bug kecil ini. Dengan asumsi kami berada di direktori tempat kami mengunduh paket atom, kami dapat mengeluarkan perintah Linux berikut:

$ rpmrebuild -enp atom.x86_64.RPM

Kami memohon rpmrebuild Perintah menyediakan tiga opsi: -e, -N Dan -P. Mari kita lihat secara singkat untuk apa mereka. Opsi pertama, -e adalah versi singkatnya --Edit-specfile Dan perlu memberi tahu program bahwa kami ingin mengedit spektil paket; yang kedua, -N, versi pendek dari --Notest-instal memodifikasi perilaku program sehingga RPM yang dihasilkan tidak akan dipasang secara otomatis di akhir proses pembangunan.

Akhirnya, dengan menggunakan -P atau --kemasan Opsi, kami menentukan bahwa kami ingin menggunakan yang sebenarnya .RPM File paket sebagai dasar pembangunan kembali kami, alih -alih menggunakan RPM yang sudah diinstal.

Setelah kami menjalankan perintah di atas, file spesifikasi akan dibuka ke instance editor teks default kami. Dalam kasus kami, yang ingin kami lakukan, adalah menambahkan a Memerlukan Klausul, untuk memasukkan ketergantungan yang hilang:

Membutuhkan: lsb-core-noarch membutuhkan: gconf2 # Berikut adalah ketergantungan tambahan kami yang membutuhkan: libxss.Jadi.1 () (64bit) membutuhkan: libsecret-1.Jadi.0 () (64bit) 

Selain itu, kami dapat memodifikasi versi paket, untuk membedakan versi modifikasi kami dari yang resmi. Ini sangat sederhana: yang perlu kita lakukan adalah memodifikasi garis:



Rilis: 0.1

Menjadi sesuatu seperti:

Rilis: 0.1_custom

Setelah kami selesai, kami menyimpan dan menutup file: Prompt akan ditampilkan di terminal kami, menanyakan apakah kami ingin melanjutkan dan membangun paket yang dimodifikasi:

Apakah Anda ingin melanjutkan ? (y/t)

Jika kita memberikan jawaban afirmatif dan tekan enter, bangunan akan dimulai (bisa membutuhkan waktu untuk menyelesaikannya). Penting untuk diperhatikan bahwa RPM yang ditentukan tidak akan dimodifikasi di tempat, tetapi yang baru, berdasarkan itu akan dihasilkan. Di akhir proses, RPM baru akan ditempatkan di $ Home/rpmbuild/rpms/x86_64/ direktori:

$ ls $ home/rpmbuild/rpms/x86_64/atom-1.27.0-0.1_custom.x86_64.RPM 

Untuk memverifikasi bahwa ketergantungan telah ditambahkan dengan benar, kami dapat menggunakan RPM dan meminta dependensi paket baru:

$ rpm -qrp $ home/rpmbuild/rpms/x86_64/atom -1.27.0-0.1_custom.x86_64.RPM GCONF2 LIBXSS.Jadi.1 () (64bit) libsecret-1.Jadi.0 () (64bit) LSB-CORE-NOARCH RPMLIB (CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rpmlib(PayloadIsXz) <= 5.2-1 

Gconf2 sekarang termasuk dalam daftar dependensi paket. Ini menjadi jelas ketika kami mencoba menginstal paket: seperti biasa, ringkasan operasi yang akan dilakukan akan ditampilkan saat menginstal paket dengan dnf:



[...] ================================================= =======================KAN ==================================================== ================== Menginstal: Atom x86_64 1.27.0-0.1_custom @commandline 99 m menginstal dependensi: gconf2 x86_64 3.2.6-20.FC28 Fedora 1.0 m di x86_64 3.1.20-10.FC28 Fedora 80 K Cronie x86_64 1.5.1-9.FC28 Fedora 105 K Cronie-Anacron X86_64 1.5.1-9.FC28 Fedora 40 K Crontabs Noarch 1.11-16.20150630git.FC28 FEDORA 24 K ED X86_64 1.14.2-2.FC28 Fedora 80 K ESMTP X86_64 1.2-10.FC28 FEDORA 57 K LIBXSCRNSAVER X86_64 1.2.2-14.FC28 FEDORA 29 K LIBESMTP X86_64 1.0.6-14.FC28 Fedora 67 K Liblockfile x86_64 1.14-1.FC28 Fedora 30 K M4 x86_64 1.4.18-6.FC28 Fedora 221 K Mailx x86_64 12.5-28.Pembaruan FC28 256 K ncurses-compat-libs x86_64 6.1-4.20180224.FC28 Fedora 331 K Redhat-LSB-Core X86_64 4.1-44.FC28 Fedora 44 K Redhat-LSB-Submod-Security X86_64 4.1-44.FC28 FEDORA 21 K SPAX X86_64 1.5.3-12.FC28 Fedora 216 K Waktu x86_64 1.9-1.FC28 Fedora 53 K Util-Linux-User X86_64 2.32-2.FC28 Fedora 94 K Ringkasan Transaksi =============================================== ===================================== Instal 19 Paket [...] 

Paket sekarang akan berjalan dengan benar, karena semua dependensi runtime dipenuhi dengan benar.

Pikiran terakhir

Dalam tutorial ini kami melihat cara memodifikasi a spec file paket tanpa harus membangunnya kembali dari kode sumber menggunakan rpmrebuild alat. Kami memperbaiki sedikit bug, yang terdiri dari ketergantungan yang hilang dalam paket RPM resmi atom.

Kami mengunduh dan menggunakan paket atom resmi sebagai dasar pembangunan kembali kami, namun dengan alat yang sama mungkin untuk berfungsi dan memodifikasi file yang merupakan bagian dari RPM yang sudah diinstal, untuk menghasilkan build baru yang akan mencakup modifikasi. Rpmrebuild adalah alat yang sangat berguna dan kuat; Sarannya, seperti biasa, itu untuk menyelam ke dalamnya Berkasingan untuk menguasainya membuka potensi penuh.

Tutorial Linux Terkait:

  • Pengantar Otomatisasi Linux, Alat dan Teknik
  • Hal -hal yang harus diinstal pada ubuntu 20.04
  • Menguasai loop skrip bash
  • Mint 20: Lebih baik dari Ubuntu dan Microsoft Windows?
  • Cara membangun kembali paket menggunakan sistem build arch linux
  • Loop bersarang dalam skrip bash
  • Cara menanyakan informasi paket dengan paket rpm…
  • Cara memperbarui centos
  • Cara bermigrasi dari centos ke almalinux
  • Unduh Linux