如何在Debian上将gpg2设置为gpg的默认实现?


20

我的debian安装随附gpg 1.4.12,而我想运行2.0.19。前者位于包装中gnupg,后者位于包装中gnupg2。据我所知,它们可以和平共处,但我真的很想gpg2用作的默认提供程序gpg。我知道Debian有update-alternatives其用于设置默认值,但我找不到任何提及gpggnupg在其中。

我该如何设置?

Answers:


13

回答

update-alternatives仅在软件包明确使用替代系统的情况下有效。gnupg和gnupg2不。

背景

通常,原因是用户界面差异太大,因此如果突然运行另一种工具,则使用一种工具的脚本将不再起作用。这里是一个典型的例子markdownmarkdownDebian中的每个实现都有非常不同的命令行选项,因此那里没有使用替代系统。

gpg的和gpg2的命令行选项似乎并没有太大的区别,但是某些操作或退出代码的输出可能在某些地方有显着差异。

它们之间的不同之处在于对它们的依赖关系,这对于最小化安装和安装媒体很重要。尽管该gnupg软件包具有优先级“标准”(即安装在标准安装中)并且是该软件包的依赖项,但apt该软件包gnupg2引入了更多的库,这些库当前仅具有优先级“可选”。

Debian中有两个未解决的错误报告,一个针对每个软件包(针对gnupg#561540针对gnupg2#483724),要求为gnupg和使用替代系统gnupg2

目前,这些错误报告之一已被标记wontfix,但该标记被称为“暂时”,并且有一些提示,以防将来使用替代系统(或gnupg2将成为默认系统)时需要注意的事项。 。

如果您确实要怎么做

如果您真的想gpg2被调用gpg,我建议您在shell中添加一个相应的别名,例如alias gpg=gpg2用于bourne-shell兼容shell。应该不会造成太大的伤害,但是只有在从命令行调用时才会起作用。

如果确实要/usr/bin/gpg使用gnupg2,则可以使用dpkg-divert,例如,重命名gpggpg1,然后命名gpg2gpg。重命名为的文件dpkg-divert即使在更新相应软件包后也将保持其新名称。

但请注意: APT需要并使用gpg,可能并不期望它实际上是gpg2。因此,如果使用dpkg-divert这种方式,则可能会破坏系统的某些部分。(非root用户的shell别名对此很好。)


7

这个问题很快就会有新的答案:使用Debian 9 Stretch(大约2年后才会发布;-)或更新的版本。

背景:在DebConf15上,Debian GnuPG软件包维护者宣布,将来,GnuPG 2.x将/usr/bin/gpg位于Debian中,而GnuPG 1.x命令将重命名为/usr/bin/gpg1

您仍然无法按照/usr/bin/gpg自己的喜好切换到另一个GnuPG版本(请参阅我的其他答案以了解其背后的原因),但是至少在不久的将来,GnuPG 2.x将成为Debian Unstable和Debian Testing中的默认实现。很快就会在Debian Experiment中出现。


旁注,2017-06-14:最新的稳定版本中的debian工具仍在内部使用硬编码的gpg1。Debian叉子(ubuntu,薄荷)似乎可以解决它。
彼得说恢复莫妮卡

旁注,2017-06-17:最新稳定版本中的debian工具使用gpg2。(是的,我可以看到未来。;-)开个玩笑,但是@peterh在下一个Debian Stable发行版发布三天前就写了这个评论,这完全改变了这一点。
阿克塞尔·贝克特

好,谢谢!但是,深入研究gpg2对我来说很不错,为什么您升级gpg版本这么慢。我认为问题的真正原因是gpg。我认为,也许似乎需要项目分叉,怎么办?如果有人简单地在github上打开一个gpg2叉,并修复所有的脑损伤,那么它将如何被接收?我正在考虑这样做,但是如果它永远是一个被遗忘的档案,那根本就不值得它的价格。
彼得说恢复莫妮卡
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.