假设我有一个名为 abc 的应用程序,在当前的存储库中,版本为 1.0。今天我在网上看到一条新闻:“突发:abc 版本 1.5 发布,修复了所有问题”,大家都疯了。当然,我也想试试。
如果我现在下载一个 deb 文件并安装 abc 1.5(假设没有依赖性问题),当版本 1.5 或 1.6 进入存储库时,这会对我的系统产生什么影响?我是否仍能正常使用存储库进行更新,或者该软件是否会以某种奇怪的方式“被切断”?
奇怪的问题,我希望有人能理解。
答案1
这取决于软件包的制作者是否遵守 Ubuntu/Debian 对其软件包的版本控制。例如,考虑 Vim 软件包:
$ apt-cache policy vim
vim:
Installed: 2:7.4.811-1~ppa1~t
Candidate: 2:7.4.811-1~ppa1~t
Version table:
*** 2:7.4.811-1~ppa1~t 0
500 http://ppa.launchpad.net/pi-rho/dev/ubuntu/ trusty/main amd64 Packages
100 /var/lib/dpkg/status
2:7.4.052-1ubuntu3 0
500 http://mirror.cse.iitk.ac.in/ubuntu/ trusty/main amd64 Packages
假如明天 Vim 7.5 发布了,而有人用7.5
而不是的版本制作了一个软件包,那么它将在我下次升级系统中的软件包2:7.5
时“升级” 。2:7.4.811-1~...
解释一下,Debian 软件包版本有三个主要字段(看man 5 deb-version
了解更多信息):
- 这时代
- 这上游版本
- 这Debian 修订版本
因此:
2:7.4.811-1~ppa1~t
¯ ¯¯¯¯¯¯¯ ¯¯¯¯¯¯¯¯
| | |
| | --- *debian revision*
| --- *upstream version*
--- *epoch*
这时代和Debian 修订版本由包装者添加,并且上游版本通常来自上游。如果新软件包紧随任何时代存储库中的软件包具有,那么事情应该会按预期进行。Debian 修订版本在这种情况下并不重要,因为上游版本总是胜过它。