Các gói trình cài đặt tự giải nén kiểu Windows được cho là một thực tiễn tồi:
- trình tự giải nén có thể trở thành một vectơ cho phần mềm độc hại: không ai thắc mắc tại sao trình cài đặt phải được chạy với tư cách quản trị viên.
- nếu một trình tạo trình cài đặt tối nghĩa được sử dụng, nội dung của gói có thể không truy cập được bằng các công cụ trích xuất và chống phần mềm độc hại thông thường, tạo ra một cách khác để ẩn phần mềm độc hại.
Mặc dù các trình quản lý gói hiện tại có thể không hoàn hảo, sử dụng các định dạng gói của chúng có một số lợi thế bảo mật:
- các định dạng gói được biết đến và có thể ký được bằng mật mã, vì vậy việc giả mạo có thể dễ dàng được phát hiện
- nếu cần thiết, các công cụ trích xuất một gói như vậy để kiểm tra mà không cần thực thi một byte mã từ chính gói đó là có sẵn
- các định dạng gói hỗ trợ thực thi các tập lệnh trước / sau khi cài đặt / gỡ bỏ, có thể thực hiện bất kỳ bước cấu hình tùy chỉnh nào bạn có thể cần
- ít nhất là
.deb
định dạng đóng gói bao gồm một phương pháp thống nhất chỉ định cấu hình gói cho các cài đặt không tương tác hoàn toàn tự động (được gọi là "preseising" trong thế giới Debian / Ubuntu).
Bất kể bạn làm gì, nếu phần mềm của bạn được thiết kế để sử dụng trên các máy chủ, bạn nên đảm bảo rằng phần mềm của bạn có thể dễ dàng cài đặt không tương tác. Nếu bạn không làm điều này, các quản trị viên sử dụng các công cụ như Ansible, Salt hoặc docker-compose sẽ ghét phần mềm của bạn.
Để các trình quản lý gói được tự động cài đặt bất kỳ thư viện phụ thuộc hoặc các gói khác cho bạn, bạn phải ghi lại các phụ thuộc trong siêu dữ liệu gói. Bạn nên kiểm tra các gói của mình bằng cách cài đặt chúng vào VM với cài đặt "tối thiểu" của bản phân phối phù hợp và xác minh rằng các phụ thuộc sẽ tự động lấy mọi thứ mà gói phần mềm của bạn cần.
Bạn cũng nên đảm bảo mọi phụ thuộc sẽ cho phép cập nhật bảo mật: chỉ định phụ thuộc gói là "nhu cầu phiên bản X hoặc lớn hơn của gói Y" tốt hơn "hoàn toàn cần phiên bản 1.2.3.4 của gói Y".
Các bản phân phối chính có thể có tài liệu về thực hành đóng gói phần mềm được đề xuất. Ví dụ, Debian có sách hướng dẫn chính sách cho phần mềm Java. Mặc dù bạn có thể đi chệch khỏi nó nếu bạn không có kế hoạch đưa phần mềm của mình vào bản phân phối, bạn vẫn nên đọc nó để hiểu cách .dpkg
xử lý phần mềm Java được đóng gói.