
次の Dockerfile を使用して Docker コンテナを構築しています。
FROM debian:bullseye
RUN apt -y update && echo 'deb https://nginx.org/packages/debian/ bullseye nginx' >> /etc/apt/sources.list && echo 'deb-src https://nginx.org/packages/debian/ bullseye nginx' >> /etc/apt/sources.list && apt -y install gnupg2 && apt-key adv --keyserver keyserver.ubuntu.com --recv-keys ABF5BD827BD9BF62 && apt -y update && apt -y install nginx nginx-extras luarocks
RUN ln -sf /dev/stdout /var/log/nginx/access.log \
&& ln -sf /dev/stderr /var/log/nginx/error.log
# RUN luarocks install nginx-lua-prometheus
EXPOSE 80
STOPSIGNAL SIGTERM
NGinx サイトの指示に従って、次の 2 行を追加しますetc/apt/sources.list
。
deb https://nginx.org/packages/debian/ bullseye nginx
deb-src https://nginx.org/packages/debian/ bullseye nginx
インストールを開始します:apt install -y nginx ...
しかし、コンテナが起動されると、古いバージョンが実行されています:
# nginx -v
nginx version: nginx/1.18.0
nginx は NGinx リポジトリではなく、debian リポジトリからインストールされるようです。
さらに驚くべきことに、NGinx パッケージはアップグレード可能としてマークされています。
# apt update
Hit:1 http://security.debian.org/debian-security bullseye-security InRelease
Hit:2 http://deb.debian.org/debian bullseye InRelease
Hit:3 http://deb.debian.org/debian bullseye-updates InRelease
Hit:4 https://nginx.org/packages/debian bullseye InRelease
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
1 package can be upgraded. Run 'apt list --upgradable' to see it.
# apt list --upgradable
Listing... Done
nginx/stable 1.20.1-1~bullseye all [upgradable from: 1.18.0-6.1]
N: There is 1 additional version. Please use the '-a' switch to see it
ここで、nginx パッケージをアップグレードしようとすると失敗します。
# apt upgrade nginx
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
libnginx-mod-http-auth-pam : Depends: nginx-common (= 1.18.0-6.1) but it is not installable
libnginx-mod-http-cache-purge : Depends: nginx-common (= 1.18.0-6.1) but it is not installable
libnginx-mod-http-dav-ext : Depends: nginx-common (= 1.18.0-6.1) but it is not installable
libnginx-mod-http-echo : Depends: nginx-common (= 1.18.0-6.1) but it is not installable
libnginx-mod-http-fancyindex : Depends: nginx-common (= 1.18.0-6.1) but it is not installable
libnginx-mod-http-geoip : Depends: nginx-common (= 1.18.0-6.1) but it is not installable
libnginx-mod-http-geoip2 : Depends: nginx-common (= 1.18.0-6.1) but it is not installable
libnginx-mod-http-headers-more-filter : Depends: nginx-common (= 1.18.0-6.1) but it is not installable
libnginx-mod-http-image-filter : Depends: nginx-common (= 1.18.0-6.1) but it is not installable
libnginx-mod-http-lua : Depends: nginx-common (= 1.18.0-6.1) but it is not installable
libnginx-mod-http-ndk : Depends: nginx-common (= 1.18.0-6.1) but it is not installable
libnginx-mod-http-perl : Depends: nginx-common (= 1.18.0-6.1) but it is not installable
libnginx-mod-http-subs-filter : Depends: nginx-common (= 1.18.0-6.1) but it is not installable
libnginx-mod-http-uploadprogress : Depends: nginx-common (= 1.18.0-6.1) but it is not installable
libnginx-mod-http-upstream-fair : Depends: nginx-common (= 1.18.0-6.1) but it is not installable
libnginx-mod-http-xslt-filter : Depends: nginx-common (= 1.18.0-6.1) but it is not installable
libnginx-mod-mail : Depends: nginx-common (= 1.18.0-6.1) but it is not installable
libnginx-mod-nchan : Depends: nginx-common (= 1.18.0-6.1) but it is not installable
libnginx-mod-stream : Depends: nginx-common (= 1.18.0-6.1) but it is not installable
libnginx-mod-stream-geoip : Depends: nginx-common (= 1.18.0-6.1) but it is not installable
libnginx-mod-stream-geoip2 : Depends: nginx-common (= 1.18.0-6.1) but it is not installable
nginx-extras : Depends: nginx-common (= 1.18.0-6.1) but it is not installable
E: Broken packages
質問は次のとおりです: 最新バージョン (nginx/stable 1.20.1) を NGinx リポジトリから直接インストールするにはどうすればよいですか?
答え1
からman apt
:
パッケージ名の後に等号 (=) と選択するパッケージのバージョンを続けることで、特定のバージョンのパッケージをインストール対象として選択できます。あるいは、パッケージ名の後にスラッシュ (/) とコード名 (buster、bullseye、sid ...) またはスイート名 (stable、testing、unstable) を続けることで、特定のリリースのバージョンを選択することもできます。これにより、要求を満たすために必要な場合、このパッケージの依存関係に対してこのリリースのバージョンも選択されます。
パッケージの依存関係にも問題がある可能性がありますnginx/stable 1.20.1
が、インストールしようとするとわかります。