LinuxのUbuntu環境で「sudo apt install
」を実行したときに 「E: Failed to fetch ... 404 Not Found
」 というエラーが出た時の解決方法についてわかりやすく説明します。
エラーの例
以下にエラーの例を示します。
$ sudo apt install fakeroot git libssl-dev bison flex libelf-dev libncurses-dev
<略>
Ign:1 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 libc-dev-bin amd64 2.39-0ubuntu8.3
<略>
Err:1 http://security.ubuntu.com/ubuntu noble-updates/main amd64 libc-dev-bin amd64 2.39-0ubuntu8.3
404 Not Found [IP: 91.189.91.81 80]
<略>
E: Failed to fetch http://security.ubuntu.com/ubuntu/pool/main/g/glibc/libc-dev-bin_2.39-0ubuntu8.3_amd64.deb 404 Not Found [IP: 91.189.91.81 80]
<略>
解決方法
以下のコマンドを実行すれば解決します。
sudo apt update
「404 Not Found」の正体
APT(Advanced Package Tool)は、インストールしようとするパッケージを リポジトリ(つまりサーバ)からダウンロードしようとします。
しかし、このときに「404 Not Found」が返ってくるのは、次のような理由によることが多いです。
- リポジトリのURLが古くなっている(たとえば、OSのバージョンがEOLになってリポジトリが移動されたなど)
- パッケージが移動・削除された
- リポジトリ構成が変更されたのにローカルキャッシュが古いまま
この場合、APTはキャッシュにある情報をもとに「ここにあるはず」とパッケージを探しにいくのですが、実際にはそのURLが存在しなくなっているため 404 エラーになるのです。
なぜ [sudo apt update
] で解決するのか
[sudo apt update
] を実行すると、APTは各リポジトリから最新の「パッケージインデックス(索引情報)」を取得し、ローカルに保存しているキャッシュを更新します。
これによって、パッケージの「迷子」が解消されます。
- 最新のパッケージのありか(URL)を正しく認識できる
- リポジトリ構成の変更にも対応できる
- 存在しないパッケージを無理に探しに行くことがなくなる
つまり、APTが「正しい地図」を手に入れてからパッケージを探しに行くようになるわけです。
さいごに
地味なコマンドですが、[sudo apt update
] は「まず地図を更新してから目的地を探す」みたいな大切なステップなんです。