Cara mengubah pakej rpm menggunakan rpmreBuild

Cara mengubah pakej rpm menggunakan rpmreBuild

Pengenalan

RPM adalah salah satu pengurus pakej GNU/Linux yang paling maju. Dicipta oleh Red Hat, ia digunakan dalam banyak pengagihan, sebagai contoh fedora dan derivatif seperti rhel dan centos.

Pakej yang akan dipasang dengan pengurus pakej ini mempunyai .rpm pelanjutan dan pada dasarnya arkib yang mengandungi fail yang disediakan oleh perpustakaan atau aplikasi serta maklumat yang diperlukan untuk pakej dipasang dan dijalankan dengan betul, seperti dependensinya. Dalam tutorial ini kita akan belajar cara menggunakan rpmreBuild, Alat yang sangat kuat yang membolehkan kita mengubahsuai pakej RPM yang ada tanpa perlu membina semula dari kod sumber.

Memperbaiki kebergantungan yang hilang dalam contoh pakej atom

Demi tutorial ini, kami akan membetulkan pepijat sebenar, yang mempengaruhi rasmi Atom Pakej editor RPM. Atom bergantung kepada GCONF2, Walau bagaimanapun, pakej ini ditinggalkan dalam senarai kebergantungan termasuk spesifikasi fail.

Anda tidak dapat melihat ini jika anda memasang atom pada pemasangan stesen kerja fedora lalai, kerana GCONF2 Pakej sudah dipasang pada sistem (mungkin beberapa pakej lain memerlukannya sebagai kebergantungan).

Walau bagaimanapun, apabila memasang atom dalam persekitaran yang minimum, masalah akan timbul: pakej akan dipasang tanpa masalah, tetapi apabila cuba melancarkan editor, ralat berikut akan dipaparkan:

/usr/share/atom/atom: ralat semasa memuatkan perpustakaan bersama: libgconf-2.Jadi.4: Tidak dapat membuka fail objek bersama: Tiada fail atau direktori sedemikian

The libgconf-2.Jadi.4 objek bersama disediakan oleh GCONF2 pakej, kerana kami dapat mengesahkan dengan mudah mengeluarkan arahan Linux berikut:

$ dnf whatprovides libgconf-2.Jadi.4 GCONF2-3.2.6-20.FC28.I686: Repo sistem konfigurasi yang telus: Fedora dipadankan dari: menyediakan: libgconf-2.Jadi.4 

Mari kita selesaikan pepijat ini dengan menambahkan kebergantungan yang hilang dalam fail spec.



Langkah 1 - Pemasangan RPMREBUILD

Perkara pertama yang perlu kita lakukan, adalah memasang rpmreBuild pakej, yang terdapat di repositori fedora lalai. Perintah mungkin berbeza bergantung jika pengguna berada di roda kumpulan, dan oleh itu boleh menggunakan arahan sudo, atau jika kita mahu menjalankan perintah beralih ke pengguna root, menggunakan su. Saya akan menganggap bekas kes di sini:

$ sudo dnf memasang rpmrebuild

Biarkan DNF melakukan tugasnya, dan tidak lama lagi pakej akan dipasang pada sistem kami. Pada ketika ini, kita perlu mengambil pakej atom dari laman web projek rasmi. Kami akan menggunakannya sebagai pangkalan untuk membina RPM tersuai kami.

Langkah 2 - Pengubahsuaian Fail Spec

The spesifikasi Fail pakej RPM mengandungi maklumat penting mengenai pakej itu sendiri, seperti kebergantungannya dan fail yang disediakannya: fail ini yang perlu kita ubah suai untuk memperbaiki bug kecil ini. Dengan mengandaikan kita berada di direktori di mana kita memuat turun pakej atom, kita boleh mengeluarkan arahan Linux berikut:

$ rpmreBuild -enp Atom.x86_64.rpm

Kami memohon rpmreBuild Perintah menyediakan tiga pilihan: -e, -n dan -p. Mari kita lihat secara ringkas apa yang mereka buat. Pilihan pertama, -e adalah versi pendek dari --edit-specfile Dan ia diperlukan untuk memberitahu program bahawa kami ingin mengedit spesifikasi pakej; yang kedua, -n, versi pendek --Notest-dipasang mengubah tingkah laku program supaya rpm yang dihasilkan tidak akan dipasang secara automatik pada akhir proses bangunan.

