私のdebianインストールにはgpg 1.4.12が付属していましたが、2.0.19を実行したいと思っています。前者はgnupg
パッケージ、後者はgnupg2
。それらは私が知る限り平和に共存できますが、私は本当にgpg2
は、gpg
のデフォルトプロバイダーとして使用します。私はdebianがupdate-alternatives
これはデフォルトの設定に使用されますが、gpg
またはgnupg
についての言及はありません。
どうすれば設定できますか?
update-alternatives
は、パッケージが明示的に代替システムを使用している場合にのみ機能します。 gnupgとgnupg2にはありません。
通常、その理由は、ユーザーインターフェイスが大きく異なり、突然他のツールが実行された場合に、1つのツールを使用するスクリプトが機能しなくなるためです。ここでの典型的な例はmarkdown
です。 Debianの各markdown
実装には、まったく異なるコマンドラインオプションがあるため、代替システムはそこで使用されていません。
gpg
とgpg2
のコマンドラインオプションはそれほど違っていないようですが、特定のアクションまたは終了コードの出力が場所によって大幅に異なる場合があります。
それらが異なり、最小限のインストールとインストールメディアにとって重要な1つのことは、それらの依存関係です。 gnupg
パッケージは優先度が「標準」(つまり、標準インストールにインストールされている)であり、パッケージの依存関係はapt
ですが、パッケージgnupg2
は、現在、優先度「オプション」。
Debianには2つの未解決のバグレポートがあり、1つは各パッケージに対して( #561540はgnupgに対して および #483724はgnupg2 )、gnupg
およびgnupg2
。
現在、これらのバグレポートの1つにwontfix
のタグが付けられていますが、タグは「今のところ」であると言われており、代替システムがある場合には 注意が必要なヒント があります。将来的に使用されます(またはgnupg2
がデフォルトになります)。
gpg
を呼び出した場合にgpg2
を本当に呼び出したい場合は、シェルに一致するエイリアスを追加することをお勧めします。 bourne-Shell互換シェルのalias gpg=gpg2
を使用します。それほど害はありませんが、コマンドラインから呼び出された場合にのみ機能します。
/usr/bin/gpg
をgnupg2にしたい場合は、dpkg-divert
を使用できます。 gpg
をgpg1
に、次にgpg2
をgpg
に名前変更します。 dpkg-divert
で名前が変更されたファイルは、対応するパッケージの更新後も新しい名前を保持します。
ただし、警告が表示されます:APTはgpg
を必要とし、使用しますが、実際にはgpg2
であるとは限りません。したがって、dpkg-divert
をこのように使用すると、システムの一部が壊れる可能性があります(非rootユーザーのシェルエイリアスは、これに関して問題ありません)。
その質問に対する新しい回答がすぐにあります。Debian9 Stretch(2年程度でリリースされる予定です;-)以降を使用してください。
背景: DebConf15 Debian GnuPGパッケージメンテナ 発表済み で、DebianではGnuPG 2.xが/usr/bin/gpg
になり、GnuPG 1.xコマンドで名前が/usr/bin/gpg1
に変更されます。
/usr/bin/gpg
を他のGnuPGバージョンに好きなように切り替えることはできません(この理由については、他の回答を参照してください)。ただし、少なくともGnuPG 2.xが近い将来のデフォルトの実装になる予定です。 Debian UnstableとDebian Testing、そしてまもなくDebian Experimentalに。