Lov*_*ntu 5 packaging ppa dependencies
这个问题是针对 PPA/包维护者的。
我有一个包含 2 个包的 PPA:
目前,mypackage 的控制文件有:
Depends: mypackagelib
Run Code Online (Sandbox Code Playgroud)
我想将 2 个包更新到版本“2”(mypackage 版本 2 和 mypackagelib 版本 2)。
当用户更新 'mypackage' 时,我如何确保这 2 个包会被更新?
仅供参考,将“取决于”字段更改为:
Depends: mypackagelib (>= 2)
Run Code Online (Sandbox Code Playgroud)
不起作用,并返回以下错误:
mypackage : Depends: mypackagelib (>= 2) but mypackagelib-2~ppa1~quantal is to be installed
Run Code Online (Sandbox Code Playgroud)
你的版本号不一致。版本号的顺序关系相当复杂。Debian 政策手册中对此进行了描述。尤其:
\n\n\n\n\n首先确定完全由非数字字符组成的每个字符串的初始部分。这两部分(其中之一可能为空)进行词法比较。如果发现差异,则将其返回。词法比较是修改后的 ASCII 值的比较,以便所有字母都比所有非字母排序更早,并且波形符在任何内容(甚至部分结尾)之前排序。例如,以下部分按从最早到最晚的顺序排序:~~、~~a、~、空部分、a。
\n
特别是,3.196~ppa1~quantal
被认为比 更老3.196
。的典型用例~
是 beta 版本:1.42~beta3
出现在1.42
. 您可以通过运行以下命令来检查您对 Debian 软件包版本号的理解dpkg --compare-versions
:
$ dpkg --compare-versions \'3.196~ppa1~quantal\' \'>=\' \'3.196\'; echo $?\n1\n
Run Code Online (Sandbox Code Playgroud)\n\n0 表示满足顺序关系,1 表示不满足顺序关系。
\n\nPPA 打包帮助中存在一些关于版本号的不完整建议。由于你的包不在 Ubuntu 中,所以你不需要后缀~
;您应该使用类似的版本号3.196ppa1
。源依赖关系可以(>= 3.196)
是 3.196 的任何版本都可以,或者(>= 3.196ppa5)
您是否至少需要某个软件包版本。
如果您将 保留~
在这里,则也必须将其放入源依赖项中:(>= 3.196~ppa1~quantal)
。要说 \xe2\x80\x9cat 至少与主包\xe2\x80\x9d 版本相同,请写
Depends: mypackagelib (>= ${binary:Version})\n
Run Code Online (Sandbox Code Playgroud)\n\n另一种可能性(感谢 tumbleweed是声明对3.196~
(数字和波形符仅此而已)的依赖,这是比3.196~anything
.
(这不适用于您,但可能适用于未来的访问者。以下内容适用于libmypackage
包含共享库 ( .so
) 的情况。)
顺便说一下,库的命名约定是libmypackage1
and 。libmypackage2
如果您从 开始mypackagelib-1
,则应该保留它,但切换到libmypackage2
下一个版本。
如果同时安装了仍然使用旧库的程序和使用新库的程序,则这两个库包mypackagelib-1
可能会共存。mypackagelib-2
除非管理员明确请求安装库包(只有当他有需要该库的非打包程序时才这样做/usr/local
),否则旧的库包将被标记为自动安装,因此它将当没有依赖时会自动卸载。
有关如何打包库的更多信息,请阅读Debian 库打包指南。尽管 Debian 的政策对于 Ubuntu PPA 不是强制性的,但遵循它们是个好主意:它们说明了使用 Debian 打包工具的最佳实践。
\n 归档时间: |
|
查看次数: |
1037 次 |
最近记录: |