「apt-get update」で404 Not Foundになる原因と解決方法|Ubuntu/Debian完全解説

  • 作成日 2026.06.29
  • linux
「apt-get update」で404 Not Foundになる原因と解決方法|Ubuntu/Debian完全解説

Err:1 http://archive.ubuntu.com/ubuntu focal/main amd64 Packages
  404  Not Found [IP: 91.189.91.81 80]

apt-get updateapt update を実行したときに 404 Not Found が出てパッケージが更新できない——Dockerコンテナや古いサーバーでよく遭遇するエラーです。

原因のほとんどはリポジトリのURLが古くなっているか、Ubuntuのサポートが終了(EOL)していることです。本記事ではパターン別に原因と解決方法を解説します。


目次

結論:先に答えを出す

# ① Ubuntu のバージョンとサポート状況を確認
lsb_release -a
ubuntu-support-status 2>/dev/null || true

# ② EOL の Ubuntu は old-releases に切り替える
sudo sed -i 's|archive.ubuntu.com|old-releases.ubuntu.com|g' /etc/apt/sources.list
sudo sed -i 's|security.ubuntu.com|old-releases.ubuntu.com|g' /etc/apt/sources.list
sudo apt-get update

# ③ 特定の PPA が原因の場合は削除
sudo add-apt-repository --remove ppa:問題のPPA名
sudo apt-get update

# ④ sources.list をデフォルトに戻す(最終手段)
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo apt-get update 2>&1 | grep "^Err" # どのリポジトリが失敗しているか確認

原因パターン一覧

パターン1:Ubuntu がEOL(サポート終了)でリポジトリが移動している
パターン2:追加した PPA が削除・移動されている
パターン3:sources.list のURLが古い・間違っている
パターン4:サードパーティのリポジトリが移動・廃止された
パターン5:ネットワーク・プロキシの問題

まず:どのリポジトリが 404 になっているか確認する

# エラーが出ているリポジトリを確認
sudo apt-get update 2>&1 | grep "^Err\|^404\|Not Found"

# 出力例
Err:1 http://archive.ubuntu.com/ubuntu focal/main amd64 Packages
  404  Not Found
Err:2 http://ppa.launchpad.net/some-user/some-ppa/ubuntu focal/main amd64 Packages
  404  Not Found

