系统管理指南:基本管理

使用 Oracle Solaris 产品注册表命令行界面管理软件

prodreg 命令是 Oracle Solaris 产品注册表的命令行界面 (command-line interface, CLI)。prodreg 命令支持几个允许您管理系统上软件的子命令。

可以在终端窗口中使用 prodreg 命令来执行下列任务:

有关如何使用命令行界面来管理 Oracle Solaris 产品注册表的更多信息,请参见 prodreg(1M) 手册页。

Procedure如何查看有关已安装或已卸载软件的信息 (prodreg)

可以使用 prodreg 命令的 browse 子命令,在终端窗口中的 Oracle Solaris 产品注册表中查看有关软件的信息。

  1. 打开终端窗口。

  2. 浏览 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 子命令显示有关已注册软件的以下信息。

    BROWSE #

    使用 prodreg browse 命令时,Oracle Solaris 产品注册表会为每个已注册的软件组件生成一个浏览编号。此编号用作 prodreg browse 命令或 info 子命令的参数,可向下派生已注册的特定组件的分层结构。


    注 –

    在重新引导或重新安装系统时,浏览编号可能会变化。不要将浏览编号存储在脚本中,也不要尝试在不同的登录会话中重新使用它们。


    +/-/.

    此字段指示软件组件是否具有其他子软件组件并已在 Oracle Solaris 产品注册表中注册。

    此字段中显示下列字符:

    • + 指示软件组件具有当前未显示出来的其他子组件。

    • - 指示软件组件具有当前显示出来的其他子组件。

    • . 指示软件组件没有子组件。

    UUID

    此字段列出软件在 Oracle Solaris 产品注册表中的唯一标识符。

    #

    此字段指示系统上软件组件的实例编号。如果系统中包含某个软件组件的多个实例,则 Oracle Solaris 产品注册表会为该组件的每个实例都指定一个单独的实例编号。

    NAME

    此字段列出软件的本地化名称。在此样例输出中,Oracle Solaris OS 的名称是 Oracle Solaris 10 系统软件。

  3. 浏览 Oracle Solaris 产品注册表中列出的某个软件组件的信息。


    % prodreg browse  -m "name"
    

    -m "name" 命令可显示有关名为 name 的软件组件的信息。

  4. 如果系统中包含 name 软件的多个实例,请键入以下命令来浏览 Oracle Solaris 产品注册表:


    % prodreg browse  -u name-UUID -i 
    instance -n number
    
    -u name-UUID

    显示有关具有唯一标识符 name-UUIDname 软件组件的信息。

    -i instance

    显示有关具有实例编号 instancename 软件组件的信息。

    -n number

    通过引用组件的浏览编号 number 来显示软件信息。

  5. 对于您要浏览的每个软件组件,重复步骤 3步骤 4


示例 21–1 按组件名称查看软件信息 (prodreg)

下面的示例演示如何通过引用组件的名称来查看软件信息。


% 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"


示例 21–2 按组件的浏览编号来查看软件信息 (prodreg)

下面的示例演示如何使用带有 -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


示例 21–3 按组件 UUID(Universal Unique Identifier,通用唯一标识符)查看软件信息 (prodreg)

下面的示例演示如何使用带有 -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

Procedure如何查看软件属性 (prodreg)

可以使用 prodreg 命令的 info 子命令来查看特定的软件属性。

prodreg info 命令可显示有关已注册软件的各种信息,其中包括以下各项:

  1. 打开终端窗口。

  2. 浏览 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
  3. 查看所列出的某个软件组件的属性。


    % prodreg info  -m "name"
    

    -m "name" 命令可显示名为 name 的软件组件的属性。

  4. 对于您要查看的每个软件组件,重复步骤 3


示例 21–4 按组件名称查看软件属性 (prodreg)

下面的示例演示如何通过引用组件的名称来查看软件属性。


% 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"


示例 21–5 按组件的浏览编号来查看软件属性 (prodreg)

下面的示例演示如何使用带有 -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


示例 21–6 按组件的 UUID 查看软件属性 (prodreg)

下面的示例演示如何使用带有 -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

Procedure如何检查软件相关性 (prodreg)

可以使用 prodreg info 命令来查看依赖特定软件组件的组件。在卸载特定组件之前,可能希望检查软件产品之间的相关性。

  1. 打开终端窗口。

  2. 浏览 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)

  3. 查看特定软件组件的相关性。


    % prodreg info -m "name" -a "Dependent Components"
    
    -mname

    显示名为 name 的软件组件的属性。

    -a “Dependent Components”

    通过显示 Dependent Components(依赖组件)属性的值来显示依赖 name 软件的组件。

    此命令的输出可列出依赖 name 软件的软件组件。


示例 21–7 查看依赖其他软件产品的组件 (prodreg)

下面的示例演示如何查看依赖 ExampleSoft 软件产品的组件。


% prodreg -m "ExampleSoft" -a "Dependent Components"
Dependent Components:
Name                         UUID                                  #
---------------------------  ------------------------------------  -
ExampleSoftA                 7f49ecvb-1ii2-11b2-a3f1-0800119u7e8e  1

Procedure如何标识遭到破坏的软件产品 (prodreg)

