毎度、ググっても出てこない小ネタを取り扱っております。
本記事は個人的な見解であり、筆者の所属するいかなる団体にも関係ございません。
0. はじめに
以下の記事を書いたのですが、GitLab Runnerは以下の方法では更新できなかったので、Fix方法を書いておきます。
GitLabとRunnerが署名の鍵の期限切れでアップデートできなかったのを解消した話 #GitLab - Qiita
https://qiita.com/ynott/items/930558bdb5456746f40c
1. Runnerの署名エラー
GitLab Runnerで apt update
すると以下のようなエラーが出ます。
$ sudo apt update
[sudo] password for user:
取得:2 http://security.ubuntu.com/ubuntu jammy-security InRelease [110 kB]
ヒット:3 http://jp.archive.ubuntu.com/ubuntu jammy InRelease
取得:4 http://jp.archive.ubuntu.com/ubuntu jammy-updates InRelease [119 kB]
ヒット:1 https://packages.gitlab.com/runner/gitlab-runner/ubuntu jammy InRelease
エラー:1 https://packages.gitlab.com/runner/gitlab-runner/ubuntu jammy InRelease
以下の署名が無効です: EXPKEYSIG 3F01618A51312F3F GitLab B.V. (package repository signing key) <packages@gitlab.com>
取得:5 http://jp.archive.ubuntu.com/ubuntu jammy-backports InRelease [109 kB]
取得:6 http://jp.archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages [1,462 kB]
取得:7 http://jp.archive.ubuntu.com/ubuntu jammy-updates/main i386 Packages [587 kB]
取得:8 http://jp.archive.ubuntu.com/ubuntu jammy-updates/restricted amd64 Packages [1,559 kB]
取得:9 http://jp.archive.ubuntu.com/ubuntu jammy-updates/restricted Translation-en [259 kB]
取得:10 http://jp.archive.ubuntu.com/ubuntu jammy-updates/universe amd64 Packages [1,057 kB]
取得:11 http://jp.archive.ubuntu.com/ubuntu jammy-updates/universe i386 Packages [696 kB]
取得:12 http://jp.archive.ubuntu.com/ubuntu jammy-updates/universe Translation-en [239 kB]
6,196 kB を 5秒 で取得しました (1,305 kB/s)
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
状態情報を読み取っています... 完了
アップグレードできるパッケージが 8 個あります。表示するには 'apt list --upgradable' を実行してください。
W: 署名照合中にエラーが発生しました。リポジトリは更新されず、過去のインデックスファイルが使われます。GPG エラー: https://packages.gitlab.com/runner/gitlab-runner/ubuntu jammy InRelease: 以下の署名が無効です: EXPKEYSIG 3F01618A51312F3F GitLab B.V. (package repository signing key) <packages@gitlab.com>
W: https://packages.gitlab.com/runner/gitlab-runner/ubuntu/dists/jammy/InRelease の取得に失敗しました 以下の署名が無効です: EXPKEYSIG 3F01618A51312F3F GitLab B.V. (package repository signing key) <packages@gitlab.com>
W: いくつかのインデックスファイルのダウンロードに失敗しました。これらは無視されるか、古いものが代わりに使われます。
2. 対応方法
以下のように対応します。
2-1. apt-key または signed-by のどちらを使用しているかどうかを確認
Ubuntuのパッケージ認証方式は、apt-keyとsigned-byの2つの方式があります。
apt-keyが古い方式でsigned-byが新しい方式です。徐々にsigned-byに切り替わっている途中かと思います。
まず、どちらを使っているか以下のコマンドで確認します。
grep 'deb \[signed-by=' /etc/apt/sources.list.d/runner_gitlab-runner.list
2-2. signed-by形式の鍵を更新する
ルート権限で以下のコマンドを実行してください。
awk '/deb \[signed-by=/{
pubkey = $2;
sub(/\[signed-by=/, "", pubkey);
sub(/\]$/, "", pubkey);
print pubkey
}' /etc/apt/sources.list.d/runner_gitlab-runner.list | \
while read line; do
curl -s "https://packages.gitlab.com/gpg.key" | gpg --dearmor > $line
done
OKとかメッセージは出ませんが、以下のコマンドでファイルの更新日が新しくなっていたらOKです。
ls -la /usr/share/keyrings/runner_gitlab-runner-archive-keyring.gpg
3. 更新できたか確認
2-2.で何も返ってきていませんでしたが、更新できていればapt updateが成功するはずです。
実行してみます。
4. なぜ?GitLabの署名の鍵の更新方法でGitLab Runnerでは更新できなかったか。
- aptの
/etc/apt/sources.list.d/
のファイル名が違う
GitLabのsources.list.d
のファイルは以下ですが、
/etc/apt/sources.list.d/gitlab_gitlab-?e.list
GitLab Runnerのファイルは、以下です。
/etc/apt/sources.list.d/runner_gitlab-runner.list
ファイル名が違うので、2-2.で実行する時のコマンドが実行できていませんでした。
4. まとめ
特になし