sudo apt update で Fish のリポジトリキーが不正と表示される件について

前置き

MainsailOS をインストールしている Raspberry Pi で sudo apt update を実行したら The following signatures were invalid: EXPKEYSIG 2CE2AC08D880C8E4 shells:fish OBS Project <shells:fish@build.opensuse.org> と表示されるようになりました。

 1> sudo apt update
 2Get:1 https://pkgs.tailscale.com/stable/raspbian buster InRelease
 3Hit:2 http://archive.raspberrypi.org/debian buster InRelease
 4Get:3 http://raspbian.raspberrypi.org/raspbian buster InRelease [15.0 kB]
 5Hit:4 http://download.opensuse.org/repositories/shells:/fish/Debian_10  InRelease
 6Hit:5 https://deb.nodesource.com/node_16.x buster InRelease
 7Err:4 http://download.opensuse.org/repositories/shells:/fish/Debian_10  InRelease
 8  The following signatures were invalid: EXPKEYSIG 2CE2AC08D880C8E4 shells:fish OBS Project <shells:fish@build.opensuse.org>
 9Get:6 http://raspbian.raspberrypi.org/raspbian buster/main armhf Packages [13.0 MB]
100% [6 Packages 6,114 kB/13.0 MB 47%]                                                                 40.1 kB/s 2min 51sdebug1: client_input_channel_req: channel 0 rtype keepalive@openssh.com reply 1
110% [6 Packages 12.9 MB/13.0 MB 99%]                                                                        28.5 kB/s 3sdebug1: client_input_channel_req: channel 0 rtype keepalive@openssh.com reply 1
12Fetched 13.0 MB in 6min 19s (34.4 kB/s)
13Reading package lists... Done
14Building dependency tree
15Reading state information... Done
163 packages can be upgraded. Run 'apt list --upgradable' to see them.
17W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: http://download.opensuse.org/repositories/shells:/fish/Debian_10  InRelease: The following signatures were invalid: EXPKEYSIG 2CE2AC08D880C8E4 shells:fish OBS Project <shells:fish@build.opensuse.org>
18W: Failed to fetch http://download.opensuse.org/repositories/shells:/fish/Debian_10/InRelease  The following signatures were invalid: EXPKEYSIG 2CE2AC08D880C8E4 shells:fish OBS Project <shells:fish@build.opensuse.org>
19W: Some index files failed to download. They have been ignored, or old ones used instead.

これではアップデートに支障が生じるので解決策を探したところ、公式の Github の Issues で解決策が見つかりましたので、参考のためにシェアします。

解決策の概要

簡単にまとめると次のとおりです。

  1. 期限切れになった既存のリポジトリキーを削除
  2. 新しいキーを登録
  3. sudo apt update を実行

具体的な手順

既存のリポジトリキーの確認

既存のリポジトリキーは、次のコマンドで確認できます。一番下の /etc/apt/trusted.gpg.d/shells_fish.gpg が期限切れ(expired)になったキーです。

 1> sudo apt-key list
 2/etc/apt/trusted.gpg
 3--------------------
 4pub   rsa2048 2012-04-01 [SC]
 5      A0DA 38D0 D76E 8B5D 6388  7281 9165 938D 90FD DD2E
 6uid           [ unknown] Mike Thompson (Raspberry Pi Debian armhf ARMv6+VFP) <mpthompson@gmail.com>
 7sub   rsa2048 2012-04-01 [E]
 8
 9pub   rsa2048 2012-06-17 [SC]
10      CF8A 1AF5 02A2 AA2D 763B  AE7E 82B1 2992 7FA3 303E
11uid           [ unknown] Raspberry Pi Archive Signing Key
12sub   rsa2048 2012-06-17 [E]
13
14pub   rsa4096 2020-02-25 [SC]
15      2596 A99E AAB3 3821 893C  0A79 458C A832 957F 5868
16uid           [ unknown] Tailscale Inc. (Package repository signing key) <info@tailscale.com>
17sub   rsa4096 2020-02-25 [E]
18
19/etc/apt/trusted.gpg.d/shells_fish.gpg
20--------------------------------------
21pub   rsa2048 2013-10-08 [SC] [expired: 2022-04-12]
22      24A6 3B31 CAB4 1B33 EC48  801E 2CE2 AC08 D880 C8E4
23uid           [ expired] shells:fish OBS Project <shells:fish@build.opensuse.org>

期限切れになったリポジトリキーの削除