如果不使用相应的卸载程序来删除已安装的软件文件或软件包,可能会破坏系统上的软件。如果软件遭到破坏,软件可能无法正常运行。可以使用 prodreg 命令的 info 子命令来帮助确定软件产品是否遭到破坏。

  1. 在 Oracle Solaris 产品注册表中查看要检查的软件的有关信息。


    % prodreg browse -m name
    
  2. 检验软件组件是否遭到破坏。


    % prodreg info -u name-UUID -i 1 -d
    
  3. 标识构成 name-UUID 软件组件的软件包。


    % prodreg info -u name-UUID -i 1 -a PKGS
    

    此命令的输出可能有多页。

  4. 通过运行每个软件包的 pkginfo 命令验证在上一步中显示的软件包是否已安装在系统中。


    % pkginfo component-a-pkg
    % pkginfo component-b-pkg
    .
    .
    .

示例 21–8 标识遭到破坏的软件组件 (prodreg)

下面的示例演示如何确定 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 的子组件 EXSOzztNAME 字段中没有相应的项。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

要检验 EXSOzztEXSOblob 软件包是否安装在系统上,可以使用 pkginfo 命令。


% pkginfo EXSOzzt 
ERROR: information for "EXSOzzt" was not found 

% pkginfo EXSOblob
application EXSOblob       Example Data

pkginfo 命令的输出指示 EXSOzzt 软件包未安装在系统上,这说明 ExampleSoft 软件遭到破坏。


Procedure如何卸载软件 (prodreg)

可以使用 prodreg 命令的 uninstall 子命令来从系统中删除软件。在使用 prodreg uninstall 命令卸载软件时,会同时删除指定的软件以及与该软件相关的所有子组件。在删除软件之前,检验其他软件是否依赖要卸载的软件。请参见如何检查软件相关性 (prodreg)

在卸载软件之后,可以使用 prodreg unregister -r 命令从 Oracle Solaris 产品注册表中删除该软件及其所有的子组件。

  1. 成为超级用户或同等角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见 《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 查看有关要卸载的软件的信息。


    # prodreg browse -u name-UUID
    
  3. 卸载该软件。


    # prodreg uninstall -u name-UUID 
    
  4. 检查要卸载的软件的相关性。


    # 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 软件没有任何依赖组件。

  5. 检查 name 软件的子组件的相关性。


    # prodreg info -u component-a-UUID -i l -a "Dependent Components"
    

    样例输出表明,没有依赖 name 软件的子组件的其他软件。

  6. 注销软件及其子组件。


    # prodreg unregister -r -u name-UUID -i 1
    
    -r

    以递归方式注销具有唯一标识符 name-UUID 的软件以及该软件的所有子组件。

    -u name-UUID

    指定要注销的软件的唯一标识符。

    -i 1

    指定要注销的软件的实例。


示例 21–9 卸载软件组件 (prodreg)

下面的示例演示如何卸载 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

Procedure如何卸载遭到破坏的软件 (prodreg)

如果尝试使用 prodreg uninstall 命令来卸载遭到破坏的软件,该命令可能会失败。如果软件组件的卸载程序已从系统中删除,则该命令可能会失败。

请按下列步骤卸载系统上没有相关卸载程序的软件组件。

  1. 成为超级用户或同等角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见 《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 查看有关要卸载的软件的信息。


    # prodreg browse -m "name"
    
  3. 卸载该软件。


    # prodreg uninstall -u UUID -i 1
    
  4. 标识软件组件的卸载程序。


    # prodreg info -m "name" -a uninstallprogram
    
  5. 确定卸载程序是否位于注册位置中。


    # ls uninstaller-location uninstaller-location
    
  6. 可通过下列方法之一从系统中删除软件:

    • 如果系统上有备份,请执行以下步骤:

      1. 从备份中装入卸载程序。

      2. 从 shell 命令行界面(如终端窗口)运行卸载程序。

    • 如果无权访问备份中的卸载程序,请执行以下步骤:

      1. 注销软件组件。


        # prodreg unregister -u UUID -i 1
        
      2. 删除要卸载的软件所必需的任何其余注册组件。


        # pkgrm component-a-UUID
        

示例 21–10 卸载遭到破坏的软件 (prodreg)

下面的示例演示如何卸载遭到破坏的 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

Procedure如何重新安装遭到破坏的软件组件 (prodreg)

如果其他软件依赖遭到破坏的软件组件,您可能希望重新安装遭到破坏的组件,而不是卸载该组件和依赖它的软件。可以使用带有 -f 选项的 prodreg unregister 命令来强制注销遭到破坏的组件,然后重新安装该组件。

  1. 成为超级用户或同等角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见 《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 查看有关要重新安装的软件的信息。


    # prodreg browse -m "name"
    
  3. 标识依赖要重新安装的软件的软件。


    # prodreg info -m "name" -a "Dependent Components"
    
  4. 注销要重新安装的软件组件。


    # prodreg unregister -f -u UUID
     
    
  5. 重新安装该软件组件。


    # /usr/bin/java -cp /usr/installers/installer
    

    installer 选项指定 name 软件的安装程序的名称。


示例 21–11 重新安装遭到破坏的软件组件 (prodreg)

下面的示例演示如何重新安装遭到破坏的软件组件 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