🍥

古いDebian GNU/Linuxでapt使用時にsources.listに記載のURLが404 Not Foundと言われる時の解決

2024/03/06に公開

これは何?

Dockerで古いPHPを動かさないといけなくて、Debianのバージョンが古い(具体的には、jessie)コンテナを使用しています。
いつもとは違う環境でdocker imageをpullして、apt update などすると、404 Not Foundとなってしまう場合があります。
さっきこうなって、一応解決できたので、備忘録としてメモ

根治対応

そもそもPHPのバージョン上げて、Debianのバージョンも上げるのがよろし

Debianのdebパッケージ配布場所について

Debianのパッケージ管理システムaptは、/etc/apt/sources.listに記載されたURLにアクセスし、パッケージを取得します。
デフォルトのURLは、deb.debian.orgもしくは、security.debian.orgになるようです。バージョンがjessieの話をしているので、最新版だと違うかも(未確認)

どうも負荷分散のためか、古いバージョンは、上記URLのサーバーには置かれなくなるらしく、archive.debian.orgに移るようです。(Debian使いには常識なのかな...)

上記を踏まえた対応

なので、/etc/apt/sources.listに記載のURLドメインを変更すれば良いというだけでした。

Dockerfileであれば、下記のような記載をapt実行前に加えます(テキトーですが)

RUN sed -i 's/deb.debian.org/archive.debian.org/g' /etc/apt/sources.list
RUN sed -i 's/security.debian.org/archive.debian.org/g' /etc/apt/sources.list

まとめ

パッとしらべて、パッとやっちゃったので、不正確なことや誤りがあるかもしれません。何かあれば、コメントかなにかでツッコんでくれたら嬉しいです。

Discussion