web-dev-qa-db-ja.com

debian上のgpgのデフォルト実装としてgpg2を設定する方法は?

私のdebianインストールにはgpg 1.4.12が付属していましたが、2.0.19を実行したいと思っています。前者はgnupgパッケージ、後者はgnupg2。それらは私が知る限り平和に共存できますが、私は本当にgpg2は、gpgのデフォルトプロバイダーとして使用します。私はdebianがupdate-alternativesこれはデフォルトの設定に使用されますが、gpgまたはgnupgについての言及はありません。

どうすれば設定できますか?

20
user329476

回答

update-alternativesは、パッケージが明示的に代替システムを使用している場合にのみ機能します。 gnupgとgnupg2にはありません。

バックグラウンド

通常、その理由は、ユーザーインターフェイスが大きく異なり、突然他のツールが実行された場合に、1つのツールを使用するスクリプトが機能しなくなるためです。ここでの典型的な例はmarkdownです。 Debianの各markdown実装には、まったく異なるコマンドラインオプションがあるため、代替システムはそこで使用されていません。

gpggpg2のコマンドラインオプションはそれほど違っていないようですが、特定のアクションまたは終了コードの出力が場所によって大幅に異なる場合があります。

それらが異なり、最小限のインストールとインストールメディアにとって重要な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を使用できます。 gpggpg1に、次にgpg2gpgに名前変更します。 dpkg-divertで名前が変更されたファイルは、対応するパッケージの更新後も新しい名前を保持します。

ただし、警告が表示されます:APTはgpgを必要とし、使用しますが、実際にはgpg2であるとは限りません。したがって、dpkg-divertをこのように使用すると、システムの一部が壊れる可能性があります(非rootユーザーのシェルエイリアスは、これに関して問題ありません)。

13
Axel Beckert

その質問に対する新しい回答がすぐにあります。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に。

7
Axel Beckert