Ubuntu
apt-get

Ubuntu で apt-get update が404になる問題

apt-get update が404になり失敗する問題

Ubuntu 17.04 で apt-get update をしたところ、大量の404エラーが出てしまった。
その後、 apt-get install や upgrade も404で失敗する現象に遭遇した。

$ sudo apt-get update

Err:11 http://jp.archive.ubuntu.com/ubuntu zesty/universe Sources
  404  Not Found
Ign:12 http://jp.archive.ubuntu.com/ubuntu zesty/multiverse Sources
Ign:13 http://jp.archive.ubuntu.com/ubuntu zesty/main Sources
Err:14 http://jp.archive.ubuntu.com/ubuntu zesty-security/multiverse Sources
  404  Not Found
Ign:15 http://jp.archive.ubuntu.com/ubuntu zesty-security/universe Sources
Ign:16 http://jp.archive.ubuntu.com/ubuntu zesty-security/main Sources
Err:17 http://jp.archive.ubuntu.com/ubuntu zesty-updates/restricted Sources
  404  Not Found
Ign:18 http://jp.archive.ubuntu.com/ubuntu zesty-updates/universe Sources
Ign:19 http://jp.archive.ubuntu.com/ubuntu zesty-updates/main Sources
Err:20 http://jp.archive.ubuntu.com/ubuntu zesty-proposed/restricted Sources
  404  Not Found
Ign:21 http://jp.archive.ubuntu.com/ubuntu zesty-proposed/main Sources
Ign:22 http://jp.archive.ubuntu.com/ubuntu zesty-proposed/universe Sources
Err:23 http://jp.archive.ubuntu.com/ubuntu zesty-backports/multiverse Sources
  404  Not Found
...

解決方法

よく提示されている解決方法が /etc/apt/source.list を書き換えるというもの。
古いUbuntuを使っていると起こることがあり、 /etc/apt/source.list の中の archive.ubuntu.com security.ubuntu.comold-releases.ubuntu.com に置換すれば直る。
/etc/apt/source.list は以下のコマンドで置換される。
なお、 jp.archive.ubuntu.com を使用している場合は jp. も消す必要があるという報告があった。

# バックアップ
$ sudo cp -p /etc/apt/sources.list /etc/apt/sources.list.bak
# 置換
$ sudo sed -i -e 's/archive.ubuntu.com\|security.ubuntu.com/old-releases.ubuntu.com/g' /etc/apt/sources.list

これで解決しない場合

僕は上記の方法だけでは解決しなかった。
apt-get はパッケージ情報をキャッシュしており、update 時はこれを元にダウンロードしてくる。
なぜかこれがおかしくなってしまったようで /etc/apt/sources.list を編集しただけでは404が直らなかった。
以下のようにキャッシュを吹っ飛ばしたら直った。

$ sudo rm -rf /var/lib/apt/lists/*

参考: https://github.com/owncloud/core/issues/27775

これでも解決しない場合

僕は上記の方法で解決したが、他に software-properties-gtk を使って /etc/apt/sources.list を再生成する解決方法を提示されている方がいたので参考までに。

apt-get updateで404