概要
Linux でパッケージを apt-get install するとき、以下のようなエラーが発生することがありました。
E: Unable to locate package XXXXX
解決方法としては、以下を試してみてください。
apt updateorapt-get updateしてから再試行する- パッケージが存在するかを確認する
このうち、1. は検索するといっぱい出てくるので割愛します。そもそも説明するほどでもなく、実行するだけです。
一方、2. については一言で書くと元も子もないのですが、ここにたどり着くのが結構大変だったので、メモを残しておきます。
前提状況
Docker Compose でビルドしようとしたとき、以下のような Dockerfile で、以前はビルドできていたものが、本題のエラーを吐いていました。
FROM tiangolo/uvicorn-gunicorn-fastapi:python3.8
RUN apt-get update && \
apt-get install -y --no-install-recommends postgresql-client-11
ちなみに、このエラーは postgresql-client-13 にすることで解決しました。いつの間にか 11 が使用できなくなっていたようです。
使用する PostgreSQL の Docker イメージも、バージョンを合わせて postgres:13.4-alpine にしました。
Linux のバージョンやコードネームを確認する
まず、以下のようなコマンドで、使用している Linux のバージョンやコードネームを確認します。
$ cat /etc/lsb-release # Ubuntu
$ cat /etc/os-release # Debian
自分の場合、どのディストリビューションか分からなかったので、以下のようにして確認しました。
- Dockerfile のエラーを吐いた行を含めてコメントアウトして、できるだけ小さい構成でビルドして起動する
- Docker コンテナに入って、「Linux バージョン 確認」で検索して出てきたコードを片っ端から実行する
ちなみに、Debian GNU/Linux 11 (bullseye) でした。
ディストリビューションのパッケージを検索する
使用している Linux のディストリビューションの公式ページで、パッケージ検索ページを開きます。
その他のディストリビューションでも「Debian パッケージ」みたいに検索すると、出てくると思います。
あとは、インストールに失敗したパッケージ名で検索して、そもそも存在するのか (typo も確認) と、前項で確認したバージョンで使用できるかを確認してください。
自分の場合、Debian で postgresql-client- で検索すると、以下のような感じでした。
postgresql-client-11- buster (oldstable)
postgresql-client-13- bullseye (stable)
- bookworm (testing)
- sid (unstable)
ということで、11 は使用できず、13 が使用可能であることが分かりました。
0 件のコメント:
コメントを投稿