Ubuntu 22.04 で apt-key add したあと apt-update で Key is stored in legacy trusted.gpg keyring というメッセージが表示される場合の対応方法
結論から言うと、以下のコマンドで鍵を追加すれば良い。
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
に置くことが推奨されている。
よって冒頭のコマンドとなる。