回答

回答

我的 debian 安装附带 gpg 1.4.12,而我希望运行 2.0.19。前者包含在软件包中,gnupg后者gnupg2包含在内。据我所知,它们可以和平共处,但我真的很想使用 的gpg2默认提供程序gpg。我知道 debian 有update-alternatives用于设置默认值的,但我找不到其中提到gpg或的内容gnupg

我该如何设置?

答案1

回答

update-alternatives仅当软件包明确使用替代系统时才有效。gnupg 和 gnupg2 则不行。

背景

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

gpggpg2的命令行选项似乎没有太大区别,但在某些地方某些操作或退出代码的输出可能有很大不同。

它们之间的一个不同之处是依赖关系,而这一点对于最小安装和安装介质来说非常重要。虽然gnupg包的优先级为“标准”(即安装在标准安装中)并且是包的依赖项apt,但包gnupg2引入了相当多的库,而这些库目前仅具有“可选”的优先级。

Debian 中有两个未解决的错误报告,分别针对每个软件包(#561540 反对 gnupg反对 gnupg2 的 #483724),要求使用替代方案系统gnupggnupg2

目前,其中一个错误报告被标记为wontfix,但标签显示为“暂时”,并且有一些需要注意的提示以防将来使用替代系统(或gnupg2成为默认系统)。

如果你真的想要的话该怎么做

如果您确实希望gpg2在调用时被调用gpg,我建议在您的 shell 中添加相应的别名,例如,对于与alias gpg=gpg2bourne-shell 兼容的 shell,使用 。这不会造成太大的损害,但只有在从命令行调用时才会起作用。

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

但请注意:APT 需要并使用gpg,但可能并不期望它实际上是这样的gpg2。因此,如果您以这种方式使用,可能会破坏系统的某些部分dpkg-divert。(非 root 用户的 Shell 别名在这方面是没问题的。)

答案2

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

背景:DebConf15Debian 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 Experimental 中的默认实现。

相关内容