Aar*_*all 11 package-management software-installation 16.04
我一直在构建自己的 emacs,因为我想修复其中的一些问题并在上游修复错误。但是,Ubuntu 会不断自动删除我自己构建的 emacs,我必须不断重建和重新安装它。
这是我apt-cache policy emacs
昨晚睡觉时的输出:
~/emacs$ sudo apt-cache policy emacs
emacs:
Installed: 26.0.50.aaron-1
Candidate: 46.1
Version table:
46.1 500
500 http://us.archive.ubuntu.com/ubuntu xenial/main amd64 Packages
500 http://us.archive.ubuntu.com/ubuntu xenial/main i386 Packages
*** 26.0.50.aaron-1 100
100 /var/lib/dpkg/status
Run Code Online (Sandbox Code Playgroud)
这是我醒来的时候:
~/emacs$ sudo apt-cache policy emacs
[sudo] password for excelsiora:
emacs:
Installed: 46.1
Candidate: 46.1
Version table:
*** 46.1 500
500 http://us.archive.ubuntu.com/ubuntu xenial/main amd64 Packages
500 http://us.archive.ubuntu.com/ubuntu xenial/main i386 Packages
100 /var/lib/dpkg/status
Run Code Online (Sandbox Code Playgroud)
为什么这个包的版本是 46 而不是 24 或 25?26 是目前您可以获得的最高主要 emacs 版本。
我可以看到这是一个元包:https : //packages.debian.org/source/jessie/emacs-defaults
为什么 Ubuntu 不询问就更新软件?
主要问题:我应该怎么做 - 为我的包版本分配一个高于 46 的数字只是为了让它坚持下去?
这似乎是一个可怕的黑客攻击,或者这就是它应该如何工作的?
Oli*_*Oli 15
这里有很多问题和问题,所以我会很简短,但尽量涵盖所有这些。
emacs
只是一个元包,指向emacs...
Ubuntu中的最新版本(当前emacs24
)。“46.1”只是一个包版本,故意高以取代旧的emacs包。查看apt show emacs
更多信息。
您正在emacs
使用较低版本号的包覆盖该包。Ubuntu 按版本号优先安装包版本。最高的将是安装的那个(安装或升级时),因此你的总是被淹没。
您可以在apt-cache policy emacs
输出中看到这一点。候选是更高版本。
您可以通过固定或伪造版本号(高于 46.1)来解决优先级问题,但这确实会忽略问题(并且可能会留下一个emacs24
包)。
您最好的选择是删除emacs
包,而只是构建和安装一个emacs25
或 emacs26
包。您可能还建立一个Emacs元包依赖于您的版本中,名包,但是这只是一种虚荣。除非你打算分发,否则我不会这样做。
关于Ubuntu在没有“不问”的情况下做事,请检查是否打开了自动更新。获取可用的最新版本是默认行为,所以我认为这更像是“不了解 Ubuntu 做什么”的情况,而不是机器中的幽灵,或者更糟。
至于“为什么是 24 版,而不是 25 版或 26 版?”,它下面的 Ubuntu 和 Debian 都针对稳定的、经过测试的软件版本。26 仍在开发中,25 直到 2016 年 9 月才问世。
此外,Ubuntu 不是滚动发行版,因此 24 版的 Ubuntu 版本将在这些 Ubuntu 发行版的生命周期内保留在 24 版上(除非发生了一些非常疯狂的事情)。如有必要,安全补丁将向后移植并应用,但仍为 24。