期限切れになったリポジトリキーは、次のコマンドで削除できます。

1> sudo apt-key del 2CE2AC08D880C8E4
2OK

削除後のリポジトリキーのリストを確認すると、 /etc/apt/trusted.gpg.d/shells_fish.gpg が削除されていることが確認できます。

 1> sudo apt-key list
 2/etc/apt/trusted.gpg
 3--------------------
 4pub   rsa2048 2012-04-01 [SC]
 5      A0DA 38D0 D76E 8B5D 6388  7281 9165 938D 90FD DD2E
 6uid           [ unknown] Mike Thompson (Raspberry Pi Debian armhf ARMv6+VFP) <mpthompson@gmail.com>
 7sub   rsa2048 2012-04-01 [E]
 8
 9pub   rsa2048 2012-06-17 [SC]
10      CF8A 1AF5 02A2 AA2D 763B  AE7E 82B1 2992 7FA3 303E
11uid           [ unknown] Raspberry Pi Archive Signing Key
12sub   rsa2048 2012-06-17 [E]
13
14pub   rsa4096 2020-02-25 [SC]
15      2596 A99E AAB3 3821 893C  0A79 458C A832 957F 5868
16uid           [ unknown] Tailscale Inc. (Package repository signing key) <info@tailscale.com>
17sub   rsa4096 2020-02-25 [E]

新しいリポジトリキーの登録

新しいリポジトリキーは、次のコマンドで登録できます。このコマンドは、最初に触れた Github の Issues で提案されたコマンドを Debian10 向けに修正したものです。

1curl -fsSL https://download.opensuse.org/repositories/shells:fish:release:3/Debian_10/Release.key |gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/shells_fish_release_3.gpg > /dev/null

新しいリポジトリキーを登録した後のキーリストは次のとおりです。 /etc/apt/trusted.gpg.d/shells_fish_release_3.gpg が登録されていることが確認できます。

 1> sudo apt-key list
 2/etc/apt/trusted.gpg
 3--------------------
 4pub   rsa2048 2012-04-01 [SC]
 5      A0DA 38D0 D76E 8B5D 6388  7281 9165 938D 90FD DD2E
 6uid           [ unknown] Mike Thompson (Raspberry Pi Debian armhf ARMv6+VFP) <mpthompson@gmail.com>
 7sub   rsa2048 2012-04-01 [E]
 8
 9pub   rsa2048 2012-06-17 [SC]
10      CF8A 1AF5 02A2 AA2D 763B  AE7E 82B1 2992 7FA3 303E
11uid           [ unknown] Raspberry Pi Archive Signing Key
12sub   rsa2048 2012-06-17 [E]
13
14pub   rsa4096 2020-02-25 [SC]
15      2596 A99E AAB3 3821 893C  0A79 458C A832 957F 5868
16uid           [ unknown] Tailscale Inc. (Package repository signing key) <info@tailscale.com>
17sub   rsa4096 2020-02-25 [E]
18
19/etc/apt/trusted.gpg.d/shells_fish_release_3.gpg
20------------------------------------------------
21pub   rsa2048 2013-10-08 [SC] [expires: 2024-06-07]
22      24A6 3B31 CAB4 1B33 EC48  801E 2CE2 AC08 D880 C8E4
23uid           [ unknown] shells:fish OBS Project <shells:fish@build.opensuse.org>

sudo apt update の実行

新しいリポジトリキーを登録しましたので、 sudo apt update を実行して問題がないか確認します。 できます。このコマンドは、最初に触れた Github の Issues で提案されたコマンドを Debian10 向けに修正したものです。

 1> sudo apt update
 2Hit:1 http://download.opensuse.org/repositories/shells:/fish/Debian_10  InRelease
 3Hit:2 https://deb.nodesource.com/node_16.x buster InRelease
 4Hit:3 http://archive.raspberrypi.org/debian buster InRelease
 5Hit:4 http://raspbian.raspberrypi.org/raspbian buster InRelease
 6Get:5 https://pkgs.tailscale.com/stable/raspbian buster InRelease
 7Fetched 5,543 B in 2s (2,367 B/s)
 8Reading package lists... Done
 9Building dependency tree
10Reading state information... Done
113 packages can be upgraded. Run 'apt list --upgradable' to see them.

無事に問題が発生することなくアップデートできていることが確認できました。


参考にしたサイト

https://github.com/fish-shell/fish-shell/issues/8869