Cara mengubah pakej rpm menggunakan rpmreBuild
- 3313
- 985
- Dale Harris II
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
- « Pasang cincin, alternatif Skype Voip Foss
- Cara Membuat VPN Killswitch Menggunakan iptables di Linux »