私はRuby 3.2.2 Debian 11ブルスアイの画像をデフォルトの画像として使用するDockerコンテナの中にいます(参照:https://github.com/docker-library/ruby/blob/ed1be47a38a7a24a0aa03c450549afcb592f02a8/3.2/bullseye/Dockerfile)
postgres-client-15
以下を使用してパッケージをインストールしたいと思います。
FROM ruby:3.2.2-bullseye
# ...
RUN curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | tee /etc/apt/trusted.gpg.d/apt.postgresql.org.gpg >/dev/null
RUN echo "deb http://apt.postgresql.org/pub/repos/apt/ buster-pgdg main 15" >> /etc/apt/sources.list.d/postgresql.list
#...
RUN apt-get update && apt-get install -y apt-transport-https ca-certificates \
&& apt-key adv --no-tty --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 561F9B9CAC40B2F7 \
&& echo deb https://oss-binaries.phusionpassenger.com/apt/passenger bullseye main > /etc/apt/sources.list.d/passenger.list \
&& apt-get update \
&& apt-get install -y \
autoconf \
build-essential \
cron \
curl \
ghostscript \
git \
less \
libjemalloc2 \
libpq-dev \
libreadline-dev \
libsqlite3-dev sqlite3 \
libssl-dev \
nginx libnginx-mod-http-passenger \
nodejs \
postgresql-client-15 \
redis-server \
vim \
xfonts-base \
xfonts-75dpi \
xmlsec1 \
yarn \
&& rm -rf /var/lib/apt/lists/*
このエラーメッセージで失敗します
The following packages have unmet dependencies:
postgresql-client-15 : Depends: libreadline7 (>= 6.0) but it is not installable
コマンドを手動で実行すると、パッケージがインストールされているlibreadline8
ことがわかります。
root@42da1438f1d6:/# dpkg -l | grep libread
ii libreadline-dev:amd64 8.1-1 amd64 GNU readline and history libraries, development files
ii libreadline8:amd64 8.1-1 amd64 GNU readline and history libraries, run-time libraries
postgresql-client-15が依存しているようですが、libreadline7
Debian 11 Bullseyeではこのパッケージを使用できません。この問題を解決する方法を知っていますか?
Docker イメージ自体をアップグレードすることは気に入らないが、Debian Bookworm では同様のエラーが発生します (一部のパッケージはまだ Bookworm で使用できないため、他のエラーの中で)。
答え1
問題は、Buster PostgreSQLリポジトリを使用すると発生します。そこでpostgresql-client-15
利用可能なパッケージはlibreadline7
。
Bookwormにアップグレードしたいと思っているので、次のことをお勧めします。postgresql-client-15
Debian で利用可能なパッケージ、PosgreSQLリポジトリを使用せずに:
FROM ruby:3.2.2-bookworm
RUN apt-get update && apt-get install -y --no-install-recommends postgresql-client-15