在 Oracle® Solaris 11.2 中添加和更新软件

退出打印视图

更新时间: 2014 年 7 月
 
 

验证软件包和修复验证错误

可使用 pkg verify 命令验证映像中的软件包安装。如果相关发布者的当前签名策略不是 ignore,则会根据策略验证每个软件包的签名。有关如何应用签名策略的说明,请参见签名的软件包的映像属性。已安装软件包内容的验证基于定制的内容分析,该分析可能会返回与其他程序不同的结果。

如果不提供软件包名称,则检查所有已安装的软件包。-v 选项提供信息性消息,每个已安装的软件包至少占用一行。以下示例仅是一个小型输出示例。pkg/depot 软件包的安装存在一个错误。

$ pkg verify -v
PACKAGE                                                                 STATUS
pkg://solaris/archiver/gnu-tar                                              OK
pkg://solaris/audio/audio-utilities                                         OK
pkg://solaris/benchmark/x11perf                                             OK
...
pkg://solaris/package/pkg/depot                                          ERROR
        dir: var/cache/pkg/depot
                Group: 'pkg5srv (97)' should be 'bin (2)'
        file: var/log/pkg/depot/access_log
                editable file has been changed
        file: var/log/pkg/depot/error_log
                editable file has been changed
...
pkg://solaris/security/sudo                                                 OK
        file: etc/sudoers
                editable file has been changed
...
pkg://solaris/x11/xlock                                                     OK
pkg://solaris/x11/xmag                                                      OK
pkg://solaris/x11/xvidtune                                                  OK

可使用 pkg fix 命令修复 pkg verify 命令报告的软件包错误。

pkg verify 的输出显示已安装的 sudo 软件包的组件与打包的组件不同,但未将这些区别报告为验证错误。pkg fix 未进行任何更改。没有替换 /etc/sudoers 文件。

$ pkg fix pkg://solaris/security/sudo
No repairs for this image.

如果删除 /etc/sudoers 文件,则软件包无法通过验证且 pkg fix 会替换该文件。

$ pkg fix pkg://solaris/security/sudo
Verifying: pkg://solaris/security/sudo                          ERROR
        file: etc/sudoers
                Missing: regular file does not exist
Created ZFS snapshot: 2014-03-13-22:05:42
Repairing: pkg://solaris/security/sudo
Creating Plan (Evaluating mediators): 

DOWNLOAD                                PKGS         FILES    XFER (MB)   SPEED
Completed                                1/1           1/1      0.0/0.0  990B/s

PHASE                                          ITEMS
Updating modified actions                        1/1
Updating package state database                 Done
Updating package cache                           0/0
Updating image state                            Done
Creating fast lookup database                   Done

仅会替换缺少的文件:如示例所示,仅下载了一个文件并修改了一项操作(file 操作)。不会替换 sudo 软件包的其他内容。在执行修复前,该操作会保存当前安装的快照。请参见 pkg fix 输出的 "Created ZFS snapshot" 行。修复是在当前映像中执行的。

$ zfs list -r rpool/ROOT/s11
NAME                                 USED  AVAIL  REFER  MOUNTPOINT
rpool/ROOT/s11                      16.3G  22.5G  26.1G  /
rpool/ROOT/s11@2014-03-13-23:52:19   249M      -  26.1G  -

pkg verify 的输出显示已安装的 pkg/depot 软件包中某个目录的所有权存在错误。pkg fix 的输出只显示了 "Verifying" 部分中的错误,未显示与打包的组件的其他区别。

$ ls -ld /var/cache/pkg/depot
drwxr-xr-x   3 pkg5srv  pkg5srv        3 Dec  2 19:47 /var/cache/pkg/depot/
$ pkg fix pkg://solaris/package/pkg/depot
Verifying: pkg://solaris/package/pkg/depot                      ERROR
        dir: var/cache/pkg/depot
                Group: 'pkg5srv (97)' should be 'bin (2)'
Created ZFS snapshot: 2014-03-13-22:18:52
Repairing: pkg://solaris/package/pkg/depot
Creating Plan (Evaluating mediators): 

PHASE                                          ITEMS
Updating modified actions                        1/1
Updating package state database                 Done
Updating package cache                           0/0
Updating image state                            Done
Creating fast lookup database                   Done

以下输出只显示了已修复的错误。已安装的和打包的组件间的其他区别仍然存在。

$ ls -ld /var/cache/pkg/depot
drwxr-xr-x   3 pkg5srv  bin            3 Dec  2 19:47 /var/cache/pkg/depot/
$ pkg verify -v pkg://solaris/package/pkg/depot
PACKAGE                                                                 STATUS
pkg://solaris/package/pkg/depot                                             OK
        file: var/log/pkg/depot/access_log
                editable file has been changed
        file: var/log/pkg/depot/error_log
                editable file has been changed