はじめに (対象読者・この記事でわかること)

この記事は、Debian 10(Buster)をサーバーや開発環境で利用しているシステム管理者・エンジニア、または自宅のVPS等でbashシェルを使っている方を対象としています。
特に「sudo apt update」実行時に「E: リポジトリ情報の取得に失敗しました」や「Failed to fetch」系のエラーが出てしまい、アップデートが進まないという経験をしたことがある人に最適です。

この記事を読むことで以下のことができるようになります。

  • エラーの根本原因(リポジトリ設定のミス、証明書の期限切れ、ネットワーク障害など)を特定する手順。
  • sources.list の正しい記述例と、不要なエントリの削除方法。
  • 失効した GPG 鍵や SSL 証明書の更新手順、プロキシや DNS 設定の見直し方。
  • 実際に手を動かしてエラーを解消し、再度 sudo apt update が正常に完了する状態に戻す方法。

本記事の背景は、Debian 10 は 2022 年に LTS サポートが終了したことに伴い、パッケージサーバー側で TLS 証明書やミラーのリプレースが進んでいる点です。その影響で古い環境での apt 更新が頻繁に失敗するケースが増えてきました。

前提知識

この記事を読み進める上で、以下の知識があるとスムーズです。

  • 基本的な Linux コマンド操作(cat, nano, systemctl など)。
  • Debian 系ディストリビューションにおけるパッケージ管理(apt, dpkg)の概念。
  • bash シェルでの権限昇格(sudo)や環境変数の扱い。

エラーの概要と原因分析(背景)

Debian 10 のリリース当初は、公式ミラーサーバーが HTTP または古い TLS バージョンで提供されていましたが、2022 年以降はセキュリティ向上のために TLS 1.2 以上への強制や、ミラーのリダイレクトが増加しました。その結果、古い sources.list に記載されているミラー URL が利用できなくなるケースが散見されます。

典型的なエラーメッセージは以下のような形です。

Err:1 http://deb.debian.org/debian buster InRelease
  Could not connect to deb.debian.org:80 (111: Connection refused)
E: The repository 'http://deb.debian.org/debian buster InRelease' is no longer signed.

また、GPG 鍵が期限切れになっていると次のような警告が出ます。

W: GPG error: http://deb.debian.org/debian buster InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 8B48AD6246925553

さらに、企業内部ネットワークでプロキシを経由している場合、apt がプロキシ設定を認識できずにタイムアウトすることもあります。

具体的な対処手順

以下では、上記エラーを段階的に解消するための手順を示します。各ステップは実環境に合わせて適宜スキップ可能です。

ステップ1 sources.list の見直しとミラー変更

  1. 現在のリストをバックアップします。
    bash sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
  2. nano などのエディタでファイルを開き、古い HTTP URL を HTTPS に置き換えます。
    bash sudo nano /etc/apt/sources.list 例(変更前)
    deb http://deb.debian.org/debian buster main deb-src http://deb.debian.org/debian buster main 例(変更後)
    deb https://deb.debian.org/debian buster main deb-src https://deb.debian.org/debian buster main
  3. ミラーが利用できない場合は、代替ミラー(例: https://ftp.jp.debian.org/debian)に書き換えます。
  4. ファイル保存後、sudo apt update を再実行し、エラーメッセージが改善したか確認します。

ステップ2 GPG 鍵の更新

  1. 欠損している鍵 ID を確認します(エラーメッセージの NO_PUBKEY 部分)。
  2. 鍵を取得し、apt の信頼ストアに追加します。
    bash sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys <KEY_ID> 例:
    bash sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 8B48AD6246925553
  3. 2022 年以降は apt-key が非推奨になるため、代替として /etc/apt/trusted.gpg.d/ に鍵ファイルを配置することも推奨されます。
    bash curl -fsSL https://ftp-master.debian.org/keys/archive-key-10.asc | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/debian-10-archive.gpg
  4. 再度 sudo apt update を実行し、鍵エラーが解消されたか確認します。

ステップ3 TLS/SSL 証明書の更新

古い ca-certificates パッケージが原因で SSL ハンドシェイクに失敗することがあります。

  1. まず、ローカルの証明書ストアを最新にします(ネットワークが通る環境が必要)。
    bash sudo apt-get install --reinstall ca-certificates
  2. それでもエラーが続く場合は、手動で証明書を取得し、/usr/local/share/ca-certificates/ 配下に配置して更新します。
    bash sudo cp your-company-proxy-ca.crt /usr/local/share/ca-certificates/ sudo update-ca-certificates
  3. 再度 sudo apt update を試み、TLS 接続エラーが無くなったか確認します。

ステップ4 プロキシ設定の確認

社内ネットワークで HTTP/HTTPS プロキシを使用している場合、環境変数 http_proxyhttps_proxy が正しく設定されているか確認します。

  1. 現在の設定を確認。
    bash echo $http_proxy $https_proxy
  2. 必要に応じて /etc/apt/apt.conf.d/01proxy を作成し、プロキシ情報を書き込みます。
    bash echo 'Acquire::http::Proxy "http://proxy.example.com:8080/";' | sudo tee /etc/apt/apt.conf.d/01proxy echo 'Acquire::https::Proxy "https://proxy.example.com:8080/";' | sudo tee -a /etc/apt/apt.conf.d/01proxy
  3. 再度 sudo apt update で接続が成功するかテストします。

ハマった点やエラー解決

  • 「Could not resolve 'deb.debian.org'」
    DNS が正しく設定されていないケース。/etc/resolv.conf に有効な DNS サーバ(例: 8.8.8.8)を追加し、systemd-resolved を再起動すると解決。

  • 「Hash Sum mismatch」
    ミラー側のキャッシュが破損している場合。sudo apt clean でローカルキャッシュを削除し、再度 apt update を実行。

  • 「Failed to fetch ... 404 Not Found」
    buster のリポジトリは LTS が終了したため、一部ミラーでパッケージが削除されている。buster-updates から buster-backports へ切り替えるか、stable(現在は bullseye)へアップグレードすることを検討。

解決策まとめ

  1. sources.list の URL を HTTPS に統一し、ミラーが利用可能か確認。
  2. 欠損鍵は apt-key または gpg --dearmor で追加し、trusted.gpg.d に配置。
  3. ca-certificates を再インストール、必要なら手動で CA を追加。
  4. プロキシ環境では apt.conf.d に正しい設定を書き込み、環境変数も併せて設定。
  5. DNS・キャッシュ・ミラーの状態を逐次確認し、問題が残れば公式ドキュメントやフォーラムで最新情報を取得。

まとめ

本記事では、Debian 10 の sudo apt update が失敗する主な原因と、その対処法を体系的に解説しました。

  • 原因:古いミラー URL、期限切れ GPG 鍵、SSL 証明書の老朽化、プロキシ・DNS 設定ミス
  • 対処sources.list の HTTPS への置換、鍵の再取得、証明書パッケージ再インストール、プロキシ設定ファイルの作成、DNS とキャッシュのクリア
  • 結果apt update が正常に完了し、パッケージの取得・インストールが再び可能になる

これらの手順を踏むことで、システムの更新作業が滞ることなく継続でき、セキュリティパッチや機能追加を速やかに適用できます。次回は、Debian 10 から Debian 11(Bullseye)への安全なディストリビューションアップグレード手順について解説する予定です。

参考資料