毎度、ググっても出てこない小ネタを取り扱っております。
本記事は個人的な見解であり、筆者の所属するいかなる団体にも関係ございません。
ググってもあまり出てきませんが、Claude Opus 4.6で一発解決でした。
こんなカスみたいなトラブルシューティングにOpusを使うのはナニかもしれませんが、
GPT-5.2-chatは嘘こいてくるので、こっちで成敗してもらいます。
0. はじめに
Ubuntu 22.04 で sudo apt update を実行すると、以下の警告が表示されることがあります。
Key is stored in legacy trusted.gpg keyring
これは古い鍵管理方式(apt-key / /etc/apt/trusted.gpg)が非推奨となり、将来的に廃止予定であることを示しています。
本記事では、PPA の鍵を新方式(/etc/apt/keyrings/ + signed-by=)へ移行する手順を紹介します。
1. 環境
| 項目 | 内容 |
|---|---|
| OS | Ubuntu 22.04.5 LTS |
| 対象PPA | ondrej/php, redislabs/redis |
2. 旧方式と新方式の違い
| 旧方式 | 新方式 | |
|---|---|---|
| 鍵の保存先 | /etc/apt/trusted.gpg |
/etc/apt/keyrings/*.gpg |
| sources.list | deb https://... |
deb [signed-by=/etc/apt/keyrings/xxx.gpg] https://... |
| 管理コマンド |
apt-key add / apt-key del
|
gpg --dearmor で直接管理 |
3. 手順
3-1. keyrings ディレクトリの確認・作成
sudo mkdir -p /etc/apt/keyrings
Ubuntu 22.04 ではデフォルトで存在している場合もあります。
3-2. 対象PPAの鍵IDを確認
sudo apt-key list 2>/dev/null | grep -B 5 -i redis
sudo apt-key list 2>/dev/null | grep -B 5 -i ondrej
今回確認できたフィンガープリント:
| PPA | フィンガープリント |
|---|---|
| ondrej/php | 14AA40EC0831756756D7F66C4F4EA0AAE5267A6C |
| redislabs/redis | 60A0586666DE0BA4B481628ACC59E6B43FA6E3CA |
3-3. 各PPAの鍵を取得して保存
ondrej/php:
curl -fsSL "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x14AA40EC0831756756D7F66C4F4EA0AAE5267A6C" | sudo gpg --dearmor -o /etc/apt/keyrings/ondrej-php.gpg
redislabs/redis:
curl -fsSL "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x60A0586666DE0BA4B481628ACC59E6B43FA6E3CA" | sudo gpg --dearmor -o /etc/apt/keyrings/redislabs-redis.gpg
3-4. 鍵の内容を検証
取得した鍵が正しいか確認します。
gpg --no-default-keyring --keyring /etc/apt/keyrings/ondrej-php.gpg --list-keys
gpg --no-default-keyring --keyring /etc/apt/keyrings/redislabs-redis.gpg --list-keys
出力例(ondrej/php):
pub rsa1024 2009-01-26 [SC]
14AA40EC0831756756D7F66C4F4EA0AAE5267A6C
uid [ unknown] Launchpad PPA for Ondřej Surý
出力例(redislabs/redis):
pub rsa4096 2020-08-25 [SC]
60A0586666DE0BA4B481628ACC59E6B43FA6E3CA
uid [ unknown] Launchpad PPA for Redis Labs
3-5. sources.list を修正
ondrej/php:
sudo tee /etc/apt/sources.list.d/ppa_ondrej_php_jammy.list <<'EOF'
deb [signed-by=/etc/apt/keyrings/ondrej-php.gpg] https://ppa.launchpadcontent.net/ondrej/php/ubuntu jammy main
EOF
redislabs/redis:
sudo tee /etc/apt/sources.list.d/ppa_redislabs_redis_jammy.list <<'EOF'
deb [signed-by=/etc/apt/keyrings/redislabs-redis.gpg] https://ppa.launchpadcontent.net/redislabs/redis/ubuntu jammy main
EOF
3-6. 旧 trusted.gpg から鍵を削除
sudo apt-key del E5267A6C
sudo apt-key del 3FA6E3CA
3-7. 動作確認
sudo apt update
4. 結果
| 項目 | 状態 |
|---|---|
legacy trusted.gpg keyring 警告 |
✅ 解消 |
| 404 Not Found エラー | ✅ 発生なし |
| ondrej/php の keyrings 移行 | ✅ 完了 |
| redislabs/redis の keyrings 移行 | ✅ 完了 |
5. まとめ
-
apt-keyは非推奨であり、/etc/apt/keyrings/+signed-by=方式への移行が推奨されています - 移行手順は「鍵取得 → sources.list 修正 → 旧鍵削除」の流れで行います
- 鍵取得後は
gpg --list-keysでフィンガープリントを必ず検証しましょう
ファイル名のパターンやフィンガープリントはPPAごとに異なるため、ご自身の環境に合わせて適宜読み替えてください。