可使用 pkg freeze 命令限定软件包版本。
如果未在软件包操作数中提供版本,则必须安装指定的软件包,并且版本限定为安装在系统上的版本。如果在软件包操作数中提供了版本,则此约束或冻结的操作效果等同于安装了 incorporate 依赖项(其中 fmri 属性值为所提供的软件包版本)。
如果安装或更新冻结的软件包,则其最终版本必须与冻结时使用的版本匹配。例如,如果某个软件包在冻结时的版本为 1.2,则可以将它更新到 1.2.1、1.2.9、1.2.0.0.1,等等。但该软件包的最终版本不能为 1.3 或 1.1。
将使用在软件包操作数中指定的发布者来查找匹配的软件包。但是,在冻结过程中不会记录发布者信息。软件包只针对其版本(而不是发布者)进行冻结。
冻结一个已经冻结的软件包会将冻结版本替换为新指定的版本。
如果未指定软件包,则会显示以下有关当前已冻结软件包的信息:软件包名称、冻结版本、冻结时间以及冻结软件包的原因。
冻结某个软件包不会阻止删除该软件包。删除软件包时不会显示警告。
在以下示例中,软件包冻结在当前已安装的版本。-c 选项参数是软件包被冻结的原因。当安装或更新因冻结而不能继续进行时,将会显示该原因。软件包列表中的 “f” 指示软件包已冻结。
$ pkg freeze -c "Downgrade to avoid bug" library/security/openssl library/security/openssl was frozen at 1.0.0.10-0.175.1.0.0.18.0:20120611T201116Z $ pkg freeze NAME VERSION DATE COMMENT library/security/openssl 1.0.0.10-0.175.1.0.0.19.0:20120625T171753Z 29 Jul 2012 17:45:44 PDT Downgrade to avoid bug $ pkg list library/security/openssl NAME (PUBLISHER) VERSION IFO library/security/openssl 1.0.0.10-0.175.1.0.0.18.0 if-
当您尝试安装冻结软件包的其他版本时,您会看到一条关于冻结的消息。
$ pkg update library/security/openssl@1.0.0.10-0.175.1.0.0.20.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.0.10,5.11-0.175.1.0.0.20.0:20120709T180243Z Reason: This version is excluded by a freeze on library/security/openssl at version 1.0.0.10,5.11-0.175.1.0.0.18.0:20120611T201116Z. The reason for the freeze is: Downgrade to avoid bug
包管理系统永远不会自动解除冻结。可使用 pkg unfreeze 命令从指定的软件包中删除冻结操作施加的约束。将会忽略提供的版本。