为什么此Emacs软件包的版本为46.1?26是当今最高的主版本


11

我一直在构建自己的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

这是当我醒来的时候:

~/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

为什么此软件包的版本号是46,而不是24或25?26是您可以获得的当前最高的主要emacs版本。

我可以看到这是一个元数据包:https : //packages.debian.org/source/jessie/emacs-defaults

为什么Ubuntu会不加询问地更新软件?

主要问题:我应该怎么做-为软件包版本分配一个大于46的数字以使其坚持下去?

这似乎是一个可怕的骇客,或者这就是它应该起作用的方式?


2
变更日志中:“将初始版本设置为高于任何现有的emacs二进制软件包。”
muru

这让我很难过。:/
亚伦大厅

Answers:


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。


我从没问过“为什么要使用版本24”(我认为答案很明显),我的意思是“为什么要使用此版本”,指的是46,但是由于它是多余的,而且不如先前的问题那么明确,因此我删除了它。无论如何,我将其重命名为emacs26以作为checkinstall的参数-稍后我可能会发布解决方案。加一。谢谢
亚伦·霍尔

@Oli(+1)关于您的最后一点,是否有一个很好的论据,不将Emacs升级到操作系统随附的版本之外?是否存在已知的稳定性问题或其他问题?我正在使用Ubuntu 16.04 LTS,并希望移至版本Emacs 25.1。
n1k31t4

99本来是更好的版本号。
托尔比约恩Ravn的安徒生

0

为什么Ubuntu会不加询问地更新软件?

我认为这可能是由于您在Update Manager(“编辑”菜单)中的“更新策略”所致。我建议使用中间选项:优化稳定性和安全性。最后一个选项将是“始终更新所有内容”-您不需要。

您还可以在“编辑”>“首选项”>“已列入黑名单的软件包”(又称为“忽略软件包”)中将软件包“ emacs-defaults”列入黑名单。


0

跟进@Oli的回答,这是您的工作方式:

删除emacs软件包,而仅构建并安装emacs25或emacs26软件包。

  1. 找到您的emacs.deb文件。对我来说,它位于我的emacs源根文件夹中,并被命名为emacs_25.1-1_amd64.deb
  2. 创建一个目录来保存要创建的新debian软件包: $ mkdir emacs-rename
  3. 将debian软件包解压缩到目录: $ ar -x emacs_25.1-1_amd64.deb emacs-rename/
  4. 进入emacs-rename目录: $ cd emacs-rename
  5. 进一步提取control.tar.gz和data.tar.xz:$ tar -xzf control.tar.gz$ tar -xf data.tar.xz
  6. 编辑control使用nano生成的文件(因为您还没有emacs;)- $ nano control更改Package: emacsPackage: emacs25(或26、27等)
  7. 在emacs-rename:内创建一个DEBIAN目录:$ mkdir DEBIAN并将控制文件复制到那里:$ cp control DEBIAN/
  8. 进入目录,回到emacs源root($ cd ..)并运行$ dpkg --build emacs-rename。这可能需要一些时间。
  9. 您现在应该具有emacs-rename.deb软件包。不用担心它没有遵循正确的debian软件包命名结构,它只是供您使用。用安装$ sudo dpkg -i emacs-rename.pkg
  10. 如果一切正常,您应该看到:

    准备解压缩emacs-rename.deb ...
    解压缩emacs25(25.1-1)...
    设置emacs25(25.1-1)...

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.