Cara membongkar, memodifikasi, membangun kembali, dan menginstal SRPM

9

Saya ingin memodifikasi paket Fedora 15 ( gnome-shell-extensions-alternative-status-menu). Ini modifikasi kecil (mengembalikan komit ini ). Dengan menggunakan yumdownloadersaya dapat mengunduh SRPM ( gnome-shell-extensions-3.0.2-1.g63dd27cgit.fc15.src.rpm).

Setelah ini, bagaimana saya membongkar dan membangunnya kembali?

Vitor Py
sumber
Anda harus mengubah hasil edit terakhir Anda menjadi komentar pada jawaban @ mdpc atau menambahkan jawaban Anda sendiri dengan langkah-langkah yang membantu Anda memecahkan masalah. Simpan data jawaban dari pertanyaan itu sendiri.
Caleb
@ Caleb Selesai! (3 lagi ...)
Vitor Py

Jawaban:

7

Apa yang saya lakukan, sebagai pengguna ROOT:

  1. Instal SRPM seperti yang Anda lakukan pada paket lain ( rpm --install [source-rpm-filename])

  2. Periksa /root/rpmbuild/SPECSdirektori dan temukan file spesifikasi yang cocok dengan paket Anda

  3. rpmbuild -bb /root/rpmbuild/SPECS/[found-filename]

Paket biner yang dihasilkan kemudian terletak di /root/rpmbuild/RPMS/direktori yang siap diinstal melalui rpm --installperintah standar .

CATATAN: Ini hanya membangun apa yang ada dalam paket biner standar. Saya memposting ini menjawab pertanyaan spesifik, bukan bagaimana cara membuat perubahan ke sumber dan menghasilkan paket baru.

Untuk melakukan modifikasi, Anda bisa memberikan tambalan sebagai input dan mengubah file SPECS .... atau Anda dapat mengganti standar yang *.tar.bz2ada di /root/rpmbuild/SOURCESdalamnya dengan perubahan Anda lalu melakukan build seperti dijelaskan di atas.

Hati-hati Anda mungkin harus mengubah paket SPECS untuk membuatnya bekerja (biasanya dengan menarik keluar tambalan, dan mengubah beberapa nama file yang diprogram oleh file SPECS).


EDIT

Tampaknya membangun rpms karena root adalah praktik ( sumber ) yang buruk. Ini berfungsi dengan baik sebagai pengguna non-root.

Petunjuk langkah demi langkah untuk menambahkan tambalan (dari sini ):

  1. Salin tambalan Anda ke rpmbuild/SOURCES.
  2. Edit rpmbuild/SPECS/package.specdan tambahkan Patch0: mypatch.patchkanan setelah Source0: ...baris.
  3. Setelah %setup ...baris tambahkan %patch0 -p1baris

Sekarang itu akan membangun secara normal, yaitu. dengan:rpmbuild -ba SPECS/package.spec

mdpc
sumber
2
Anda harus mengklarifikasi bahwa hanya instalasi yang dilakukan sebagai root, bukan rpmbuild. Membangun file rpm tidak boleh dilakukan sebagai root.
Caleb
@ Caleb saya instal sebagai non root paket. rpm menempatkannya dalam hirarki ~ / rpmbuild. Saya juga melakukan seperti yang Anda sarankan pada pertanyaan dan meletakkan langkah-langkah tambahan di sini.
Vitor Py
Hanya beberapa catatan: sudo dnf install rpmdevtoolsdiperlukan untuk perintah rpmbuild. Dan %patch0 -p1baris tersebut harus dihilangkan jika file spek menggunakan %autosetupgaris alih-alih yang %setupsatu (seperti %autosetupmenerapkan tambalan secara otomatis).
Nelson
Juga, untuk menginstal rpm baru di atas yang asli (kalau-kalau aslinya sudah diinstal pada sistem), dosudo rpm -ivh --force your.rpm
Nelson
4

Paket OpenSSL Rebuild CentOS 6.4 adalah contoh terperinci dari pembangunan kembali paket SRPM.

Contoh di atas menggunakan Mock - Jedi Light Saber dari pembangun paket.

Mock diciptakan untuk mengisi chroot dengan andal, lalu membangun kembali sebuah paket di chroot itu.

Untuk lebih lanjut, lihat http://fedoraproject.org/wiki/Projects/Mock

Pada contoh, mock digunakan 3 kali - sekali untuk "membongkar" paket, lalu untuk membangun kembali .src.rpm, dan akhirnya untuk membuat .rpm.

neonzeon
sumber