Điểm:0

Tôi có nên xây dựng ứng dụng Haskell của mình thông qua tệp RPM SPEC hay thử sử dụng tệp nhị phân (có thể sao chép) từ đường dẫn CI

lá cờ in

Tôi đã không xây dựng RPM từ đầu trong 20 năm. Vì vậy, chúng ta có thể nói "không bao giờ" một cách hiệu quả.

[sửa] Yêu cầu đối với RPM là cung cấp tính năng khôi phục, kiểm soát phiên bản, v.v. Nó là không thể thương lượng.

Tôi có một tệp nhị phân và một tệp cấu hình duy nhất mà tôi cần cài đặt. Có một số thiết lập với tài khoản người dùng và thư mục cần phải xảy ra mà tôi tin rằng nên được thực hiện ngay.

Nếu tôi muốn một bản dựng có thể tái sản xuất đã thử nghiệm trong quy trình xây dựng RPM, tôi phải sao chép các bước quy trình CI của chúng tôi. Không tầm thường. Lý tưởng nhất là tôi chỉ có thể lấy các tệp mong muốn từ một số vị trí khác:

chuẩn bị %
cp ${somefile} ${another file} $RPM_SOURCE_DIR
%cài đặt
:

Điều này có thể không? Hoặc tôi đang thiếu một số giải pháp rõ ràng.

Cảm ơn.

Điểm:1
lá cờ jp
rsc

Theo quan điểm của tôi, nó phụ thuộc một chút vào những gì bạn đang nhắm mục tiêu chính xác:

Các bản phân phối Linux như Fedora thực sự mong đợi đối với các bản dựng phân phối của họ rằng phần mềm được xây dựng từ nguồn bằng cách sử dụng tệp thông số kỹ thuật (bên trong một hệ thống bản dựng kín cũng ghi lại các gói/thành phần được sử dụng để xây dựng) và coi đây là một phương pháp hay, cũng như để đạt được nhiều khả năng tái tạo càng tốt.

Tuy nhiên, bạn thực sự chỉ có thể kéo các tệp nhị phân dựng sẵn và sử dụng chúng bên trong tệp thông số kỹ thuật để tạo gói RPM, ví dụ rút gọn cho kịch bản của bạn:

# [â¦]
Nguồn0: <tệp nhị phân>
Nguồn1: <tệp cấu hình>

# [â¦]

chuẩn bị %
%thiết lập -q -c -T

%xây dựng

%Tải về
cài đặt -D -p -m 0755 %{SOURCE0} $RPM_BUILD_ROOT%{_bindir}/%{name}
cài đặt -D -p -m 0644 %{SOURCE1} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}.conf

# [â¦]

Mặc dù điều này có thể hiệu quả, nhưng bạn nên kiểm tra rõ ràng xem các thành phần phụ thuộc của gói RPM kết quả có phù hợp không (rpm -qp --requires <â¦>.rpm) hoặc nếu thiếu phụ thuộc thời gian chạy. Thường có các tùy chọn hoặc tham số thời gian biên dịch (ví dụ: CỜ hoặc LDFLAGS phần mềm được viết bằng C) cũng như các tập lệnh xử lý hậu kỳ (ví dụ: /usr/lib/rpm/(redhat/)brp-*) trong khi xây dựng gói RPM bổ sung nội dung phân phối cụ thể và/hoặc trích xuất các thành phần phụ thuộc trong thời gian chạy cho bạn. Điều này có thể phù hợp hoặc không phù hợp với bạn (và một số tập lệnh xử lý hậu kỳ cũng có thể hoạt động đối với các tệp nhị phân dựng sẵn nhưng các tập lệnh khác thì không do thiếu tùy chọn trình biên dịch). Mặc dù tôi đang đóng gói rất nhiều phần mềm, nhưng tôi không có kinh nghiệm với Haskell, nhưng khi tìm kiếm một số gói Fedora, có những gói RPM có phụ thuộc thời gian chạy (và nếu có phụ thuộc thời gian chạy thì những gói này phải được thỏa mãn bởi gói RPM, vì đó là cách RPM hoạt động; và việc có thư viện phù hợp ở đâu đó trên hệ thống tệp của bạn là chưa đủ, vì RPM sẽ không biết về nó trừ khi nó được cung cấp bởi gói RPM). Do đó, việc xây dựng gói RPM từ các tệp nhị phân dựng sẵn có thể dẫn đến gói RPM không có phần phụ thuộc phù hợp, điều này có thể tiết lộ dưới dạng lỗi thời gian chạy sau này.

Liên quan đến ví dụ trên: Trong khi NguồnX: có thể được cung cấp một URL, rpmbuild vẫn mong đợi các tệp này trên đĩa trong NGUỒN thư mục khi xây dựng gói RPM (vì vậy cách họ truy cập vào NGUỒN thư mục tùy thuộc vào bạn).

Vì bạn đã không đề cập đến bản phân phối Linux nào mà bạn đang nhắm mục tiêu, tôi đang liên kết Fedora's Nguyên tắc đóng gói Haskell ở đây, có thể hoặc không thể cung cấp thêm cảm hứng.Và vâng, các gói RPM có thể được phân phối chéo, điều này thực tế thường dẫn đến các tệp nhị phân tĩnh bên trong các gói RPM, do các phiên bản thư viện/gói thường khác nhau trên các bản phân phối Linux khác nhau.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.