Cách giải nén, sửa đổi, xây dựng lại và cài đặt SRPM


9

Tôi muốn sửa đổi gói Fedora 15 ( gnome-shell-extensions-alternative-status-menu). Đó là một sửa đổi nhỏ (hoàn nguyên cam kết này ). Sử dụng yumdownloaderTôi có thể tải xuống SRPM ( gnome-shell-extensions-3.0.2-1.g63dd27cgit.fc15.src.rpm).

Sau này, làm thế nào để tôi giải nén nó và sau đó xây dựng lại nó?


Bạn nên thay đổi bản chỉnh sửa gần đây của mình thành nhận xét về câu trả lời của @ mdpc hoặc thêm câu trả lời của riêng bạn với các bước giúp bạn giải quyết vấn đề. Hãy trả lời dữ liệu ra khỏi câu hỏi.
Caleb

@Caleb Xong! (Còn 3 chuyến nữa ...)
Vitor Py

Câu trả lời:


7

Những gì tôi làm, với tư cách là người dùng ROOT:

  1. Cài đặt SRPM như bất kỳ gói nào khác ( rpm --install [source-rpm-filename])

  2. Kiểm tra /root/rpmbuild/SPECSthư mục và tìm tệp thông số kỹ thuật phù hợp với gói của bạn

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

Các gói nhị phân kết quả sau đó được đặt trong /root/rpmbuild/RPMS/thư mục đã sẵn sàng để được cài đặt thông qua rpm --installlệnh tiêu chuẩn .

LƯU Ý: Điều này chỉ xây dựng những gì có trong gói nhị phân tiêu chuẩn. Tôi đang đăng bài này để trả lời câu hỏi cụ thể, không phải làm thế nào để thực hiện thay đổi đối với nguồn và tạo các gói mới.

Để thực hiện các sửa đổi, bạn có thể cung cấp các bản vá làm đầu vào và thay đổi tệp SPECS .... hoặc bạn có thể thay thế tiêu chuẩn *.tar.bz2nằm trong /root/rpmbuild/SOURCESchính bạn bằng thay đổi và sau đó thực hiện xây dựng như mô tả ở trên.

Coi chừng bạn có thể phải thay đổi gói SPECS để làm cho nó hoạt động (thường là bằng cách rút bản vá và thay đổi một số tên tệp được lập trình bởi tệp SPECS).


BIÊN TẬP

Có vẻ như xây dựng rpms như root là một thực tế xấu ( nguồn ). Nó hoạt động tốt như một người dùng không root.

Hướng dẫn từng bước để thêm một bản vá (từ đây ):

  1. Sao chép bản vá của bạn vào rpmbuild/SOURCES.
  2. Chỉnh sửa rpmbuild/SPECS/package.specvà thêm một Patch0: mypatch.patchquyền sau Source0: ...dòng.
  3. Sau %setup ...dòng thêm một %patch0 -p1dòng

Bây giờ nó sẽ xây dựng bình thường, tức là. với:rpmbuild -ba SPECS/package.spec


2
Bạn nên làm rõ rằng chỉ có cài đặt được thực hiện như root, không phải là rpmbuild. Xây dựng tập tin vòng / phút không bao giờ nên được thực hiện như root.
Caleb

@Caleb Tôi đã cài đặt dưới dạng không root các gói. vòng / phút đặt nó trong hệ thống phân cấp ~ / rpmbuild. Ngoài ra tôi đã làm như bạn đề xuất về câu hỏi và đặt các bước bổ sung ở đây.
Vitor Py

Chỉ cần một vài lưu ý: sudo dnf install rpmdevtoolslà cần thiết cho lệnh rpmbuild. Và %patch0 -p1dòng nên được bỏ qua nếu tệp spec sử dụng một %autosetupdòng thay vì một dòng %setup(như %autosetupáp dụng bản vá tự động).
Nelson

Ngoài ra, để cài đặt vòng / phút mới so với vòng quay ban đầu (trong trường hợp bản gốc đã được cài đặt trên hệ thống), hãy thực hiệnsudo rpm -ivh --force your.rpm
Nelson

4

Gói OpenSSL Rebuild CentOS 6.4 là một ví dụ chi tiết về việc xây dựng lại gói SRPM.

Ví dụ trên sử dụng Mock - Jedi Light Sabre của các nhà xây dựng gói.

Mock được tạo ra để tạo ra một chroot đáng tin cậy, sau đó xây dựng lại một gói trong chroot đó.

Để biết thêm, hãy xem http://fedoraproject.org/wiki/Projects/Mock

Trong ví dụ, mock được sử dụng 3 lần - một lần để "giải nén" gói, sau đó để xây dựng lại .src.rpm và cuối cùng để tạo .rpm.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.