跳过导航链接 | |
退出打印视图 | |
添加和更新 Oracle Solaris 11.1 软件包 Oracle Solaris 11.1 Information Library (简体中文) |
可使用 pkg search 命令搜索数据与指定模式匹配的软件包。
/usr/bin/pkg search [-HIaflpr] [-o attribute ...] [-s repo_uri] query
和 pkg contents 命令一样,pkg search 命令检查软件包的内容。pkg contents 命令返回内容,而 pkg search 命令返回与查询匹配的软件包的名称。
缺省情况下,会将 query 解释为要精确匹配的一组词条(但不区分大小写)。可使用 -I 选项指定区分大小写的搜索。在查询词条中可以使用 ? 和 * 通配符。可使用单引号或双引号搜索短语。当使用通配符或引号时,请务必考虑所用的 shell。
可以指定多个查询词条。缺省情况下,多个词条以 AND 连接。可以使用 OR 显式连接两个词条。
可以按以下结构化形式表达查询:
pkg_name:action_name:index:token
对缺少的字段使用隐式通配符。pkg_name 和 token 字段可以包含显式通配符。action_name 和 index 值必须完全匹配。action_name 的值是某个操作的名称。index 的值是该操作的某个属性的名称。有关软件包操作和属性的列表,请参见 pkg(5) 手册页中的“操作”。并非所有属性都是可搜索的。例如,mode 是 file 操作的一个属性,但是 mode 不是 index 的有效值。index 的某些值是从其他属性派生的值。例如,index 可以是 basename,它是 file 或 dir 操作的 path 属性的最后一个组成部分。有用的 index 值包括,对应于 file 和 dir 操作的 basename 和 path、对应于 depend 操作的依赖性类型(例如 require 或 group),以及对应于驱动程序操作的 driver_name 和 alias。
通常,将 token 的值与 index 所指定的属性的值进行对比。例如,在下述部分 driver 操作中,可以为 index 指定属性名称 alias,可以为 token 指定 pci108e。
driver alias=pci108e,1647 alias=pci108e,16a7
set 操作的语法稍有不同。set 操作的两个属性为 name 和 value。在这种情况下,index 的值是 name 属性的值,并且会将 token 的值与匹配的 value 属性的值进行对比。例如,在下述部分 set 操作中,可以为 index 指定 pkg.summary,可以为 token 指定 Broadcom。
set name=pkg.summary value="Broadcom 57xx 1GbE NIC Driver"
set 操作 name 属性的一些明确定义的值包括 pkg.fmri、info.classification、pkg.description 和 pkg.summary。请参见 pkg(5) 手册页中的“Set 操作”。
缺省情况下,搜索与为此映像配置的所有发布者关联的系统信息库。可使用 -l 选项仅搜索安装于此映像中的软件包。可使用 -s 选项指定要搜索的系统信息库的 URI。
缺省情况下,仅显示匹配的当前安装的软件包版本或新软件包版本。可使用 -f 选项显示所有匹配的版本。
缺省情况下,将显示所有匹配操作的结果,这样一个软件包可产生多行结果。可使用 -p 选项使每个匹配的软件包只列出一次。
以下示例显示 libpower 库来自 system/kernel/power 软件包。
$ pkg search -Hlo pkg.name /lib/libpower.so.1 system/kernel/power $ pkg search -lo path,pkg.name libpower.so.1 PATH PKG.NAME lib/libpower.so.1 system/kernel/power $ pkg search -Hlo path,pkg.name basename:libpower.so.1 lib/libpower.so.1 system/kernel/power $ pkg search -Hlo path,pkg.name 'path:*libpower.so.1' lib/libpower.so.1 system/kernel/power
要显示哪个软件包提供了特定的 SMF 服务,请将该服务的名称作为 org.opensolaris.smf.fmri 属性的值进行搜索。
$ pkg search -o value,pkg.name 'org.opensolaris.smf.fmri:*network/http*' VALUE PKG.NAME ['svc:/network/http', 'svc:/network/http:apache22'] web/server/apache-22 ['svc:/network/http', 'svc:/network/http:tomcat6'] web/java-servlet/tomcat ['svc:/network/http', 'svc:/network/http:squid'] web/proxy/squid ['svc:/network/http', 'svc:/network/http:lighttpd14'] web/server/lighttpd-14
在这种情况下,每个属性都具有两个值:具有指定实例名称的服务名称和不具有指定实例名称的服务名称。以下示例说明如何在软件包清单中指定此属性:
set name=org.opensolaris.smf.fmri value=svc:/network/http value=svc:/network/http:apache22
以下示例找出了 info.classification 属性值中含有 "Source Code Management" 的所有软件包。
$ pkg search 'info.classification:source code management' INDEX ACTION VALUE PACKAGE info.classification set Development/Source Code Management pkg:/developer/versioning/sccs@0.5.11-0.175 info.classification set Development/Source Code Management pkg:/developer/xopen/xcu4@0.5.11-0.175.1.0. info.classification set Development/Source Code Management pkg:/developer/versioning/git@1.7.9.2-0.175 info.classification set Development/Source Code Management pkg:/developer/versioning/mercurial-27@2.2. info.classification set Development/Source Code Management pkg:/library/python-2/subversion@1.7.5-0.17 info.classification set Development/Source Code Management pkg:/developer/versioning/mercurial-26@2.2. info.classification set Development/Source Code Management pkg:/library/java/subversion@1.7.5-0.175.1. info.classification set Development/Source Code Management pkg:/developer/quilt@0.60-0.175.1.0.0.21.0 info.classification set Development/Source Code Management pkg:/developer/versioning/cvs@1.12.13-0.175 info.classification set Development/Source Code Management pkg:/developer/versioning/subversion@1.7.5- info.classification set Development/Source Code Management pkg:/developer/versioning/mercurial@2.2.1-0 info.classification set Development/Source Code Management pkg:/library/perl-5/subversion@1.7.5-0.175.
本示例说明大量重复信息会使真正需要的信息难以分辨。
以下示例使用 -o 选项只显示软件包的名称,并使用 -H 选项省略列标题。
$ pkg search -Ho pkg.name 'info.classification:source code management' developer/versioning/sccs developer/xopen/xcu4 developer/versioning/git developer/versioning/mercurial-27 library/python-2/subversion developer/versioning/mercurial-26 library/java/subversion developer/quilt developer/versioning/cvs developer/versioning/subversion developer/versioning/mercurial library/perl-5/subversion
下面的这些示例显示了依赖于指定软件包的软件包。
以下示例显示了对 system/kernel/power 软件包具有 require 依赖性的软件包。如果使用 pkg contents 命令来显示 i86pc 和 system/hal 软件包的 require 类型的 depend 操作,将看到这两个软件包均列出 system/kernel/power。
$ pkg search -Hlo pkg.name require:system/kernel/power system/kernel/dynamic-reconfiguration/i86pc system/hal
以下示例显示许多软件包都对 pkg:/x11/server/xorg@1.12.99 具有 exclude 依赖性。
$ pkg search -lo pkg.name,fmri 'depend:exclude:*xorg*' PKG.NAME FMRI x11/server/xvnc pkg:/x11/server/xorg@1.12.99 x11/server/xorg pkg:/x11/server/xorg@1.12.99 x11/server/xorg/driver/xorg-video-mga pkg:/x11/server/xorg@1.12.99 x11/server/xorg/driver/xorg-video-vesa pkg:/x11/server/xorg@1.12.99 x11/server/xorg/driver/xorg-input-vmmouse pkg:/x11/server/xorg@1.12.99 ...
Oracle Solaris 11 GUI 安装程序安装 solaris-desktop 组软件包。文本安装程序和自动化安装程序安装中的缺省 AI 清单将安装 solaris-large-server 组软件包。非全局区域的缺省安装清单安装 solaris-small-server 组软件包。solaris-small-server 组软件包也是可用于在服务器上安装一个较小的软件包集合的替代方法。可使用以下搜索格式显示每个组包含的软件包集合。
$ pkg search -Hfo fmri '*/solaris-large-server:depend:group:*' archiver/gnu-tar compress/bzip2 ... text/texinfo web/wget
在本示例中,-o pkg.name 只返回在查询的 pkg_name 字段中指定的软件包的名称:
group/system/solaris-desktop
-o fmri 选项返回在 solaris-large-server 软件包中指定为具有 group 类型依赖性的软件包的 FMRI。
缺省情况下,搜索只返回可安装在该映像中的软件包。在本示例中,搜索不返回匹配软件包,而是返回指定软件包中某个操作的属性值。在本示例中,该属性值是软件包名称。该命令返回的结果数量大于类似的 pkg contents 命令返回的结果数量,因为这些搜索结果包含在指定软件包的 group depend 操作中指定的所有软件包的名称,而不仅仅是可安装软件包的名称。例如,可能包含无法安装在该映像中的软件包变量。可以将该搜索的输出和列出组软件包中的所有可安装软件包中所示的 pkg contents 命令的输出进行对比。
提示 - 通常,使用 pkg contents 命令显示指定软件包的内容,使用 pkg search 命令显示匹配查询的软件包。如果您知道哪个软件包可提供您感兴趣的内容,使用 pkg contents 命令。