G-gen の武井です。Kubernetes(kubectl)がインストールされた環境で apt-get update
(パッケージ更新情報取得コマンド)を実行したところ no longer has a Release file
というエラーが発生しました。当記事で事象の原因と対策を説明します。
事象
状況
以下の環境で apt-get update
コマンドを実行したところエラーが発生しました。GKE クラスタを管理するため kubectl
がインストールされています。
# 環境情報 $ cat /etc/os-release PRETTY_NAME="Debian GNU/Linux 11 (bullseye)" NAME="Debian GNU/Linux" VERSION_ID="11" VERSION="11 (bullseye)" VERSION_CODENAME=bullseye ID=debian HOME_URL="https://www.debian.org/" SUPPORT_URL="https://www.debian.org/support" BUG_REPORT_URL="https://bugs.debian.org/" $ which kubectl /usr/bin/kubectl
エラーの詳細
エラーメッセージは E: The repository 'https://apt.kubernetes.io kubernetes-xenial Release' no longer has a Release file.
でした。
出力の詳細は以下のとおりです。
# 実施内容 $ sudo apt-get update Hit:2 https://download.docker.com/linux/debian bullseye InRelease Hit:3 https://deb.debian.org/debian bullseye InRelease Hit:4 https://deb.debian.org/debian bullseye-updates InRelease Hit:5 https://deb.debian.org/debian-security bullseye-security InRelease Hit:6 https://deb.debian.org/debian bullseye-backports InRelease Hit:1 https://packages.microsoft.com/repos/code stable InRelease Hit:8 https://packages.cloud.google.com/apt cloud-sdk InRelease Ign:7 https://packages.cloud.google.com/apt kubernetes-xenial InRelease Ign:9 https://storage.googleapis.com/cros-packages/123 bullseye InRelease Err:10 https://packages.cloud.google.com/apt kubernetes-xenial Release 404 Not Found [IP: 142.250.206.238 443] Hit:11 https://storage.googleapis.com/cros-packages/123 bullseye Release Reading package lists... Done E: The repository 'https://apt.kubernetes.io kubernetes-xenial Release' no longer has a Release file. N: Updating from such a repository can't be done securely, and is therefore disabled by default. N: See apt-secure(8) manpage for repository creation and user configuration details
原因
推察
エラーメッセージには apt.kubernetes.io
リポジトリが存在しないと記されていることから、apt-get update
コマンド実行時にリポジトリに接続できなかったことが原因だと推察できます。
調査結果
エラーメッセージに記載のリンク (https://apt.kubernetes.io) を確認したところ、apt.kubernetes.io
および yum.kubernetes.io
(legacy package repositories) が 2024年3月4日
に削除され、新たに pkgs.k8s.io
に置き換わったとの記載がありました。
4th March 2024:
The legacy package repositories have been removed. It's not possible to install Kubernetes packages from the legacy package repositories any longer
対処方法
以下のドキュメントにあるとおり、/etc/apt/sources.list.d/kubernetes.list
に記載のあるリポジトリを pkgs.k8s.io
に変更することで解消します。
- 参考:How to migrate to the Kubernetes community-owned repositories?
- 参考:What are significant differences between the Google-hosted and Kubernetes package repositories?
# 変更前 $ cat /etc/apt/sources.list.d/kubernetes.list deb https://apt.kubernetes.io/ kubernetes-xenial main
# 変更後 $ cat /etc/apt/sources.list.d/kubernetes.list deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.28/deb/ /
# 再実行 $ sudo apt-get update Hit:1 https://deb.debian.org/debian bullseye InRelease Get:3 https://deb.debian.org/debian bullseye-updates InRelease [44.1 kB] Get:4 https://download.docker.com/linux/debian bullseye InRelease [43.3 kB] Get:5 https://deb.debian.org/debian-security bullseye-security InRelease [48.4 kB] Get:6 https://deb.debian.org/debian bullseye-backports InRelease [49.0 kB] Get:2 https://packages.microsoft.com/repos/code stable InRelease [3,590 B] Ign:8 https://storage.googleapis.com/cros-packages/123 bullseye InRelease Get:7 https://prod-cdn.packages.k8s.io/repositories/isv:/kubernetes:/core:/stable:/v1.28/deb InRelease [1,189 B] Hit:9 https://packages.cloud.google.com/apt cloud-sdk InRelease Hit:10 https://storage.googleapis.com/cros-packages/123 bullseye Release Get:11 https://packages.microsoft.com/repos/code stable/main arm64 Packages [17.5 kB] Get:12 https://packages.microsoft.com/repos/code stable/main amd64 Packages [16.8 kB] Get:13 https://packages.microsoft.com/repos/code stable/main armhf Packages [17.4 kB] Get:14 https://prod-cdn.packages.k8s.io/repositories/isv:/kubernetes:/core:/stable:/v1.28/deb Packages [13.9 kB] Fetched 255 kB in 1s (259 kB/s) Reading package lists... Done
最後に
kubernetes をはじめ、apt のリポジトリは以下のファイルで管理されています。
今回のようにリポジトリに起因するエラーが発生した場合、まずはファイルに記載のリポジトリに接続できること、リポジトリが存在することをご確認ください。
# /etc/apt/sources.list ファイル $ cat /etc/apt/sources.list # Generated by distrobuilder deb https://deb.debian.org/debian bullseye main deb https://deb.debian.org/debian bullseye-updates main deb https://deb.debian.org/debian-security/ bullseye-security main
# /etc/apt/sources.list.d ディレクトリ配下のファイルの例 $ pwd /etc/apt/sources.list.d $ ls -l total 20 -rw-r--r-- 1 root root 125 Apr 17 15:57 cros.list -rw-r--r-- 1 root root 131 Dec 15 17:30 docker.list -rw-r--r-- 1 root root 106 Oct 13 2023 google-cloud-sdk.list -rw-r--r-- 1 root root 108 May 7 19:50 kubernetes.list -rw-r--r-- 1 root root 203 Dec 13 18:37 vscode.list
武井 祐介 (記事一覧)
2022年4月にジョイン。クラウドソリューション部所属。G-gen唯一の山梨県在住エンジニア
Google Cloud Partner Top Engineer 2024 に選出。IaC や CI/CD 周りのサービスやプロダクトが興味分野です。
趣味はロードバイク、ロードレースやサッカー観戦です。
Follow @ggenyutakei