パッケージのバージョンを制限する場合は、pkg freeze コマンドを使用します。
パッケージオペランドにバージョンを指定しない場合、名前付きのパッケージをインストールする必要があり、システムにインストールされているバージョンに制限されます。パッケージオペランドにバージョンを指定した場合、この制約 (つまり、凍結) は、fmri 属性が指定されたパッケージバージョンの値を持った状態で incorporate 依存関係がインストールされているかのように機能します。
凍結されているパッケージをインストールまたは更新するときは、凍結された時点のバージョンと一致するバージョンである必要があります。たとえば、パッケージが 1.2 で凍結された場合、1.2.1、1.2.9、1.2.0.0.1 などのバージョンに更新することはできます。そのパッケージは 1.3 または 1.1 で終了することはできません。
パッケージオペランドに指定されたパブリッシャーを使用して、一致するパッケージが検索されます。ただし、パブリッシャーの情報は凍結の一環として記録されません。パッケージはパブリッシャーではなくバージョンのみに関して凍結されます。
すでに凍結されているパッケージを凍結すると、新しく指定されたバージョンによって凍結バージョンが置き換えられます。
パッケージを凍結しても、そのパッケージを削除できなくなるわけではありません。パッケージが削除される場合に警告は表示されません。
次の例で、パッケージは現在インストールされているバージョンで凍結されます。-c オプション引数は、パッケージが凍結される理由です。凍結が原因でインストールまたは更新に失敗する場合、その理由が示されます。
$ pkg list openssl NAME (PUBLISHER) VERSION IFO library/security/openssl 1.0.2.15-11.4.0.0.1.10.0 i-- $ pkg freeze -c "Prevent update until testing complete." openssl library/security/openssl was frozen at 1.0.2.15-11.4.0.0.1.10.0:20180702T170444Z
パッケージを指定しない場合、現在凍結されているパッケージについての情報 (パッケージ名、凍結バージョン、パッケージがいつ凍結されたか、パッケージが凍結された理由) が表示されます。
$ pkg freeze NAME VERSION DATE COMMENT library/security/openssl 1.0.2.15-11.4.0.0.1.10.0:20180702T170444Z 06 Aug 2018 15:56:16 PDT Prevent update until testing complete.
パッケージのリストの「f」は、そのパッケージが凍結されていることを示します。
$ pkg list openssl NAME (PUBLISHER) VERSION IFO library/security/openssl 1.0.2.15-11.4.0.0.1.10.0 if-
pkg info 出力の「State」フィールドは、このパッケージが凍結されているかどうかも示します。
$ pkg info openssl Name: library/security/openssl Summary: OpenSSL - a Toolkit for Secure Sockets Layer (SSL v2/v3) and Transport Layer (TLS v1) protocols and general purpose cryptographic library Description: OpenSSL is a full-featured toolkit implementing the Secure Sockets Layer (SSL v2/v3) and Transport Layer Security (TLS v1) protocols as well as a full-strength general purpose cryptography library. Category: System/Security State: Installed (Frozen) Publisher: solaris Version: 1.0.2.15 (1.0.2o) Branch: 11.4.0.0.1.10.0 Packaging Date: Mon Jul 02 17:04:44 2018 Size: 16.05 MB FMRI: pkg://solaris/library/security/openssl@1.0.2.15-11.4.0.0.1.10.0:20180702T170444Z Project URL: https://www.openssl.org/ Source URL: https://www.openssl.org/source/openssl-1.0.2o.tar.gz
凍結されたパッケージの別のバージョンをインストールしようとすると、凍結に関するメッセージが表示されます。
$ pkg list -n openssl NAME (PUBLISHER) VERSION IFO library/security/openssl 1.0.2.15-11.4.0.0.1.12.0 --- $ pkg update openssl No updates available for this image. $ pkg update openssl@1.0.2.15-11.4.0.0.1.12.0 Creating Plan (Solver setup): / pkg update: No matching version of library/security/openssl can be installed: Reject: pkg://solaris/library/security/openssl@1.0.2.15-11.4.0.0.1.12.0 Reason: This version is excluded by a freeze on library/security/openssl at version 1.0.2.15-11.4.0.0.1.10.0:20180702T170444Z. The reason for the freeze is: Prevent update until testing complete.
凍結がパッケージシステムによって自動的に解除されることはありません。凍結によって適用される制約を、指定されたパッケージから削除するには、pkg unfreeze コマンドを使用します。バージョンを提供しても無視されます。