我爲一個庫製作Debian軟件包,我將其稱爲libmystuff。目前它的版本是4.0.0,下一個版本是4.1.0,可能會破壞API的兼容性。該項目使用CMake來構建。soname的Debian軟件包命名策略
這應該怎麼處理soname和包名?
我想將軟件包版本初始化爲4.0.0。如果我命名包libmystuff,那麼我得到一個lintian錯誤,告訴我把包的soname放在包名(package-name-doesnt-match-sonames)中。很公平。
如果我將包名稱爲libmystuff4,那麼我會得到一個名爲libmystuff4-dev_4.0.0-1ubuntu8_amd64.deb
的包文件,它似乎有點多餘但可以,包是用於主版本4,軟件是版本4.0.0。但我仍然獲得了林田錯誤說,
libmystuff4: package-name-doesnt-match-sonames libmystuff4.0.0
所以這令我感到詫異,爲什麼林田要我把所有3個部分的soname的包名稱,而不是僅僅是第一部分?
在任何情況下,所以我將包名改爲libmystuff4.0.0,現在lintian很安靜,但是我得到一個名爲libmystuff4.0.0_4.0.0-1ubuntu8_amd64.deb
的包文件,它看起來超冗餘!
我該怎麼辦?
我在想也許soname應該是0,即使庫版本是4.0.0,我應該在發佈4.1.0時將soname設置爲1等。這需要修補上游CMake構建系統,這是一個可接受的方法?雖然在那種情況下,soname的其他部分怎麼樣,我只是將它們設置爲0?那麼這個軟件包將會是soname 0.0.0。
否則當他們釋放4.1.0時,我必須將soname更改爲5.0.0,這會變得非常混亂,對吧?