結論から言うと、以下のコマンドで鍵を追加すれば良い。

sudo curl -fsSL https://myrepo.example/myrepo.asc -o /etc/apt/keyrings/myrepo.asc

鍵がテキスト形式の場合は拡張子を .asc、バイナリ形式の場合は .gpg にすること。

既に公開鍵を追加済みの場合は apt-key list で下8桁を確認し apt-key del XXXXXXXX で削除する。

解説

Ubuntu 22.04 で apt-key add したあと apt-update すると以下のメッセージが表示される。

Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.

鍵が古い非推奨の場所に保存されているという警告だ。 man apt-key によると

apt-key(8) will last be available in Debian 11 and Ubuntu 22.04.

apt-key は Debian 11 と Ubuntu 22.04 を最後に廃止となるので 鍵の追加方法も変える必要がある。

メッセージ通り DEPRECATION セクションを見ると次のように書かれている。

DEPRECATION

Except for using apt-key del in maintainer scripts, the use of apt-key is deprecated. This section shows how to replace existing use of apt-key.

If your existing use of apt-key add looks like this:

wget -qO- https://myrepo.example/myrepo.asc | sudo apt-key add -

Then you can directly replace this with (though note the recommendation below):

wget -qO- https://myrepo.example/myrepo.asc | sudo tee /etc/apt/trusted.gpg.d/myrepo.asc

Make sure to use the “asc” extension for ASCII armored keys and the “gpg” extension for the binary OpenPGP format (also known as “GPG key public ring”). The binary OpenPGP format works for all apt versions, while the ASCII armored format works for apt version >= 1.4.

Recommended: Instead of placing keys into the /etc/apt/trusted.gpg.d directory, you can place them anywhere on your filesystem by using the Signed-By option in your sources.list and pointing to the filename of the key. See sources.list(5) for details. Since APT 2.4, /etc/apt/keyrings is provided as the recommended location for keys not managed by packages. When using a deb822-style sources.list, and with apt version >= 2.4, the Signed-By option can also be used to include the full ASCII armored keyring directly in the sources.list without an additional file.

以下のような形式で使用している場合は

wget -qO- https://myrepo.example/myrepo.asc | sudo apt-key add -

次のように書き換えればよい。

wget -qO- https://myrepo.example/myrepo.asc | sudo tee /etc/apt/trusted.gpg.d/myrepo.asc

拡張子が .asc のファイルを置けば ASCII armored 形式 (テキスト形式)、 .gpg のファイルを置けばバイナリ形式として処理される。 Ubuntu 22.04 の場合 ASCII armored 形式からバイナリ形式への変換 (gpg --dearmor) は不要らしい。

また、パッケージで管理されていない鍵は /etc/apt/keyrings に置くことが推奨されている。 よって冒頭のコマンドとなる。