Tôi đã nói chuyện với một số người bảo trì tại kênh Debian IRC irc: //irc.debian.org#debian-mentors , yêu cầu điều tương tự chính xác và sự đồng thuận chung là:
Giải pháp số 1:
Việc tích hợp các phụ thuộc trong gói của bạn bằng cách sao chép các tệp nguồn của chúng dưới dạng một cơ sở mã duy nhất rất khó chịu. Nó sẽ đánh bại mục đích của một hệ thống đóng gói xử lý các phụ thuộc, cập nhật, phiên bản, v.v.
Giải pháp số 3:
Tải xuống các gói không phải là debian khi đang cài đặt nhị phân ( .deb
) là một rủi ro bảo mật nghiêm trọng , chắc chắn là không. Bạn thậm chí sẽ không thể kiểm tra các phụ thuộc bằng cách giải nén deb
, bởi vì chúng được tải xuống và cài đặt khi cài đặt. Đó là một cách tiếp cận hoàn toàn bỏ qua hệ thống kho lưu trữ. Không người dùng nào quan tâm sẽ hài lòng với một gói, đằng sau hậu trường (và như root
, hãy nhớ!), Tải xuống phần mềm không đáng tin cậy bổ sung từ các nguồn không đáng tin cậy. Có, điều đó sẽ yêu cầu đấu tranh với DEBIAN/postinst
(hoặc preinst
) và ban hành wget
(hoặc, trong trường hợp của bạn,pip install
) và đó là cách tiếp cận được thực hiện bởi Flash, Oracle Java, Steam và những người khác. Nhưng đó là phần mềm độc quyền, nguồn đóng, vì vậy bảo mật của họ là không có.
Giải pháp số 1.5:
Bạn đã không đề cập đến nó, nhưng bạn có thể tích hợp các phụ thuộc duy nhất vào thời gian xây dựng , ví dụ, trong nguồn gói (các .orig.tar.gz
, .debian.tar.gz
, .dsc
bộ ba), bằng cách tải về từ PyPi khi tạo "nhị phân" gói (các .deb
). Các hướng dẫn cho pip install
sẽ đi vào debian/rules
(chú ý chữ thường debian
, trái ngược với gói nhị phân) và sẽ được thực thi khi bạn phát hành debuild
hoặc dpkg-buildpackage
.
Đây là một trung gian giữa # 1 và # 3. Nó giảm nhẹ (nhưng không giải quyết được!) Một số vấn đề của # 3: ít nhất bạn có thể kiểm tra sản phẩm cuối cùng và .deb
sẽ không yêu cầu truy cập internet khi cài đặt. Tất cả các rủi ro và gánh nặng được chuyển từ người dùng cuối cùng sang người duy trì gói. Nhưng, có những vấn đề tương tự như # 1, vì nó bỏ qua hầu hết các cơ sở hạ tầng hệ thống đóng gói. Sau tất cả, xử lý các phụ thuộc (phiên bản, cập nhật, yêu cầu, xung đột) là lý do tại sao dpkg
/ apt
được tạo ra ngay từ đầu! :)
Giải pháp số 2:
Các One True Way Right ™ . Bạn tạo các gói debian cho các phụ thuộc của mình, liệt kê chúng theo yêu cầu trong gói của bạn và gửi tất cả các .debs
gói hoặc gói nguồn.
Từ đó, bạn có một số tùy chọn:
Gửi các gói nguồn, cả phần mềm của bạn và phần phụ thuộc của nó, để đưa vào Debian. Nếu được chấp nhận, chúng sẽ tự động có sẵn cho tất cả người dùng Debian, bao gồm tất cả các công cụ phái sinh như Ubuntu.
Tải các gói nguồn lên Launchpad , do đó tạo PPA mà bất kỳ người dùng Ubuntu nào (và các dẫn xuất của nó như Linux Mint) có thể dễ dàng thêm và cài đặt
Lưu trữ kho lưu trữ debian của riêng bạn trong trang web của bạn, rằng người dùng từ bất kỳ hệ thống dựa trên Debian nào cũng có thể thêm vào /etc/apt/sources.list.d
và sử dụng apt
cơ sở hạ tầng để tải xuống, cài đặt và tiếp tục cập nhật, (như ở trên!)
Lưu trữ các .deb
tập tin để tải về và cài đặt trực tiếp. Không có apt
hoặc cập nhật tự động liên quan đến suy nghĩ.
Về cách đóng gói các phụ thuộc PyPi của bạn (và cả phần mềm python của bạn nữa!), Có một số công cụ và tài liệu tham khảo giúp cho quy trình trở nên dễ dàng:
stdeb , như bạn đã đề cập. Oldie và goodie.
Pybuild , một công cụ mới, tuyệt vời của Debian thay thế stdeb
.
Và nhiều tài liệu tham khảo hữu ích:
Cần giúp đỡ? Kiểm tra xem: