在 ubuntu 14.04 LTS 中请求更新有缺陷的软件包的正确协议

在 ubuntu 14.04 LTS 中请求更新有缺陷的软件包的正确协议

我正在使用 Ubuntu 14.04.5,很长一段时间以来,emacs 和 dictionaries-common 一直存在一个小问题。简而言之,Ubuntu 14.04.5 附带的 dictionaries-common 版本是 dictionaries-common 1.20.5,当 Ubuntu 14.04.5 附带的 emacs 版本启动时,emacs 消息文件中会生成一个错误:

Error while loading 50dictionaries-common: Symbol's value as variable is void: debian-aspell-only-dictionary-alist

这是一个已知的错误在 dictionaries-common 1.20.5 中。但是,这个错误不久前就被修复了,例如在 dictionaries-common 1.22.6 中。

我(也许天真地)怀疑将 dictionary-common 升级到较新的稳定版本会是一个相对简单的解决问题的方法。但是,如果我理解正确的话,反向移植中的 dictionary-common 版本仍然是 1.20.5:

$ sudo apt-get install -t trusty-backports dictionaries-common

报告

dictionaries-common is already the newest version.

如果我想修复此问题,而不升级我的 Ubuntu 版本,我有什么选择?我觉得我应该以某种方式向 Ubuntu 开发人员报告此问题,因为这是 Ubuntu 稳定 LTS 版本中的一个(极低优先级)错误,据我所知,它没有在待处理 SRU因此,在理想情况下,我会以某种方式报告该问题,然后它就会得到修复。另一方面,我认为词典包不太可能破坏其他包(著名的遗言),也许我应该勇敢面对困难,自己将词典通用版本更新到 1.22.6 或更高版本。但是我不知道如何做到这一点,而且我不知道这是否是明智的行为。我从发射台我可以继续尝试编译和安装,但我担心这样实际上会完全破坏包管理器系统。这不明智吗?在这种情况下应该怎么做?

答案1

非常感谢 muru 鼓励我不仅编译源代码,而且真正制作了一个包裹我对这种情况的理解是,从源代码创建包解决了我担心的问题(破坏包系统),因为(我认为)这个想法是我需要的所有依赖项都由系统处理。

这正是我所做的。除了dictionaries-common_1.22.6.tar.gz从 launchpad 下载外,我还按照 muru 的建议下载了 dsc 文件dictionaries-common_1.22.6.dsc。然后我按照以下说明操作:

http://blog.riamaria.com/99/what-to-do-with-a-dsc-file-dpkg/

更准确地说,该计划是制作一个 Debian 软件包

dictionaries-common_1.22.6_all.deb

然后将其安装在我的系统上。

在我开始之前我必须进行安装dpkg-dev以便能够制作软件包。

然后我跑了

dpkg-source -x dictionaries-common_1.22.6.dsc 

这创建了一个新目录dictionaries-common-1.22.6,我将其放入其中。在这个目录中,我尝试

dpkg-buildpackage -rfakeroot -b

但我第一次运行此命令时失败并出现错误

dpkg-checkbuilddeps: Unmet build dependencies: debhelper (>= 7) quilt (>= 0.40) docbook-dsssl jade w3m slice recode
dpkg-buildpackage: warning: build dependencies/conflicts unsatisfied; aborting

这里发生的事情是,我需要在系统上安装更多软件包才能构建 dictionaries-common。因此,我安装了这些软件包apt-get,然后重试。当然,这不能保证一定有效 —— 也许 14.04 中这些软件包的默认版本不够用。但我很幸运 —— 它们足够了。第二次尝试该dpkg-buildpackage命令时成功了。不出所料,我无法以软件包维护者的身份对软件包进行签名,因为我不是软件包维护者,也不知道软件包维护者的密钥。但我认为这不会困扰我。

结果是,现在回到我执行所有这些操作的目录中,我有了一个新文件

dictionaries-common_1.22.6_all.deb

我成功安装了

$ sudo dpkg -i dictionaries-common_1.22.6_all.deb

我的 emacs 中的错误消失了!

相关内容