Linux
打包庫分發
我正在研究一些共享庫,現在遇到了一些軟體拒絕選擇較新版本的問題,但有些軟體必須使用最新版本,因為它有一些重要的變化。所以我需要保留同一個庫的 2 個不同版本。
問題是我使用了某種“胖”包
libel.deb
,其中包含開發人員所需的標頭檔以及so
與標頭檔兼容的實際二進製文件。我正在考慮將其拆分libel.deb
為libel-dev.deb
andlibel1-bin.deb
,libel2-bin.deb
。但問題是
libel-dev
包含與 le 最新版本庫兼容的標頭,因此開發人員實際上需要安裝 2 個包:libel-dev
並且libel2-bin
容易出錯(很容易安裝不兼容dev
的bin
包)。如何解決這個問題?可能開發包也可能包含二進製文件……?
-dev、-bin 等包的內容完全是約定俗成的,包管理器實際上並不關心。如果您實際上是上傳到 Ubuntu(或 Debian)存檔,各種工具(和人員)可能會檢查是否遵循了約定,但對於本地軟體包,如果您不想遵循它們,則不必遵循它們。也就是說,通常有充分的理由關注它們——如果沒有別的,那就減少混亂。
也就是說,各種包關係標頭(Depends、Breaks 等)都支持版本;如果您正確聲明了關係,包管理器應該阻止您安裝不兼容的集合。聽起來您甚至不需要版本。只是 libel-dev 需要 Depends: on libel2-bin 和 libel2-bin 需要 Conflicts: libel1-bin (如果它們不可共同安裝)。
您可能會發現Debian 政策手冊“聲明包之間的關係”很有幫助。