「apt-get update」で404 Not Foundになる原因と解決方法|Ubuntu/Debian完全解説
- 作成日 2026.06.29
- linux
Err:1 http://archive.ubuntu.com/ubuntu focal/main amd64 Packages
404 Not Found [IP: 91.189.91.81 80]
apt-get update や apt update を実行したときに 404 Not Found が出てパッケージが更新できない——Dockerコンテナや古いサーバーでよく遭遇するエラーです。
原因のほとんどはリポジトリのURLが古くなっているか、Ubuntuのサポートが終了(EOL)していることです。本記事ではパターン別に原因と解決方法を解説します。
- 1. 結論:先に答えを出す
- 2. 原因パターン一覧
- 3. まず:どのリポジトリが 404 になっているか確認する
- 4. パターン1:Ubuntu が EOL(サポート終了)
- 5. パターン2:PPA が削除・移動されている
- 6. パターン3:sources.list の URL が古い・間違っている
- 7. パターン4:サードパーティリポジトリが移動・廃止された
- 8. パターン5:ネットワーク・プロキシの問題
- 9. apt-get update のエラーを無視してインストールする(緊急時)
- 10. Debian での対処法
- 11. トラブルシューティング
- 12. よくある質問(FAQ)
- 13. まとめ
- 14. 参考リンク
結論:先に答えを出す
# ① 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.04 | Xenial | 2021年4月 | 2026年4月 |
| 18.04 | Bionic | 2023年5月 | 2028年4月 |
| 20.04 | Focal | 2025年5月 | 2030年4月 |
| 22.04 | Jammy | 2027年6月 | 2032年4月 |
| 24.04 | Noble | 2029年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 update と apt 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 が EOL | old-releases.ubuntu.com に切り替え |
| PPA が削除された | add-apt-repository --remove ppa:名前 で削除 |
| sources.list が古い | デフォルトの内容に書き直す |
| サードパーティが移動 | 公式ドキュメントで最新のURLに更新 |
| ネットワーク・DNS | DNS設定・プロキシを確認 |
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 のまま運用し続けることはセキュリティリスクになります。
参考リンク
公式ドキュメント
関連記事(本サイト)
- apt vs apt-get 徹底比較 – パッケージ管理の使い分け
- Linux「command not found」エラーの解決方法 – よくあるLinuxエラー
- 「Permission denied (publickey)」SSH エラーの解決方法 – よくあるエラー
- Linuxでコマンドの実行時間を計測する方法 – コマンド活用
本記事は2026年6月時点の情報をもとに、Ubuntu 20.04〜24.04・Debian 11〜12 での動作確認に基づき作成しています。リポジトリのURLは変更される場合があるため、最新情報は各公式ドキュメントをご確認ください。
-
前の記事
【完全リファレンス】rails generate の使い方|model/controller/scaffold/migration等の全generatorを徹底解説 2026.06.29
-
次の記事
Rails「ActiveRecord::RecordNotFound」エラーの原因と対処法|404ハンドリングと例外設計 2026.06.30
コメントを書く