2012-06-25 28 views
5

Tôi đang cố tạo RPM trong Fedora 15 sẽ cài đặt phần mềm của mình, nhưng để phần mềm của tôi hoạt động chính xác sau khi cài đặt, tôi cũng cần chỉnh sửa khác (cấu hình) tệp trên hệ thống, thêm người dùng/nhóm, v.v. Thực hiện một số tác vụ này chỉ được người dùng root cho phép. Tôi biết không bao giờ tạo RPM làm người dùng gốc và tôi hiểu tại sao đó lại là một ý tưởng tồi. Tuy nhiên, nếu tôi thêm các câu lệnh shell vào tệp spec của tôi (% post,% prep ... bất kỳ phần nào) để chỉnh sửa các tệp cần thiết, thêm người dùng/nhóm, v.v., lệnh rpmbuild của tôi không thành công với thông báo "Permission denied" (không thật ngạc nhiên).Tạo RPM cũng có thể thao tác các tệp và thêm người dùng

Cách tốt nhất để xử lý việc này là gì? Tôi có phải nói với người dùng của mình để cài đặt gói của mình trước không, và sau đó có lẽ chạy một kịch bản lệnh shell làm thư mục gốc để cấu hình tất cả? Điều đó không có vẻ rất tao nhã. Tôi đã hy vọng cho phép người dùng làm mọi thứ với một lệnh đơn giản như 'yum install mysoftware'.

Phần lớn nghiên cứu của tôi cho thấy rằng có lẽ điều này thậm chí không nên được thực hiện thông qua RPM. Tôi đã đọc nhiều phần của Maximum RPM và nhiều tài nguyên tốt khác, nhưng không tìm thấy những gì tôi đang tìm kiếm. Tôi mới tạo RPM, nhưng đã có thể tạo thành công một tệp thông số đơn giản cho phần mềm của tôi ... Tôi chỉ không thể tải mọi thứ được định cấu hình đúng sau khi gói được giải nén và được cài đặt đúng vị trí. Bất kỳ đầu vào được đánh giá rất nhiều!

Trả lời

5

Phần %pre trong tệp RPM .spec của bạn nên kiểm tra tất cả các điều kiện cần thiết để phần mềm của bạn cài đặt.
Phần %post trong tệp RPM .spec của bạn sẽ làm cho tất cả các sửa đổi cần thiết để phần mềm của bạn chạy.
Để tránh lỗi giấy phép tệp trong phần %post trong tệp RPM .spec của bạn, bạn có thể đặt quyền và quyền sở hữu tệp trong mục %files. Bằng cách đó, người dùng cài đặt RPM có quyền thích hợp để sửa đổi các tệp cấu hình.

%install 
# Copy files to directories on your installation server 

%files 
# Set file permissions and ownership on your installation server 
%attr(775, myuser, mygroup) /path/to/my/file 


%pre 
# Check if custom user 'myuser' exists. If not, create it. 
# Check if custom group 'mygroup' exists. If not, create it. 
# All other checks here 

%post 
# Perform post-installation steps here, like editing other (configuration) files. 
echo "Installation complete." 
+0

Cảm ơn bạn! Điều này rất hữu ích. Những gì cả hai phản ứng cho đến nay đã giúp tôi tìm hiểu thông qua nghiên cứu sâu hơn là phần% pre và% post (trong số những người khác) KHÔNG được thực hiện trong quá trình rpmbuild (như% build và% install), nhưng chỉ được thực hiện trong lệnh rpm, có thể chạy dưới dạng root. Tôi không nghĩ rằng điều này rõ ràng và được nêu rõ trong bất cứ điều gì tôi đã đọc cho đến nay. – flash

7

useradd phải chạy trong %pre và không được chạy trong thời gian rpmbuild. Đó là cách làm tiêu chuẩn. Tôi muốn giới thiệu số packaging guidelines và cụ thể là phần trên users and groups.

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