我为一个库制作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,这会变得非常混乱,对吧?