prodreg 命令是 Oracle Solaris 产品注册表的命令行界面 (command-line interface, CLI)。prodreg 命令支持几个允许您管理系统上软件的子命令。
可以在终端窗口中使用 prodreg 命令来执行下列任务:
查看已安装和已注册软件的列表以及软件的属性。
查看已在“System Software Localizations”目录中安装的所有本地化版本的 Oracle Solaris 系统产品。
标识遭到破坏的软件。
从 Oracle Solaris 产品注册表中删除软件项。
卸载软件和个别软件包。
有关如何使用命令行界面来管理 Oracle Solaris 产品注册表的更多信息,请参见 prodreg(1M) 手册页。
可以使用 prodreg 命令的 browse 子命令,在终端窗口中的 Oracle Solaris 产品注册表中查看有关软件的信息。
打开终端窗口。
浏览 Oracle Solaris 产品注册表。
% prodreg browse BROWSE # +/-/. UUID # NAME ======== ===== ==================================== = ============ 1 - root 1 System Registry 2 + a01ee8dd-1dd1-11b2-a3f2-0800209a5b6b 1 Solaris 10 System Software 3 + 8f64eabf-1dd2-11b2-a3f1-0800209a5b6b 1 Unclassified Software |
prodreg 命令的 browse 子命令显示有关已注册软件的以下信息。
使用 prodreg browse 命令时,Oracle Solaris 产品注册表会为每个已注册的软件组件生成一个浏览编号。此编号用作 prodreg browse 命令或 info 子命令的参数,可向下派生已注册的特定组件的分层结构。
在重新引导或重新安装系统时,浏览编号可能会变化。不要将浏览编号存储在脚本中,也不要尝试在不同的登录会话中重新使用它们。
此字段指示软件组件是否具有其他子软件组件并已在 Oracle Solaris 产品注册表中注册。
此字段中显示下列字符:
+ 指示软件组件具有当前未显示出来的其他子组件。
- 指示软件组件具有当前显示出来的其他子组件。
. 指示软件组件没有子组件。
此字段列出软件在 Oracle Solaris 产品注册表中的唯一标识符。
此字段指示系统上软件组件的实例编号。如果系统中包含某个软件组件的多个实例,则 Oracle Solaris 产品注册表会为该组件的每个实例都指定一个单独的实例编号。
此字段列出软件的本地化名称。在此样例输出中,Oracle Solaris OS 的名称是 Oracle Solaris 10 系统软件。
浏览 Oracle Solaris 产品注册表中列出的某个软件组件的信息。
% prodreg browse -m "name" |
-m "name" 命令可显示有关名为 name 的软件组件的信息。
如果系统中包含 name 软件的多个实例,请键入以下命令来浏览 Oracle Solaris 产品注册表:
% prodreg browse -u name-UUID -i instance -n number |
显示有关具有唯一标识符 name-UUID 的 name 软件组件的信息。
显示有关具有实例编号 instance 的 name 软件组件的信息。
通过引用组件的浏览编号 number 来显示软件信息。
下面的示例演示如何通过引用组件的名称来查看软件信息。
% prodreg browse BROWSE # +/-/. UUID # NAME ======== ===== ==================================== = ============ 1 - root 1 System Registry 2 + a01ee8dd-1dd1-11b2-a3f2-0800209a5b6b 1 Solaris 10 System Software 3 + 8f64eabf-1dd2-11b2-a3f1-0800209a5b6b 1 Unclassified Software % prodreg browse -m "Solaris 10 System Software" |
下面的示例演示如何使用带有 -n 选项的 prodreg browse 命令,通过引用组件的浏览编号来查看软件信息。
% prodreg browse BROWSE # +/-/. UUID # NAME ======== ===== ==================================== = ============ 1 - root 1 System Registry 2 + a01ee8dd-1dd1-11b2-a3f2-0800209a5b6b 1 Solaris 10 System Software 3 + 8f64eabf-1dd2-11b2-a3f1-0800209a5b6b 1 Unclassified Software % prodreg browse -n 2 |
下面的示例演示如何使用带有 -u 选项的 prodreg browse 命令,通过参考组件的 UUID 来查看软件信息。该 UUID 是软件在 Oracle Solaris 产品注册表中的唯一标识符。
% prodreg browse BROWSE # +/-/. UUID # NAME ======== ===== ==================================== = ============ 1 - root 1 System Registry 2 + a01ee8dd-1dd1-11b2-a3f2-0800209a5b6b 1 Solaris 10 System Software 3 + 8f64eabf-1dd2-11b2-a3f1-0800209a5b6b 1 Unclassified Software % prodreg browse -u a01ee8dd-1dd1-11b2-a3f2-0800209a5b6b |
可以使用 prodreg 命令的 info 子命令来查看特定的软件属性。
prodreg info 命令可显示有关已注册软件的各种信息,其中包括以下各项:
软件组件的名称
软件组件的说明
软件的必需组件
其他需要该软件的组件
软件的基目录
软件组件的路径
打开终端窗口。
浏览 Oracle Solaris 产品注册表。
% prodreg browse BROWSE # +/-/. UUID # NAME ======== ===== ==================================== = ============ 1 - root 1 System Registry 2 + a01ee8dd-1dd1-11b2-a3f2-0800209a5b6b 1 Solaris 10 System Software 3 + 8f64eabf-1dd2-11b2-a3f1-0800209a5b6b 1 Unclassified Software |
查看所列出的某个软件组件的属性。
% prodreg info -m "name" |
-m "name" 命令可显示名为 name 的软件组件的属性。
对于您要查看的每个软件组件,重复步骤 3。
下面的示例演示如何通过引用组件的名称来查看软件属性。
% prodreg browse BROWSE # +/-/. UUID # NAME ======== ===== ==================================== = ============ 1 - root 1 System Registry 2 + a01ee8dd-1dd1-11b2-a3f2-0800209a5b6b 1 Solaris 10 System Software 3 + 8f64eabf-1dd2-11b2-a3f1-0800209a5b6b 1 Unclassified Software % prodreg info -m "Solaris 10 System Software" |
下面的示例演示如何使用带有 -n 选项的 prodreg info 命令,通过引用组件的浏览编号来查看软件属性。
% prodreg browse BROWSE # +/-/. UUID # NAME ======== ===== ==================================== = ============ 1 - root 1 System Registry 2 + a01ee8dd-1dd1-11b2-a3f2-0800209a5b6b 1 Solaris 10 System Software 3 + 8f64eabf-1dd2-11b2-a3f1-0800209a5b6b 1 Unclassified Software % prodreg info -n 2 |
下面的示例演示如何使用带有 -u 选项的 prodreg info 命令,通过引用组件的 UUID 来查看软件属性。该 UUID 是软件在 Oracle Solaris 产品注册表中的唯一标识符。
% prodreg browse BROWSE # +/-/. UUID # NAME ======== ===== ==================================== = ============ 1 - root 1 System Registry 2 + a01ee8dd-1dd1-11b2-a3f2-0800209a5b6b 1 Solaris 10 System Software 3 + 8f64eabf-1dd2-11b2-a3f1-0800209a5b6b 1 Unclassified Software % prodreg info -u a01ee8dd-1dd1-11b2-a3f2-0800209a5b6b |
可以使用 prodreg info 命令来查看依赖特定软件组件的组件。在卸载特定组件之前,可能希望检查软件产品之间的相关性。
打开终端窗口。
浏览 Oracle Solaris 产品注册表。
% prodreg browse BROWSE # +/-/. UUID # NAME ======== ===== ==================================== = ============ 1 - root 1 System Registry 2 + a01ee8dd-1dd1-11b2-a3f2-0800209a5b6b 1 Solaris 10 System Software 3 + 8f64eabf-1dd2-11b2-a3f1-0800209a5b6b 1 Unclassified Software |
重复执行 prodreg browse 命令,直到显示出要检查的软件组件。有关使用 prodreg browse 命令来浏览 Oracle Solaris 产品注册表的更多信息,请参见 如何查看有关已安装或已卸载软件的信息 (prodreg)。
查看特定软件组件的相关性。
% prodreg info -m "name" -a "Dependent Components" |
显示名为 name 的软件组件的属性。
通过显示 Dependent Components(依赖组件)属性的值来显示依赖 name 软件的组件。
此命令的输出可列出依赖 name 软件的软件组件。
下面的示例演示如何查看依赖 ExampleSoft 软件产品的组件。
% prodreg -m "ExampleSoft" -a "Dependent Components" Dependent Components: Name UUID # --------------------------- ------------------------------------ - ExampleSoftA 7f49ecvb-1ii2-11b2-a3f1-0800119u7e8e 1 |
如果不使用相应的卸载程序来删除已安装的软件文件或软件包,可能会破坏系统上的软件。如果软件遭到破坏,软件可能无法正常运行。可以使用 prodreg 命令的 info 子命令来帮助确定软件产品是否遭到破坏。
在 Oracle Solaris 产品注册表中查看要检查的软件的有关信息。
% prodreg browse -m name |
检验软件组件是否遭到破坏。
% prodreg info -u name-UUID -i 1 -d |
标识构成 name-UUID 软件组件的软件包。
% prodreg info -u name-UUID -i 1 -a PKGS |
此命令的输出可能有多页。
通过运行每个软件包的 pkginfo 命令验证在上一步中显示的软件包是否已安装在系统中。
% pkginfo component-a-pkg % pkginfo component-b-pkg . . . |
下面的示例演示如何确定 ExampleSoft 软件组件是否遭到破坏。
% prodreg browse -m Examplesoft BROWSE # +/-/. UUID # NAME ======== ===== ==================================== = ============ 1 - root 1 System Registry 2 + a01ee8dd-1dd1-11b2-a3f2-0800209a5b6b 1 Solaris 10 System Software 3 + 8f64eabf-1dd2-11b2-a3f1-0800209a5b6b 1 Unclassified Software 4 - 95842091-725a-8501-ef29-0472985982be 1 ExampleSoft 233 . 90209809-9785-b89e-c821-0472985982be 1 Example Doc 234 . EXSOzzt 1 235 . EXSOblob 1 Example Data |
ExampleSoft 的子组件 EXSOzzt 在 NAME 字段中没有相应的项。ExampleSoft 软件可能遭到破坏。可以使用带有 -u、-i 和 -d 选项的 prodreg info 命令来确定 ExampleSoft 软件是否遭到破坏。
% prodreg info -u 95842091-725a-8501-ef29-0472985982be -i 1 -d isDamaged=TRUE |
所输出的 isDamaged=TRUE 指示 ExampleSoft 软件遭到破坏。可以使用 prodreg info 命令的 -a PKGS 选项来标识 ExampleSoft 软件包。
% prodreg info -u 95842091-725a-8501-ef29-0472985982be -i 1 -a PKGS pkgs: EXSOzzt EXSOblob |
要检验 EXSOzzt 和 EXSOblob 软件包是否安装在系统上,可以使用 pkginfo 命令。
% pkginfo EXSOzzt ERROR: information for "EXSOzzt" was not found % pkginfo EXSOblob application EXSOblob Example Data |
pkginfo 命令的输出指示 EXSOzzt 软件包未安装在系统上,这说明 ExampleSoft 软件遭到破坏。
可以使用 prodreg 命令的 uninstall 子命令来从系统中删除软件。在使用 prodreg uninstall 命令卸载软件时,会同时删除指定的软件以及与该软件相关的所有子组件。在删除软件之前,检验其他软件是否依赖要卸载的软件。请参见如何检查软件相关性 (prodreg)。
在卸载软件之后,可以使用 prodreg unregister -r 命令从 Oracle Solaris 产品注册表中删除该软件及其所有的子组件。
成为超级用户或同等角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见 《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。
查看有关要卸载的软件的信息。
# prodreg browse -u name-UUID |
卸载该软件。
# prodreg uninstall -u name-UUID |
检查要卸载的软件的相关性。
# prodreg info -u name-UUID |
在 prodreg info 命令的输出中查看以下信息。
Child Components(子组件)-列出与 name 软件组件相关的软件组件。在注销 name 软件时,还会同时注销 name 软件的子组件。如果上述 prodreg info 命令的输出中列出了任何子组件,请检验是否要注销这些子组件。
Required Components(必需组件)-列出 name 软件组件所必需的软件组件。软件组件可能需要的其他组件并不是子组件。在卸载和注销某个组件时,将只卸载和注销子组件。
Dependent Components(依赖组件)-列出要求运行 name 软件的组件。在注销 name 软件时,还会同时注销 name 软件的依赖组件。如果 prodreg info 命令的输出中列出了任何依赖组件,请检验是否要注销这些依赖组件。
在前面的样例输出中,name 软件没有任何依赖组件。
检查 name 软件的子组件的相关性。
# prodreg info -u component-a-UUID -i l -a "Dependent Components" |
样例输出表明,没有依赖 name 软件的子组件的其他软件。
注销软件及其子组件。
# prodreg unregister -r -u name-UUID -i 1 |
以递归方式注销具有唯一标识符 name-UUID 的软件以及该软件的所有子组件。
指定要注销的软件的唯一标识符。
指定要注销的软件的实例。
下面的示例演示如何卸载 ExampleSoft 软件及其所有的子组件。
# prodreg browse -m "ExampleSoft" BROWSE # +/-/. UUID # NAME ======== ===== ==================================== = ============ 1 - root 1 System Registry 2 + a01ee8dd-1dd1-11b2-a3f2-0800209a5b6b 1 Solaris 10 System Software 3 + 8f64eabf-1dd2-11b2-a3f1-0800209a5b6b 1 Unclassified Software 1423 - 95842091-725a-8501-ef29-0472985982be 1 ExampleSoft 1436 . 90209809-9785-b89e-c821-0472985982be 1 Example Doc 1437 - EXSOzzt 1 Example Data 1462 . EXSOblob 1 Example Data # prodreg uninstall -u 95842091-725a-8501-ef29-0472985982be -i 1 # prodreg info -u 95842091-725a-8501-ef29-0472985982be Title: ExampleSoft Software . . . Child Components: Name UUID # -------------------------- ------------------------------------ - Example Doc 90209809-9785-b89e-c821-0472985982be 1 Example Data EXSOzzt 1 Required Components: Name UUID # -------------------------- ------------------------------------ - Example Doc 90209809-9785-b89e-c821-0472985982be 1 Example Data EXSOzzt 1 # prodreg info -u 90209809-9785-b89e-c821-0472985982be -i 1 -a "Dependent Components" Dependent Components: Name UUID # --------------------------- ------------------------------------ - ExampleSoft 95842091-725a-8501-ef29-0472985982be 1 # prodreg info -u EXSOzzt -i 1 -a "Dependent Components" Dependent Components: Name UUID # --------------------------- ------------------------------------ - ExampleSoft 95842091-725a-8501-ef29-0472985982be 1 # prodreg info -u EXSOblob -i 1 -a "Dependent Components" Dependent Components: Name UUID # --------------------------- ------------------------------------ - Example Data EXSOzzt 1 # prodreg unregister -r -u 95842091-725a-8501-ef29-0472985982be -i 1 |
如果尝试使用 prodreg uninstall 命令来卸载遭到破坏的软件,该命令可能会失败。如果软件组件的卸载程序已从系统中删除,则该命令可能会失败。
请按下列步骤卸载系统上没有相关卸载程序的软件组件。
成为超级用户或同等角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见 《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。
查看有关要卸载的软件的信息。
# prodreg browse -m "name" |
卸载该软件。
# prodreg uninstall -u UUID -i 1 |
标识软件组件的卸载程序。
# prodreg info -m "name" -a uninstallprogram |
确定卸载程序是否位于注册位置中。
# ls uninstaller-location uninstaller-location |
可通过下列方法之一从系统中删除软件:
下面的示例演示如何卸载遭到破坏的 ExampleSoft 软件。在本示例中,卸载程序不易于从系统备份中访问。
# prodreg browse -m Examplesoft BROWSE # +/-/. UUID # NAME ======== ===== ==================================== = ============ 1 - root 1 System Registry 2 + a01ee8dd-1dd1-11b2-a3f2-0800209a5b6b 1 Solaris 10 System Software 3 + 8f64eabf-1dd2-11b2-a3f1-0800209a5b6b 1 Unclassified Software 4 - 95842091-725a-8501-ef29-0472985982be 1 ExampleSoft 233 . 90209809-9785-b89e-c821-0472985982be 1 Example Doc 234 . EXSOzzt 1 235 . EXSOblob 1 Example Data # prodreg uninstall -u 95842091-725a-8501-ef29-0472985982be -i 1 The install program requested could not be found # prodreg info -m "ExampleSoft" -a uninstallprogram uninstallprogram: /usr/bin/java -mx64m -classpath /var/sadm/prod/org.example.ExampleSoft/987573587 uninstall_ExampleSoft # ls /var/sadm/prod/org.example.ExampleSoft/987573587 /var/sadm/prod/org.example.ExampleSoft/987573587: No such file or directory # prodreg unregister -u 95842091-725a-8501-ef29-0472985982be -i 1 # pkgrm EXSOblob |
如果其他软件依赖遭到破坏的软件组件,您可能希望重新安装遭到破坏的组件,而不是卸载该组件和依赖它的软件。可以使用带有 -f 选项的 prodreg unregister 命令来强制注销遭到破坏的组件,然后重新安装该组件。
成为超级用户或同等角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见 《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。
查看有关要重新安装的软件的信息。
# prodreg browse -m "name" |
标识依赖要重新安装的软件的软件。
# prodreg info -m "name" -a "Dependent Components" |
注销要重新安装的软件组件。
# prodreg unregister -f -u UUID |
重新安装该软件组件。
# /usr/bin/java -cp /usr/installers/installer |
installer 选项指定 name 软件的安装程序的名称。
下面的示例演示如何重新安装遭到破坏的软件组件 ComponentSoft,而不注销或卸载依赖组件 ExampleSoft。
# prodreg browse -m "ComponentSoft" BROWSE # +/-/. UUID # NAME ======== ===== ==================================== = ============ 1 - root 1 System Registry 2 + a01ee8dd-1dd1-11b2-a3f2-0800209a5b6b 1 Solaris 10 System Software 3 + 8f64eabf-1dd2-11b2-a3f1-0800209a5b6b 1 Unclassified Software 4 . 86758449-554a-6531-fe90-4352678362fe 1 ComponentSoft # prodreg info -m "ComponentSoft" -a "Dependent Components" Dependent Components: Name UUID # --------------------------- ------------------------------------ - ExampleSoft 95842091-725a-8501-ef29-0472985982be 1 # prodreg unregister -f -u 86758449-554a-6531-fe90-4352678362fe -i 1 # /usr/bin/java -cp /usr/installers/org.example.componentsoft |