Answers:
update-alternatives
仅在软件包明确使用替代系统的情况下有效。gnupg和gnupg2不。
通常,原因是用户界面差异太大,因此如果突然运行另一种工具,则使用一种工具的脚本将不再起作用。这里是一个典型的例子markdown
。markdown
Debian中的每个实现都有非常不同的命令行选项,因此那里没有使用替代系统。
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
,例如,重命名gpg
为gpg1
,然后命名gpg2
为gpg
。重命名为的文件dpkg-divert
即使在更新相应软件包后也将保持其新名称。
但请注意: APT需要并使用gpg
,可能并不期望它实际上是gpg2
。因此,如果使用dpkg-divert
这种方式,则可能会破坏系统的某些部分。(非root用户的shell别名对此很好。)
这个问题很快就会有新的答案:使用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中出现。