Ví dụ: tôi duy trì một ứng dụng sử dụng libmemcached. Tôi có thể biên dịch nó bằng cách sử dụng libmemcached5 hoặc libmemcached6, cũng xây dựng gói .deb trỏ đến libmemcached5, libmemcached6 hoặc thậm chí libmemcached5 | libmemcached6 như là phụ thuộc, nhưng thực sự nhị phân của tôi được biên dịch chỉ với một trong số chúng. Cách tốt nhất tôi có thể giải quyết vấn đề này để triển khai gói của tôi mà không cần nâng cấp/hạ cấp bất kỳ phụ thuộc nào ở phía người dùng là gì?Làm thế nào để xây dựng và triển khai gói với các phiên bản khác nhau của một phụ thuộc?
5
A
Trả lời
1
Nếu bạn đang sử dụng kho lưu trữ, hoặc nếu nhiều phiên bản được biên dịch của ứng dụng của bạn được chấp nhận, thì tốt nhất bạn nên biên dịch ứng dụng hai lần, một lần với libmemcached5 và một lần với libmemcached6 và gói chúng riêng biệt với các tên gói khác nhau , và sử dụng một gói phần mềm ảo để cài đặt một trong những quyền tự động:
Package: myapplication-memchched5
Version: 1.3.17-1
Depends: libmemcached5
Provides: myapplication
Conflicts: myapplication
Replaces: myapplication
và
Package: myapplication-memchched6
Version: 1.3.17-1
Depends: libmemcached6
Provides: myapplication
Conflicts: myapplication
Replaces: myapplication
Bây giờ aptitude install myapplication
sẽ tự động chọn một trong hai myapplication-memchched5
hoặc myapplication-memchched6
dựa trên những thứ khác cần được cài đặt.