zypper のパッケージバージョンが固定されていない

検証したパッケージバージョンを指定し、セキュリティ更新計画も管理してください。

説明

zypper install でパッケージ名だけを指定すると、リポジトリの状態によって別のバージョンが選ばれる場合があります。同じ Dockerfile でもビルド時点で結果が変わり、障害の再現やロールバックが難しくなることがあります。

バージョン固定は変更を管理する手段であり、安全性を保証するものではありません。ベースイメージ、依存関係、リポジトリの状態もビルド結果に影響します。

想定される影響

  • 予期しない依存関係の変更で、アプリケーションの動作が変わる場合があります。
  • 古いバージョンを固定し続けると、必要なセキュリティ修正が反映されない場合があります。

対処方法

  • 使用するリポジトリのパッケージ名とバージョンを確認し、package=version の形で検証済みバージョンを指定してください。
  • セキュリティ修正とサポート期間を確認して固定値を更新してください。再現性が重要な場合は、依存関係とリポジトリのスナップショットも管理してください。

例

既存の httpd=2.4.58 は構文の比較例です。実際の openSUSE 環境で提供される Apache パッケージ名とバージョン・リリースを確認して置き換えてください。このベースタグやバージョンを、現在のデプロイの推奨値として使用しないでください。

変更前

dockerfile
FROM opensuse/leap:15.6

RUN zypper install -y httpd \
    && zypper clean

変更後

dockerfile
FROM opensuse/leap:15.6

RUN zypper install -y httpd=2.4.58 \
    && zypper clean

補足:

  • 変更前: バージョン制約がなく、リポジトリが選ぶバージョンが変わる場合があります。
  • 変更後: 特定のバージョンを要求します。該当パッケージとバージョンがリポジトリに存在する必要があり、セキュリティ更新も別途管理してください。

参考資料