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.com
を old-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
を再生成する解決方法を提示されている方がいたので参考までに。