为什么这个 Emacs 包的版本是 46.1?26 是当今可能的最高主版本

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包,而只是构建和安装一个emacs25emacs26包。可能还建立一个Emacs元包依赖于您的版本中,名包,但是这只是一种虚荣。除非你打算分发,否则我不会这样做。

  • 关于Ubuntu在没有“不问”的情况下做事,请检查是否打开了自动更新。获取可用的最新版本是默认行为,所以我认为这更像是“不了解 Ubuntu 做什么”的情况,而不是机器中的幽灵,或者更糟。

  • 至于“为什么是 24 版,而不是 25 版或 26 版?”,它下面的 Ubuntu 和 Debian 都针对稳定的、经过测试的软件版本。26 仍在开发中,25 直到 2016 年 9 月才问世。

    此外,Ubuntu 不是滚动发行版,因此 24 版的 Ubuntu 版本将在这些 Ubuntu 发行版的生命周期内保留在 24 版上(除非发生了一些非常疯狂的事情)。如有必要,安全补丁将向后移植并应用,但仍为 24。