我的 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
实现都有完全不同的命令行选项,因此替代系统在那里没有使用。
gpg
和gpg2
的命令行选项似乎没有太大区别,但在某些地方某些操作或退出代码的输出可能有很大不同。
它们之间的一个不同之处是依赖关系,而这一点对于最小安装和安装介质来说非常重要。虽然gnupg
包的优先级为“标准”(即安装在标准安装中)并且是包的依赖项apt
,但包gnupg2
引入了相当多的库,而这些库目前仅具有“可选”的优先级。
Debian 中有两个未解决的错误报告,分别针对每个软件包(#561540 反对 gnupg和反对 gnupg2 的 #483724),要求使用替代方案系统gnupg
和gnupg2
。
目前,其中一个错误报告被标记为wontfix
,但标签显示为“暂时”,并且有一些需要注意的提示以防将来使用替代系统(或gnupg2
成为默认系统)。
如果你真的想要的话该怎么做
如果您确实希望gpg2
在调用时被调用gpg
,我建议在您的 shell 中添加相应的别名,例如,对于与alias gpg=gpg2
bourne-shell 兼容的 shell,使用 。这不会造成太大的损害,但只有在从命令行调用时才会起作用。
如果你确实想要/usr/bin/gpg
使用 gnupg2,你可以使用 来做到这一点dpkg-divert
,例如重命名gpg
为gpg1
然后重命名gpg2
为gpg
。使用 重命名的文件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 中的默认实现。