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

use*_*476 20 linux debian default-settings gnupg

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

我该如何设置?

Axe*_*ert 13

回答

update-alternatives仅当包显式使用替代系统时才有效。gnupg 和 gnupg2 没有。

背景

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

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

它们不同的一件事是它们的依赖关系,这对于最小安装和安装介质很重要。虽然gnupg包是优先级“标准”(即安装在标准安装中)和包的依赖项,但apt该包gnupg2引入了更多的库,这些库当前仅具有“可选”优先级。

Debian 中有两个公开的错误报告,一个针对每个包(针对 gnupg 的 #561540针对 gnupg2 的 #483724),要求使用替代系统gnupggnupg2

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

如何,以防万一你真的想要

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

如果你真的想/usr/bin/gpg成为 gnupg2,你可以用 来做到这一点dpkg-divert,例如重命名gpggpg1,然后重命名gpg2gpgdpkg-divert即使在更新相应的包后,重命名的文件也将保留其新名称。

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


Axe*_*ert 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 实验中。