Akhirnya, dengan menggunakan -p atau --pakej pilihan, kami menyatakan bahawa kami mahu menggunakan sebenar .rpm fail pakej sebagai asas pembinaan semula kami, bukannya menggunakan rpm yang sudah dipasang.

Sebaik sahaja kami menjalankan arahan di atas, fail spec akan dibuka menjadi contoh editor teks lalai kami. Dalam kes kita, apa yang kita mahu lakukan, adalah menambah a Memerlukan Fasal, untuk memasukkan kebergantungan yang hilang:

Memerlukan: LSB-Core-Noarch Memerlukan: GCONF2 # Berikut adalah ketergantungan tambahan kami memerlukan: libxss.Jadi.1 () (64bit) Memerlukan: libsecret-1.Jadi.0 () (64bit) 

Di samping itu, kami dapat mengubahsuai versi pakej, untuk membezakan versi yang diubah suai dari rasmi. Sangat mudah: Yang perlu kita lakukan ialah mengubah suai garis:



Siaran: 0.1

Menjadi sesuatu seperti:

Siaran: 0.1_custom

Sebaik sahaja kami selesai, kami menyimpan dan menutup fail: Prompt akan dipaparkan di terminal kami, bertanya sama ada kami mahu meneruskan dan membina pakej yang diubah suai:

Adakah anda mahu meneruskan ? (y/n)

Sekiranya kita memberikan jawapan afirmatif dan tekan Enter, bangunan akan bermula (ia boleh mengambil sedikit masa untuk menyelesaikannya). Adalah penting untuk melihat bahawa rpm yang ditentukan tidak akan diubah suai di tempat, tetapi yang baru, berdasarkannya akan dihasilkan. Pada akhir proses, rpm baru akan ditempatkan di $ Rumah/rpmbuild/rpms/x86_64/ Direktori:

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

Untuk mengesahkan bahawa kebergantungan telah ditambah dengan betul, kita boleh menggunakan RPM dan menanyakan kebergantungan pakej baru:

$ rpm -qrp $ rumah/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 kini termasuk dalam senarai kebergantungan pakej. Ini menjadi jelas apabila kita cuba memasang pakej: seperti biasa, ringkasan operasi yang akan dilakukan akan dipaparkan semasa memasang pakej dengan DNF:



[...] =============================================== =============================== Pakej Versi gerbang Repository Size ================= ================================================= ================= Pemasangan: Atom x86_64 1.27.0-0.1_CUSTOM @Commandline 99 m Memasang Dependensi: GCONF2 X86_64 3.2.6-20.FC28 Fedora 1.0 m pada 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.Kemas kini 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 Masa x86_64 1.9-1.FC28 Fedora 53 K Util-Linux-User x86_64 2.32-2.fc28 fedora 94 k Transaction Summary ============================================ ================================== Pasang 19 Pakej [...] 

Pakej ini kini akan dijalankan dengan betul, kerana semua kebergantungan runtimenya berpuas hati.

Pemikiran terakhir

Dalam tutorial ini kita melihat cara mengubah suai a spesifikasi fail pakej tanpa perlu membina semula dari kod sumber menggunakan rpmreBuild alat. Kami menetapkan bug kecil, yang terdiri daripada kebergantungan yang hilang dalam pakej RPM rasmi atom.

Kami memuat turun dan menggunakan pakej atom rasmi sebagai asas pembinaan semula kami, namun dengan alat yang sama mungkin untuk berfungsi dan mengubah suai fail yang merupakan sebahagian daripada rpm yang sudah dipasang, untuk menghasilkan binaan baru yang akan termasuk pengubahsuaian. RpmreBuild adalah alat yang sangat berguna dan berkuasa; Cadangan, seperti biasa, ia adalah untuk menyelam ke dalamnya Manpage untuk menguasai ia membuka kunci potensi penuhnya.

Tutorial Linux Berkaitan:

  • Pengenalan kepada Automasi, Alat dan Teknik Linux
  • Perkara yang hendak dipasang di Ubuntu 20.04
  • Menguasai Gelung Skrip Bash
  • Mint 20: Lebih baik daripada Ubuntu dan Microsoft Windows?
  • Cara Membangun semula Pakej Menggunakan Sistem Membina Linux Arch
  • Gelung bersarang dalam skrip bash
  • Cara Meminta Maklumat Pakej Dengan Pakej RPM ..
  • Cara mengemas kini centos
  • Cara berhijrah dari Centos ke Almalinux
  • Muat turun linux