Boost là một ví dụ phức tạp, trước tiên hãy xem xét một cái đơn giản hơn.
Chính xác, gói nguồn openssl cung cấp 5 gói nhị phân:
libssl1.0.0
chứa thư viện động OpenSSL, phiên bản 1.0.0. Đó là những gì các chương trình liên kết với thư viện này cần phải chạy. Tên gói chứa số phiên bản vì bạn có thể cài đặt các phiên bản khác của thư viện cùng lúc, nếu bạn có các chương trình khác được liên kết với phiên bản khác không tương thích nhị phân với 1.0.0.
openssl
chứa các công cụ dòng lệnh sử dụng thư viện OpenSSL. Ngay cả khi bạn có nhiều phiên bản của thư viện, bạn không cần nhiều phiên bản của các công cụ này: chỉ có một /usr/bin/openssl
và các công cụ, dữ liệu và tài liệu liên quan.
libssl-dev
chứa các tệp mà bạn cần nếu bạn muốn biên dịch chương trình liên kết với OpenSSL. Có tệp tiêu đề C ( *.h
), thư viện để liên kết ( *.a
, *.so
) và một vài tệp.
libssl-doc
chứa tài liệu cho thư viện OpenSSL. Bạn chỉ cần gói này nếu bạn sẽ viết chương trình sử dụng thư viện.
libssl1.0.0-dbg
chứa các biểu tượng gỡ lỗi. Nó chỉ hữu ích cho những người gỡ lỗi thư viện OpenSSL hoặc các chương trình sử dụng nó. Câu trả lời của andrews Something có thêm thông tin về các -dbg
gói này .
Ngoài ra, chính xác có chứa một phiên bản cũ hơn của thư viện libssl0.9.8
, bởi vì có những chương trình vẫn được liên kết với phiên bản cũ hơn.
Các gói khác mà bạn có thể thấy là các ràng buộc cho các ngôn ngữ khác ngoài C. OpenSSL không giao hàng với bất kỳ (có ràng buộc nào với OpenSSL cho các ngôn ngữ khác, nhưng chúng không đến từ cùng một nguồn). Một ví dụ là sqlite3 , tàu có các ràng buộc TCL .
Lý do chính để chia các gói như thế này là các gói khác nhau có đối tượng mục tiêu khác nhau. Một hệ thống mà không ai từng biên dịch bất cứ thứ gì chỉ cần lib
gói lõi và có thể là các công cụ dòng lệnh; chúng sẽ được cài đặt tự động từ các phụ thuộc nếu cần. Nếu ai đó muốn biên dịch một chương trình sử dụng thư viện, họ cần -dev
gói đó. Nếu ai đó muốn viết một chương trình sử dụng thư viện, họ cần -doc
gói.
Vậy còn Boost thì sao? Nó có cùng cấu trúc, nhưng vì Boost là một thư viện khổng lồ, nên nó được chia thành nhiều gói nhỏ hơn: libboost-*1.46.1
và libboost-*1.46-dev
. Nói chính xác, chỉ có một phiên bản Boost, 1.46 , nhưng oneiric có cả 1.42 và 1.46 . Ngoài ra còn có một mặc định tăng cường siêu dữ liệu kéo gói trong phiên bản như là một phụ thuộc.
Nhìn vào libhangul , ngoài gói thư viện động libhangul1
và gói phát triển libhangul-dev
, còn có một gói libhangul-data
. Gói này chứa dữ liệu bổ sung được yêu cầu bởi thư viện. Ngay cả khi bạn có nhiều phiên bản của thư viện, họ có thể chia sẻ -data
gói. Ngoài ra, gói là độc lập kiến trúc. Phần mềm chứa một lượng lớn dữ liệu độc lập với kiến trúc được chia thành các gói phụ thuộc vào kiến trúc và độc lập với kiến trúc, để tiết kiệm không gian trên các trang phân phối. Một hậu tố khác với một ý nghĩa tương tự là -common
.
Các quy tắc đóng gói Ubuntu và Debian rất giống nhau, vì vậy tài liệu về việc tạo các gói Debian cũng áp dụng cho Ubuntu. Thực tế, bạn có thể có cùng gói nguồn cho Debian và Ubuntu; điều duy nhất làm cho các gói Debian và Ubuntu trở nên khác biệt là biên dịch chúng theo các phiên bản thư viện khác nhau và điều đó không khác gì giữa sự khác biệt giữa các bản phát hành Ubuntu khác nhau. Có sẵn tài liệu dành cho nhà phát triển Debian , đặc biệt là Hướng dẫn chính sách Debian và Tài liệu tham khảo của nhà phát triển ; xem Hướng dẫn bảo trì mới để biết giới thiệu. Bỏ qua các phần về làm việc với dự án Debian, v.v., chỉ cần đọc các phần về cách tạo gói.dh_make
là một cách tốt để bắt đầu với gói gỡ lỗi (bạn sẽ muốn chọn Thư viện trên mạng).