2012-05-14 29 views
5
  1. Tôi có thể trích xuất tệp từ tệp RPM, nhưng làm cách nào để "tạo lại" tệp, ví dụ: cpio2rpm?
  2. Tôi đã trích xuất tệp RPM bằng lệnh sau. rpm2cpio theFileName.rpm | cpio –idmv
  3. Tôi phải sửa đổi một số tệp ứng dụng web như * .php, * .html hoặc .js. Những tệp này không yêu cầu bất kỳ nguồn biên dịch lại nào. Vì vậy, tôi muốn thay thế hoặc thay đổi các tập tin này với sửa đổi mà không cần xây dựng lại rpm. Kể từ đó, tôi cần phải làm điều này cho nhiều nền tảng như Redhat Linux và SUSE, và nhiều kiến ​​trúc như 32 và 64 bit OS.
  4. Tôi hy vọng sẽ thực hiện những thay đổi này chỉ trên hệ thống và không cần xây dựng lại rpm và sẽ không có phụ thuộc vào kiến ​​trúc hệ thống đích (như i386, 64).
  5. Tôi không giống lệnh rpmbuild –rebuild the.src.rpm vì tôi không có nguồn. Tôi cần phải xây dựng lại tệp nhị phân .RPM (không phải là nguồn .rpm)
  6. Tôi muốn thực hiện điều này mà không cần nguồn và nền tảng hoặc kiến ​​trúc độc lập và không sử dụng tệp spec nếu có thể.Làm thế nào để "đóng gói lại" một tệp RPM ví dụ cpio2rpm mà không cần cài đặt RPM?

    Bất kỳ bạn thân nào, bạn có thể đề xuất bất kỳ giải pháp hay công cụ miễn phí nào không.

    Cảm ơn tất cả những ai dành thời gian để đọc và trả lời chủ đề của tôi.

Trả lời

0

Thực chất bạn có thể đóng gói mọi thứ bạn muốn vào tệp RPM. Chỉ cần xử lý những gì bạn có là "nguồn" và viết một tập tin SPEC mà đặt dữ liệu nơi các tập tin nhị phân biên dịch thường sẽ đi.

Về RPM, tôi xem xét "nguồn" "những gì tôi có" và "nhị phân" "những gì tôi cần để chạy". Không phải là thuật ngữ rất chính xác, nhưng nó giúp làm việc với RPM.

file spec của bạn trông giống như bất kỳ file spec khác, những gì liên quan đến các thông số vv Nhưng phần code is khác nhau:

[...] 
%prep 
# Here you either have nothing to do or you already unpack the cpio and possibly modify it. 

# %build can be omitted 

%install 
[ "${buildroot}" != "/" ] && [ -d ${buildroot} ] && rm -rf ${buildroot}; 
# Here you can either unpack the cpio or copy the data unpacked in %prep. 
# Be careful to put it into %{buildroot} or $RPM_BUILD_ROOT. 
1

Bạn có thể đóng gói lại một RPM cài đặt (bao gồm cả tập tin sửa đổi) sử dụng rpmrebuild. Rõ ràng là các tệp nhị phân (nếu có) sẽ phải là nền tảng/kiến ​​trúc độc lập để làm việc trên tất cả các hương vị hệ điều hành mà bạn mong đợi, nhưng có vẻ như chúng chỉ là các tệp web không nên là một vấn đề.

12

Bạn có thể sử dụng rpmrebuild để sửa đổi tệp rpm thực (không cần cài đặt).

Hầu hết các ví dụ cho việc này sử dụng lệnh chỉnh sửa nội dòng phức tạp để sửa đổi các tệp đã biết theo những cách cụ thể nhưng bạn có thể sử dụng trình chỉnh sửa thông thường. Tôi đã sử dụng điều này để sửa một kịch bản lệnh shell trong một tệp rpm mà tôi không có nguồn. Gọi lệnh dưới dạng

rpmrebuild -ep theFileName.rpm 

Điều này đặt bạn vào trình chỉnh sửa với tệp thông số cho RPM. Tên của tệp sẽ có dạng như ~/.tmp/rpmrebuild.12839/work/spec.2. Nếu bạn nhìn vào, trong ví dụ này, ~/.tmp/rpmrebuild.12839/work, bạn sẽ tìm thấy tất cả các tệp được sử dụng để tạo RPM (trong trường hợp của tôi, tệp nằm trong root/usr/sbin trong thư mục đó). Vì vậy, đi đến cửa sổ khác, cd vào thư mục đó và chỉnh sửa bất kỳ tệp nào bạn cần thay đổi.

Khi bạn hoàn tất chỉnh sửa tệp, quay lại cửa sổ chỉnh sửa bằng tệp spec, thực hiện bất kỳ thay đổi nào bạn cần cho tệp đó (Tôi không có bất kỳ thay đổi nào vì tôi không thêm hoặc xóa tệp) tệp và nói "y" với câu hỏi "Bạn có muốn tiếp tục" không. Sau đó, nó sẽ tạo một tệp RPM mới và cho bạn biết vị trí đã đặt nó (trong trường hợp của tôi, trong ~/rpmbuild/RPMS/x86_64 /)

+0

Tuyệt vời! Có cách nào để tự động hóa nó trong một số kịch bản? –

Các vấn đề liên quan