# 現在の sources.list を確認
cat /etc/apt/sources.list
cat /etc/apt/sources.list.d/*.list 2>/dev/null

# Ubuntu のバージョンを確認
lsb_release -a
cat /etc/os-release

パターン1:Ubuntu が EOL(サポート終了)

最もよくある原因です。Ubuntuのサポートが終了すると archive.ubuntu.com からパッケージが削除され、old-releases.ubuntu.com に移動します。

Ubuntu のサポート期限一覧

バージョンコード名標準サポート終了LTS延長(ESM)
16.04Xenial2021年4月2026年4月
18.04Bionic2023年5月2028年4月
20.04Focal2025年5月2030年4月
22.04Jammy2027年6月2032年4月
24.04Noble2029年6月2034年4月

確認方法

# バージョンを確認
lsb_release -a
# Codename: focal  ← 20.04 の場合

# サポート状況を確認
ubuntu-support-status

# または手動で確認(archive.ubuntu.com にアクセスできるか)
curl -Is http://archive.ubuntu.com/ubuntu/dists/focal/Release | head -3
# HTTP/1.1 200 OK  → アクセス可能
# または
# HTTP/1.1 404 Not Found  → EOL で移動済み

解決方法:old-releases.ubuntu.com に切り替える

# archive.ubuntu.com と security.ubuntu.com を old-releases に変更
sudo sed -i \
  -e 's|http://archive.ubuntu.com|http://old-releases.ubuntu.com|g' \
  -e 's|http://security.ubuntu.com|http://old-releases.ubuntu.com|g' \
  /etc/apt/sources.list

# 変更を確認
cat /etc/apt/sources.list

# アップデートを実行
sudo apt-get update

Dockerfile での対処

Dockerコンテナで古いUbuntuイメージを使っている場合によく発生します。

# ❌ EOL の Ubuntu ではエラーになる
FROM ubuntu:20.04
RUN apt-get update && apt-get install -y curl

# ✅ 方法1:EOL 版は old-releases に切り替える
FROM ubuntu:20.04
RUN sed -i \
  -e 's|http://archive.ubuntu.com|http://old-releases.ubuntu.com|g' \
  -e 's|http://security.ubuntu.com|http://old-releases.ubuntu.com|g' \
  /etc/apt/sources.list && \
  apt-get update && \
  apt-get install -y curl

# ✅ 方法2:サポート中のバージョンに上げる(推奨)
FROM ubuntu:24.04
RUN apt-get update && apt-get install -y curl

sources.list を手動で書き換える場合

# バックアップを取ってから編集
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo vi /etc/apt/sources.list
# Ubuntu 20.04 (Focal) EOL 後の正しい sources.list
deb http://old-releases.ubuntu.com/ubuntu/ focal main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu/ focal-security main restricted universe multiverse

パターン2:PPA が削除・移動されている

Ubuntu に追加した PPA(Personal Package Archive)が削除や移動されると 404 になります。

確認方法

# 追加されている PPA の一覧を確認
ls /etc/apt/sources.list.d/
cat /etc/apt/sources.list.d/*.list 2>/dev/null

# エラーが出ている PPA を特定
sudo apt-get update 2>&1 | grep "ppa.launchpad.net"
# Err:3 http://ppa.launchpad.net/deadsnakes/ppa/ubuntu focal/main ...
#   404  Not Found

解決方法:問題の PPA を削除する

# add-apt-repository で削除(推奨)
sudo add-apt-repository --remove ppa:ユーザー名/ppa名

# 例:deadsnakes PPA を削除
sudo add-apt-repository --remove ppa:deadsnakes/ppa

# 直接ファイルを削除
sudo rm /etc/apt/sources.list.d/deadsnakes-ubuntu-ppa-focal.list

# 削除後にアップデート
sudo apt-get update

解決方法:Ubuntu バージョンに対応した PPA に更新する

PPA が新しい Ubuntu バージョンに対応していない場合は、PPA の URL を変更するか代替手段を使います。

# PPA のファイルを確認・編集
cat /etc/apt/sources.list.d/someppa.list
# deb http://ppa.launchpad.net/.../ubuntu focal main
#                                         ^^^^^
#                                         古いコード名

# 新しいコード名に変更(対応している場合)
sudo sed -i 's/focal/jammy/g' /etc/apt/sources.list.d/someppa.list
sudo apt-get update

パターン3:sources.list の URL が古い・間違っている

よくある問題

# サポートが終了した URL
deb http://extras.ubuntu.com/ubuntu focal main  # extras は廃止済み

# 地域ミラーが変更・廃止された
deb http://jp.archive.ubuntu.com/ubuntu ...  # 一部のミラーは廃止

# http と https の混在
deb https://archive.ubuntu.com/ubuntu ...  # https は非対応
deb http://archive.ubuntu.com/ubuntu ...   # http が正しい

解決方法:sources.list をデフォルトに戻す

# バックアップを作成
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

# Ubuntu 22.04 (Jammy) のデフォルト sources.list を作成
sudo tee /etc/apt/sources.list << 'EOF'
deb http://archive.ubuntu.com/ubuntu/ jammy main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ jammy-updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ jammy-backports main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu jammy-security main restricted universe multiverse
EOF

sudo apt-get update

Ubuntu バージョン別のデフォルト sources.list

# コード名を変数に入れて使いまわせる形で記述
CODENAME=$(lsb_release -cs)

sudo tee /etc/apt/sources.list << EOF
deb http://archive.ubuntu.com/ubuntu/ ${CODENAME} main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ ${CODENAME}-updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ ${CODENAME}-backports main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu ${CODENAME}-security main restricted universe multiverse
EOF

sudo apt-get update

パターン4:サードパーティリポジトリが移動・廃止された

Docker・Node.js・MySQL などのサードパーティリポジトリが URL 変更や廃止になった場合です。

確認方法

# サードパーティのリポジトリ一覧を確認
ls /etc/apt/sources.list.d/
grep -r "^deb" /etc/apt/sources.list.d/

# 問題のあるリポジトリを確認
sudo apt-get update 2>&1 | grep "^Err"

よくあるサードパーティリポジトリの修正

Docker:

# 古い Docker リポジトリを削除
sudo rm /etc/apt/sources.list.d/docker.list

# 正しい方法で再登録
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
  | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

echo "deb [arch=$(dpkg --print-architecture) \
  signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] \
  https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" \
  | sudo tee /etc/apt/sources.list.d/docker.list

sudo apt-get update

Node.js(NodeSource):

# 古いリポジトリを削除
sudo rm /etc/apt/sources.list.d/nodesource.list

# 最新の NodeSource スクリプトで再登録
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install -y nodejs

MySQL:

# 古い MySQL リポジトリを削除
sudo rm /etc/apt/sources.list.d/mysql.list

# MySQL APT リポジトリを再登録
wget https://dev.mysql.com/get/mysql-apt-config_0.8.29-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.29-1_all.deb
sudo apt-get update

パターン5:ネットワーク・プロキシの問題

確認方法

# リポジトリに直接アクセスできるか確認
curl -I http://archive.ubuntu.com/ubuntu/
# HTTP/1.1 200 OK  → アクセス可能
# curl: (6) Could not resolve host  → DNS問題
# curl: (7) Failed to connect  → ネットワーク問題

# DNS を確認
nslookup archive.ubuntu.com
dig archive.ubuntu.com

# プロキシ設定を確認
echo $http_proxy
echo $https_proxy
cat /etc/apt/apt.conf.d/*proxy* 2>/dev/null

解決方法

# DNS を一時的に変更して試す
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf

# プロキシを設定する
sudo tee /etc/apt/apt.conf.d/proxy.conf << 'EOF'
Acquire::http::Proxy "http://proxy.example.com:8080";
Acquire::https::Proxy "http://proxy.example.com:8080";
EOF

# または環境変数で設定
export http_proxy=http://proxy.example.com:8080
export https_proxy=http://proxy.example.com:8080
sudo -E apt-get update

apt-get update のエラーを無視してインストールする(緊急時)

特定のリポジトリだけ 404 になっている場合、そのリポジトリを無効化してとりあえずインストールを続けることができます。

# エラーが出ているリポジトリだけ無効化
# /etc/apt/sources.list.d/ の問題ファイルをコメントアウト
sudo sed -i 's/^deb/# deb/' /etc/apt/sources.list.d/問題のファイル.list

# または一時的に無効化
sudo mv /etc/apt/sources.list.d/問題のファイル.list \
        /etc/apt/sources.list.d/問題のファイル.list.disabled

sudo apt-get update

Debian での対処法

Debian でも同様のエラーが発生します。

# Debian のバージョンを確認
cat /etc/debian_version
lsb_release -a

# EOL の Debian リポジトリは archive.debian.org に移動
# /etc/apt/sources.list を編集
sudo sed -i \
  -e 's|deb.debian.org|archive.debian.org|g' \
  -e 's|security.debian.org|archive.debian.org/debian-security|g' \
  /etc/apt/sources.list

# stretch(Debian 9)の場合の例
sudo tee /etc/apt/sources.list << 'EOF'
deb http://archive.debian.org/debian/ stretch main contrib non-free
deb http://archive.debian.org/debian-security stretch/updates main
EOF

sudo apt-get update -o Acquire::Check-Valid-Until=false
# -o Acquire::Check-Valid-Until=false は期限切れの Release ファイルを許可する

トラブルシューティング

「Release file is not valid yet」が出る場合

# サーバーの時刻がずれている
date
sudo timedatectl set-ntp true  # NTP で自動同期
sudo ntpdate pool.ntp.org      # 手動で同期

# または Check-Valid-Until を無効化(非推奨・一時的な対処)
sudo apt-get update -o Acquire::Check-Valid-Until=false

「NO_PUBKEY」や「GPG error」が一緒に出る場合

# エラーメッセージから鍵IDを確認
sudo apt-get update 2>&1 | grep "NO_PUBKEY"
# NO_PUBKEY XXXXXXXXXXXXXXXX

# 鍵を追加
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys XXXXXXXXXXXXXXXX

# または gpg を使う(モダンな方法)
gpg --keyserver keyserver.ubuntu.com --recv-keys XXXXXXXXXXXXXXXX
gpg --export XXXXXXXXXXXXXXXX | sudo tee /usr/share/keyrings/リポジトリ名.gpg

sudo apt-get update

すべての sources.list を確認するワンライナー

# 現在有効なすべてのリポジトリを一覧表示
grep -r "^deb" /etc/apt/sources.list /etc/apt/sources.list.d/ 2>/dev/null

# 404 になっているリポジトリを特定
sudo apt-get update 2>&1 | awk '/^Err/{print $2}' | sort -u

よくある質問(FAQ)

Q1. apt-get updateapt update は同じですか?

ほぼ同じです。apt は人間向けの新しいコマンド、apt-get はスクリプト向けの安定したコマンドです。どちらで試しても同じ結果になります。

Q2. old-releases.ubuntu.com は安全ですか?

セキュリティパッチが当たらないパッケージになります。EOL の Ubuntu を使い続けること自体がセキュリティリスクです。可能な限りサポート中のバージョンにアップグレードすることを強く推奨します。

Q3. Ubuntu をアップグレードするにはどうすればいいですか?

# LTS から次の LTS へアップグレード(例:20.04 → 22.04)
sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get install update-manager-core
sudo do-release-upgrade

# または直接バージョンを指定
sudo do-release-upgrade -d  # 開発版を含む

Q4. Docker コンテナで毎回 old-releases に切り替えるのが面倒です

# Dockerfile でベースイメージを新しくするのが最善
FROM ubuntu:24.04   # 最新の LTS を使う

# どうしても古いバージョンを使う場合は ARG で切り替えを自動化
FROM ubuntu:20.04
ARG UBUNTU_CODENAME=focal
RUN if curl -fs http://archive.ubuntu.com/ubuntu/dists/${UBUNTU_CODENAME}/Release > /dev/null; then \
      echo "archive.ubuntu.com 利用可能"; \
    else \
      sed -i 's|archive.ubuntu.com|old-releases.ubuntu.com|g' /etc/apt/sources.list && \
      sed -i 's|security.ubuntu.com|old-releases.ubuntu.com|g' /etc/apt/sources.list; \
    fi && \
    apt-get update

Q5. apt-get update のエラーを無視してインストールできますか?

# --allow-unauthenticated で認証エラーを無視(非推奨)
sudo apt-get install -y --allow-unauthenticated パッケージ名

# 特定リポジトリのエラーを無視(-o オプション)
sudo apt-get update -o APT::Get::List-Cleanup=false 2>/dev/null || true
sudo apt-get install -y パッケージ名

まとめ

apt-get update で 404 Not Found が出る原因と対処をまとめます。

まず原因を確認:

sudo apt-get update 2>&1 | grep "^Err"
lsb_release -a

原因別の対処:

原因対処
Ubuntu が EOLold-releases.ubuntu.com に切り替え
PPA が削除されたadd-apt-repository --remove ppa:名前 で削除
sources.list が古いデフォルトの内容に書き直す
サードパーティが移動公式ドキュメントで最新のURLに更新
ネットワーク・DNSDNS設定・プロキシを確認

EOL Ubuntu の緊急対処(Dockerfile 等):

sed -i \
  -e 's|archive.ubuntu.com|old-releases.ubuntu.com|g' \
  -e 's|security.ubuntu.com|old-releases.ubuntu.com|g' \
  /etc/apt/sources.list
apt-get update

根本解決はサポート中の Ubuntu バージョンへのアップグレードです。EOL のまま運用し続けることはセキュリティリスクになります。


参考リンク

公式ドキュメント

関連記事(本サイト)


本記事は2026年6月時点の情報をもとに、Ubuntu 20.04〜24.04・Debian 11〜12 での動作確認に基づき作成しています。リポジトリのURLは変更される場合があるため、最新情報は各公式ドキュメントをご確認ください。