Debian: “apt-key is deprecated.” と怒られた時の対応

サードパーティのaptレポジトリを追加しようと、

sudo wget -qO - https://dokoka-repo/gpg-key | sudo apt-key add -

を実行したら怒られてしまいました:

Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8))

apt-keyは廃止になるようなので、その代替方法についてのメモです。

参考にしたのは第675回 apt-keyはなぜ廃止予定となったのかです。

肝心の対応方法は2ページ目にあります。

要点は

  • レポジトリ鍵は特定のサードパーティ用の鍵フォルダに保管する
  • apt lineではレポジトリと鍵を紐付ける
です。

レポジトリ鍵を特定のサードパーティ用の鍵フォルダに保管する

鍵のダウンロードとバイナリ形式への変換

どこか適当な場所に鍵をダウンロードします。上記のページだと/tmpを使ってます。

cd /tmp
wget https://dokoka.key.location/gpg-key

これでhoge.keyがダウンロードされたとしてバイナリに変換しておきます。 (aptでサポートしていない形式で配布されている場合もあるようなので、バイナリに変換しておくのが安心なようですね。)

一旦とりこみます。

gpg --no-default-keyring --keyring temp-keyring.gpg --import hoge.key 

これを打つと下のような結果が帰ってきます:

gpg: keybox '/home/XXXX/.gnupg/temp-keyring.gpg' created
gpg: key XXXXXXXXXXXXXXXXX: public key "XXXXXXXXXXXXXXXX " imported
gpg: Total number processed: 1
gpg:               imported: 1

最後に

gpg --no-default-keyring --keyring temp-keyring.gpg --export --output hoge.gpg

サードパーティレポジトリの鍵保管場所へコピー

サードパーティレポジトリの鍵保管場所を作成してコピーしておきます。

sudo mkdir -p /usr/local/share/keyrings 
sudo cp hoge.gpg /usr/local/share/keyrings

apt lineでレポジトリと鍵を紐付け

sudo touch /etc/apt/sources.list.d/dokoka-repo.list
sudo editor /etc/apt/sources.list.d/dokoka-repo.list 

apt lineは次のようにしています(下は二行に見えていますが、実際は一行です):

deb [arch=amd64 signed-by=/usr/local/share/keyrings/hoge.gpg] https://dokoka-repo/dir/subdir stable main