Ubuntuでaptコマンドによるインストールで”E: Failed to fetch … 404 Not Found”とエラーになる場合には

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] は「まず地図を更新してから目的地を探す」みたいな大切なステップなんです。