prodreg(1M) System Administration Commands prodreg(1M)NAMEprodreg - Solaris Product Registry administration
SYNOPSISprodreg [--help] | [subcommand operand ...]
DESCRIPTION
The prodreg utility browses, unregisters, and uninstalls components in
the Solaris Product Registry.
Some installers make use of the libwsreg(3LIB) interface to register
information. The Solaris Product Registry contains information about
this installed software.
The database associated with the Solaris Product Registry is relative
to the root of the installed file system. Normally, this is the root of
the file system (/). Sometimes, an alternate root, with a different
Solaris Product Registry install database is used, as during live
upgrade installation. See live_upgrade(5).
The Registry database informs installers about installed software. The
Registry and the prodreg utility do not directly perform installation
or deinstallation. prodreg supports installers which are executed
externally and launched by the prodreg utility or other means.
Depending on the subcommand, the prodreg command offers equivalent
functions from the command line or a GUI viewer. Two versions of the
GUI viewer are available. The default is the Java Swing GUI. The other
version, the Java awt GUI is provided for environments without Java
Swing support.
The only feature which exists in the CLI which is not present in the
GUI is the unregister subcommand. It is possible for the product reg‐
istry to become corrupted, if for example, some software is removed
manually instead of by means of an uninstaller program. These entries
can confuse installers which are run subsequently. The unregister sub‐
command allows stale entries to be removed, even forcefully. Care
should be exercised when unregistering software with the recursive or
force options so that valid entries in the registry are not removed by
mistake.
The prodreg command, whether it launches the GUI or the command line
interface browser, displays the contents of the registry at that time
only. If software is installed or uninstalled subsequent to or concur‐
rent with launching either prodreg viewer, the view can be inconsistent
with the Solaris Product Registry.
SUBCOMMANDS
You can specify options to the prodreg command without specifying a
subcommand. If the subcommand is omitted, the swing subcommand is
assumed.
The following subcommands are supported:
awt Launch the Java awt GUI.
The awt subcommand has the following for‐
mat:
awt [-R alt_root | --help]
browse Display the Solaris Product Registry using
a command line interface. The text output
of this command displays identifying infor‐
mation of any component in the product reg‐
istry tree, including its ancestors and
children. If you repeatedly invoke this
subcommand, you can interactively browse
the product registry.
The database components are related as a
tree. Components may have one or more chil‐
dren. Except for the root, components have
one parent. This subcommand displays the
ancestors and children for a given compo‐
nent in the Solaris Product Registry data‐
base.
Each time the prodreg browse subcommand is
executed, one component in the Registry is
shown, along with its ancestry to the root
of the Registry, as well as the component's
children. To browse in the prodreg GUI, a
user selects a node to expand and clicks on
it. The analogous activity using the com‐
mand line interface is to browse on chil‐
dren of nodes successively, which effec‐
tively expands a view into the registry.
Start by browsing the root of the Registry
with prodreg browse. Select components to
expand the scope of the browsing activity.
Use browse numbers as a convenience during
this interactive browsing, but not in
scripts. Browse numbers can change from one
session to the next or on different sys‐
tems. This is because browse numbers are
generated as they are first used, by a
given user on a particular system.
The browse subcommand has the following
format:
browse [-R alt_root] [-u uuid [-i instance | -p location]]
browse [-R alt_root] -n bnum [-i instance | -p location]
browse [-R alt_root] -m name
browse --help
This following information is output for
each component:
BROWSE # This is the browse number asso‐
ciated with each component.
This number can be used as an
argument to either the prodreg
browse or info subcommands as a
convenience
+/-/. The + indicates a component in
the tree with children who are
not shown. - indicates a compo‐
nent with children of which at
least one child is being shown.
The . indicates a component
which has no children. This
field is arranged so that each
space (reading left to right)
depicts a successive genera‐
tion.
UUID This is the component's unique
identifier.
# This is the instance number of
the component. Software compo‐
nents can be installed multiple
times. The software registry
assigns a unique instance to
each one.
NAME Each component in the Solaris
Product Registry database has a
localized name which is dis‐
played in this field. It is
possible that this name may not
be unique in the registry since
there could be another compo‐
nent that has the same name.
The browse subcommand provides four dis‐
tinct options for viewing the registry
database. If multiple instances are associ‐
ated with the same component, then the out‐
put of the subcommand is the ambiguous
list. The request must be made unambiguous.
The instance or location operands can be
used to disambiguate the browse subcommand
when used with the -u or -n options.
o If no operand information is
given, the root of the registry
tree is displayed, as well as
its children. This is the start‐
ing point for interactive brows‐
ing of the entire registry data‐
base.
o If the browse number is given,
the component associated is out‐
put.
o If the uuid is given, the compo‐
nent associated with it is out‐
put.
o If the name is given, the compo‐
nent associated with it is out‐
put.
info Display attributes for any component in the
Solaris Product Registry by supplying iden‐
tifying information for the component.
Components in the product registry are
associated with attributes. These
attributes are composed of a name and a
single value string.
This subcommand outputs attribute informa‐
tion associated with components in the
Solaris Product Registry. Individual compo‐
nents in the product registry are specified
as for the browse subcommand, except that
either the uuid, name or bnum must be spec‐
ified.
If a component requested is ambiguous as it
has more than one instance or the name is
assigned to more than one component in the
registry, the list of possibilities is out‐
put, not the attribute information.
The default output of this subcommand is a
complete list of each attributes, each on a
new line. The attribute name is followed by
a colon (:) and a SPACE. The attribute
value follows, after which a RETURN is
appended. Other options include can be
specified using -a and -d.
The info subcommand has the following for‐
mat:
info --help
info [-R alt_root] -u uuid [-i instance | -p location]
info [-R alt_root] -n bnum [-i instance | -p location]
info [-R alt_root] -m name [-a attr | -d ]
help | --help | -? Display help text.
The help subcommand has the following for‐
mat:
help | --help | -?
swing Launch the Java Swing GUI. If the Java
Swing GUI is not available, this subcommand
fails.
The swing subcommand has the following for‐
mat:
swing [-R alt_root | --help]
version | --version | -V Outputs a current version string.
The version subcommand has the following
format:
version | --version | -V
unregister Unregister an entry in the registry.
Remove a component from the Solaris Product
Registry. The component corresponding to
the uuid specified with the -u option must
be a single instance. If it is not, the
subcommand fails and returns the list of
instances with the associated uuid. The
subcommand must be reissued using either -p
or -i to uniquely determine which component
instance to unregister.
The unregister subcommand fails if there
are components in the registry which depend
on the component which is to be unregis‐
tered.
The unregister subcommand fails if the user
does not have write access to the registry.
See wsreg_can_access_registry(3WSREG). The
unregister subcommand fails if the user
attempts to unregister a system component,
instead of a component registered with the
Solaris Product Registry. System components
include those which include the attribute
PKG and certain special Registry nodes
including the following:
UUID Name
==================================== =============================
root System Registry
a01ee8dd-1dd1-11b2-a3f2-0800209a5b6b Solaris System Software
8f64eabf-1dd2-11b2-a3f1-0800209a5b6b Unclassified Software
b96ae9a9-1dd1-11b2-a3f2-0800209a5b6b System Software Localizations
b1c43601-1dd1-11b2-a3f2-0800209a5b6b Additional System Software
a8dcab4f-1dd1-11b2-a3f2-0800209a5b6b Software Localizations
Before the unregister subcommand with the
-f option is used, you should carefully
review what components depend upon the com‐
ponent which is to be unregistered. The -r
option is even more dangerous, since all
children and software components depending
upon the component are also deregistered.
You can obtain the list of dependent compo‐
nents for a component with UUID uuid using
:
prodreg info -u uuid -a "Dependent Components"
You can obtain a list of required compo‐
nents using:
prodreg info -u <uuid> -a "Required Components"
The output lists the name, UUID and
instance of the component.
The unregister subcommand has the following
format:
unregister [-R alt_root] [-fr] -u uuid [-p location | -i instance]
unregister --help
uninstall Launch an uninstaller program.
Each component in the registry can have an
uninstaller associated with it. This sub‐
command executes this associated installer,
if there is one, for a component in the
registry given by the -u option. If there
is no uninstaller associated with the com‐
ponent, the subcommand fails. If the compo‐
nent given by the -u option is not unique
(as there is more than one instance of the
component installed), the subcommand out‐
puts a list of all instances. The subcom‐
mand must then be reissued using -i or -p
to disambiguate the uuid given with the -u
option. Finally, if the component to unin‐
stall is depended upon by other components,
the command fails.
The command may also launch an uninstaller
with a -x option. No checks for whether
this uninstalls a component upon which
other components depend in this case.
The uninstall command is not executed if
the user does not have write access to the
registry. See wsreg_can_access_reg‐
istry(3WSREG).
The uninstall command has the following
format:
uninstall [-R alt_root] [-f] -u uuid -p location
uninstall [-R alt_root] -i instance[arguments ...]
uninstall --help
OPTIONS
The awt subcommand supports the following options:
--help Display help text, do not launch the viewer.
-R alt_root Use the specified alternate root to locate the database
to display with the GUI viewer.
See OPERANDS for information regarding specification of
alt_root.
Note -
The root file system of any non-global zones must not
be referenced with the -R option. Doing so might dam‐
age the global zone's file system, might compromise
the security of the global zone, and might damage the
non-global zone's file system. See zones(5).
The browse subcommand supports the following options:
-help Display help text, do not execute the browse subcommand.
-i instance Output the specified component instance.
-m name Output the component instances associated with the name.
-n bnum Output the component instances associated with the
browse number.
-p location Output the component instance installed in the specified
location. The install location for a component can be
obtained using the 'info' subcommand.
-R alt_root Use the specified alternate root to locate the database.
Note -
The root file system of any non-global zones must not
be referenced with the -R option. Doing so might dam‐
age the global zone's file system, might compromise
the security of the global zone, and might damage the
non-global zone's file system. See zones(5).
-u uuid Output the component instances associated with the uuid.
The info subcommand supports the following options:
-a attr Output only the attribute whose name is given by the op‐
erand 'attr', instead of all attributes of the specified
component.
-d Output only the attribute whose name is isDamaged,
instead of all attributes of the specified component. If
the value is set to true, this attribute indicates that
the component in the registry
--help Output help text, do not execute the browse subcommand.
-i instance The instance operand distinguishes among multiple
instances of components with the same uuid or browse
number.
-m name The name operand indicates one or more components in the
registry.
-n bnum Output the attributes of the component instance associ‐
ated with the browse number bnum. If there is more than
one instance, the command must be disambiguated using
the -ior -p options.
-p location The install location indicated distinguishes among mul‐
tiple instances of components with the same uuid or
browse number.
-R alt_root Use the specified alternate root to locate the database.
Note -
The root file system of any non-global zones must not
be referenced with the -R option. Doing so might dam‐
age the global zone's file system, might compromise
the security of the global zone, and might damage the
non-global zone's file system. See zones(5).
-u uuid Output the attributes of the component instance associ‐
ated with the uuid. If there is more than one instance,
the subcommand must be disambiguated using the -i or -p
options.
The swing subcommand supports the following options:
--help Output help text, do not execute the install subcommand.
-R alt_root Use the specified alternate root to locate the database.
Note -
The root file system of any non-global zones must not
be referenced with the -R option. Doing so might dam‐
age the global zone's file system, might compromise
the security of the global zone, and might damage the
non-global zone's file system. See zones(5).
The uninstall subcommand supports the following options:
-f Force the uninstall. A forced subcommand uninstalls all
instances of a component, even if there are multiple
ambiguous instances of the uuid operand.
--help Output help text, do not execute the unregister subcom‐
mand.
-i instance Disambiguate the uuid operand.
-p location Disambiguate the uuid operand. location corresponds to
the where the software component was installed.
-R alt_root Use the specified alternate root to locate the database.
Note -
The root file system of any non-global zones must not
be referenced with the -R option. Doing so might dam‐
age the global zone's file system, might compromise
the security of the global zone, and might damage the
non-global zone's file system. See zones(5).
-u uuid Unregister the uuid component. If this component has
been installed multiple times, the instance to unregis‐
ter must be indicated unambiguously by using the -i or
-p option.
The unregister subcommand supports the following options:
-f Force the unregistration. A forced subcommand unregis‐
ters a component even if there are other components
which are dependent on this component.
--help Output help text, do not execute the unregister subcom‐
mand.
-i instance Disambiguate the uuid operand.
-p location Disambiguate the uuid operand. The location corresponds
to the where the software component was installed.
-r Causes a recursive deregistration of a component as well
as that component's children and dependencies.
-R alt_root Use the specified alternate root to locate the database.
Note -
The root file system of any non-global zones must not
be referenced with the -R option. Doing so might dam‐
age the global zone's file system, might compromise
the security of the global zone, and might damage the
non-global zone's file system. See zones(5).
-u uuid Unregister component uuid of the component to unregis‐
ter. If this component has been installed multiple
times, the instance to unregister must be indicated
unambiguously by using the -i or -p option.
OPERANDS
The following operands are supported:
alt_root Pathname to a file indicating an alternate root. The
Solaris Product Registry database is located relative to
the alternate root. If database relative to this location
does not exist, it is created.
Note -
The root file system of any non-global zones must not be
referenced by alt_root. Doing so might damage the global
zone's file system, might compromise the security of the
global zone, and might damage the non-global zone's file
system. See zones(5).
attr Name of an attribute. This operand is used only with the
info subcommand. If attr is associated with a component,
the attribute name and value is displayed.
bnum The browse number.
Each component in the Solaris Product Registry is associ‐
ated with a browse number. This number is generated for the
convenience of an interactive user. The browse number can
change if the system is rebooted or reinstalled. Do not
store or use the browse number except to facilitate the
browse and info subcommands. Browse numbers are always out‐
put by the prodreg browse subcommand. Only these values can
be used as input values to the browse or info subcommand.
instance Software can be installed in more than one location. The
Solaris Product Registry associates a unique instance num‐
ber for each. The browse subcommand shows the instance num‐
ber associated with each component in the registry. The
instance operand is used to distinguish between installed,
and possibly different, copies of software, when such
exist.
location A path to a specific file or directory in the file system.
This operand indicates the installed location of registered
software. For instance, if software is installed relative
to /usr/local the value of this operand would be
/usr/local. The install location is used to installer or to
indicate the location of an installer or to disambiguate
which instance is intended, of a software component which
can have multiple instances.
name Each software component in the Solaris Product Registry is
associated with a name. This name is output by the browse
subcommand. Some subcommands allow the user to input the
software by name as an operand as a convenience. These
names might not be unique. If the user supplies an ambigu‐
ous name, for which more than one components exist, the
subcommand outputs a list of possible choices. The name can
be localized; depending on the language setting the name
can differ.
uuid Each software component in the Solaris Product Registry is
associated with a unique identifier. This identifier is a
handle which accesses an entry in the registry database.
The uuid corresponds to the component irrespective of how
many instances of the component have been installed, and
what the localized name of the component is.
EXAMPLES
Example 1 Using the prodreg Command to Browse
Browsing is performed by means of the prodreg browse subcommand. Using
these requests iteratively, one can peruse the tree, much as one would
using a GUI by expanding components which are collections of other com‐
ponents. Browsing using browse numbers for convenience should be done
only during this iterative browsing process, since the numbers are gen‐
erated as a result of the browsing operation.
Evoking the browse subcommand without any arguments browses from the
top of the registry. The output varies depending on the software
installed on a particular system.
$ 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
The output of this command lists the browse number, UUID, instance num‐
ber and name of the root component and its children. The ancestors of a
component, each parent up to the root, are also shown. The +/-/. column
indicates whether the component in the tree is an expanded parent (-),
a child with children (+) or a child without children (.).
Example 2 Requesting Information About the Components in a Tree
The UUID, name and browse number fields can be used to request browsing
information about components in the tree. The next example shows how a
component can be browsed by UUID.
$ prodreg browse -u a01ee8dd-1dd1-11b2-a3f2-0800209a5b6b
BROWSE # +/-/. UUID # NAME
======== ===== ==================================== = ===========
1 - root 1 System
Registry
2 - a01ee8dd-1dd1-11b2-a3f2-0800209a5b6b 1 Solaris 10
System
Software
4 + b96ae9a9-1dd1-11b2-a3f2-0800209a5b6b 1 System
Software
Localizations
5 + SUNWCall 1 Entire
Distribution
Example 3 Browsing a Node by Name
The following example shows how a node can be browsed by name.
$ prodreg browse -m "System Software Localizations"
BROWSE # +/-/. UUID # NAME
======== ===== ==================================== = ===========
1 - root 1 System
Registry
2 - a01ee8dd-1dd1-11b2-a3f2-0800209a5b6b 1 Solaris 10
System
Software
4 - b96ae9a9-1dd1-11b2-a3f2-0800209a5b6b 1 System
Software
Localizations
316 . SUNWceuow 1 Central
Europe OW
Support
317 . SUNWcsfw 1 Simplified
Chinese
freeware
message
318 . SUNWceuox 1 Central
Europe
64-bit OS
Support
Example 4 Browsing Iteratively
Additional output has been omitted. As a convenience, the browse number
can be used for iterative browsing. This number should not be stored,
as it differs depending on which system the prodreg command is run on,
which user is running the command, and the log in session in which the
command is run.
$ prodreg browse -n 3
BROWSE # +/-/. UUID # NAME
======== ===== ==================================== = ===========
1 - root 1 System
Registry
2 - a01ee8dd-1dd1-11b2-a3f2-0800209a5b6b 1 Solaris 10
System
Software
5 - SUNWCall 1 Entire
Software
Distribution
6 . SUNWrsmo 1 RSMPI
Operations
Registration
Module
7 + SUNWCjvx 1 JavaVM
(64-bit)
8 . SUNWrsmx 1 Remote
Shared
Memory
(64-bit)
9 + SUNWCacc 1 System
Accounting
Example 5 Browsing Using an Ambiguous Value
If the requested value is ambiguous, the list of ambiguous instances
are displayed. In the following example, there are two distinct soft‐
ware components with the same name.
$ ./prodreg browse -m JavaVM
The request failed because multiple components correspond to the
criteria given. Use the list of possible components given below,
select one and try again.
BROWSE # +/-/. UUID # NAME
======== ===== ==================================== = ===========
12 . org.spybeam.javavm 1 JavaVM
51 . SUNWCjv 1 JavaVM
Issue one of the following requests again:
$ prodreg browse -u SUNWCjv
or
$ prodreg browse -u org.spybeam.javavm
Example 6 Browsing Multiple Installations of Software
Another possible ambiguous response arises when a particular software
component is installed multiple times. In the example below Example
software is registered three times.
$ prodreg browse -m Example
The request failed because multiple components correspond to the
criteria given. Use the list of possible components given below,
select one and try again.
BROWSE # +/-/. UUID # NAME
======== ===== ==================================== = ===========
7 . org.spybeam.example 2 Example
7 . org.spybeam.example 3 Example
7 . org.spybeam.example 1 Example
The component requested could not be found.
Example 7 Browsing Using a Particular Instance
The request can be repeated specifying a particular instance to disam‐
biguate it. It is also possible to disambiguate a request with the -p
option, followed by the install location. In this case, to browse the
first instance of the Example software, one would use the command:
$ prodreg browse -u org.spybeam.example -i 1
Example 8 Using the info Subcommand
The install location, as well as other attributes of a component can be
obtained with the info subcommand. The info subcommand accepts the same
disambiguating options and returns all the attributes of a component,
each on a single line.
$ prodreg info -m Example
The request failed because multiple components correspond to the
criteria given. Use the list of possible components given below,
select one and try again.
BROWSE # +/-/. UUID # NAME
======== ===== ==================================== = ===========
7 . org.spybeam.example 2 Example
7 . org.spybeam.example 3 Example
7 . org.spybeam.example 1 Example
The component requested could not be found.
This variation of the info subcommand outputs all information associ‐
ated with instance 1 of the Example component. The output from this
variation is not displayed
$ prodreg info -u org.spybeam.example -i 1
Example 9 Obtaining Information on the Install Location
You can use the info subcommand to obtain the install location and
other attributes of a component. The info subcommand accepts the same
disambiguating options as the browse subcommand. It returns all the
attributes of a component, each on a single line. You can also request
a single attribute.
The following command outputs the value of the install location
attribute:
$ prodreg info -n 23 -a Location
Example 10 Idenitifying and Unregistering Damaged Software
Removing installed software without using the associated uninstaller
can damage the software in the registry. A damaged component indicates
that certain software is installed, when in fact it is not present. A
component can be damaged by removing files or packages directly, with‐
out running the associated uninstaller. The general rule to follow is:
If software has been installed by an installer program, it should be
uninstalled using the supplied uninstaller program.
This example shows how to identify and repair damaged software compo‐
nents so that software can be reinstalled.
Browsing for Examplesoft, produces the following:
$ 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
The Examplesoft child EXSOzzt, representing a package component of reg‐
istered software does not display its name. This is likely to be
because the software Examplesoft is damaged. Verify this with the fol‐
lowing command:
$ prodreg info -u 95842091-725a-8501-ef29-0472985982be \
-i 1 -d
isDamaged=TRUE
Since Damaged is TRUE, some part of Examplesoft is damaged. The follow‐
ing command lists the packages which make up Examplesoft:
$ prodreg info \
-u 95842091-725a-8501-ef29-0472985982be\
-i 1 -a PKGS pkgs:
EXSOzzt EXSOblob
Use the pkginfo command to verify if EXSO is installed:
$ pkginfo EXSOzzt
ERROR: information for "EXSOzzt" was not found
$ pkginfo EXSOblob
application EXSOblob Example Data
The output of these commands shows that the package EXSOzzt has been
removed, probably with the pkgrm command. The Examplesoft software will
probably not function. To repair the software, one should run the
uninstaller registered with Examplesoft. You probably need to run the
uninstaller with root permissions, as it unregisters the software and
runs pkgrm commands. Both of these operations require root permissions.
# prodreg uninstall -u 95842091-725a-8501-ef29-0472985982be -i 1
The install program requested could not be found.
Something is wrong, or else you would be able to access uninstall pro‐
gram to uninstall the software. One possibility is that the uninstaller
program has been removed manually. It is possible to determine where
the uninstaller is located by requesting the uninstallprogram
attribute:
$ prodreg info -m ExampleSoft -a uninstallprogram
uninstallprogram: /usr/bin/java -mx64m -classpath
/var/sadm/prod/org.example.ExampleSoft/987573587 uninstall_ExampleSoft
Check to see if there is an uninstaller in the registered location.
# ls /var/sadm/prod/org.example.ExampleSoft/987573587
/var/sadm/prod/org.example.ExampleSoft/987573587:
No such file or directory
Since there is no uninstaller at the desired location, you have two
options. One is to load the uninstaller from back up storage and run it
manually. Use the command line stored in the registry:
# /usr/bin/java -mmx64m -classpath \
/var/sadm/prod/org.example.ExampleSoft/987573587 \
uninstall_ExampleSoft
If there is no other possibility, manually unregister the software.
# prodreg unregister -u 95842091-725a-8501-ef29-0472985982be -i 1
This does not remove the remaining package EXSOblob. You must do this
manually.
# pkgrm EXSOblob
Example 11 Removing Multiple Components
Component A has children B and C, and C has children D and E, and the
you wish to remove all of the components at once. This is useful if the
whole hierarchy has to be reinstalled and the uninstaller has been lost
or cannot be run
$ prodreg browse -u UUID-of-C
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 - UUID-of-A 1 Example A
1436 . UUID-of-B 1 Example B
1437 - UUID-of-C 1 Example C
1462 . UUID-of-D 1 Example D
1463 . UUID-of-E 1 Example E
# prodreg uninstall -u UUID-of-A -i 1
The uninstall subcommand can fail various ways, for example if the java
classes have been removed, if the user has insufficient permissions or
if Java software is not present on the system. The recursive unregis‐
tration subcommand is very powerful and dangerous. Not only does it
unregister every child of a component, it also unregisters every compo‐
nent which depends upon the component to unregister. It is a good idea
to view all information about the component to determine if any compo‐
nents will be unintentionally unregistered with UUID-of-A.
$ prodreg info -u UUID-of-A
Title: Example A Software
Version: 5.8.0.2001.11.02
Location: /usr
Vendor: Example Vendor
uninstallprogram: /usr/bin/java -mx64m -classpath
/var/sadm/prod/org.example.ExampleA/90820965 uninstall_ExampleA
vendorurl: http://www.example.org
description: Example A Software has many uses
Supported Languages: en
Child Components:
Name UUID #
---------------------------------------------------------------
Example B UUID-of-B 1
Example C UUID-of-C 1
Required Components:
Name UUID #
---------------------------------------------------------------
Example B UUID-of-B 1
Example C UUID-of-C 1
No software depends on Example A, or else an additional field, Depen‐
dent Components would be shown. To further ensure that there are no
surprises, one should examine the dependent components and children of
UUID-of-B and UUID-of-C, all the components which depend on UUID-of-B,
UUID-of-C and their children, and so on.
If you examine the browse tree, you know the entire list of descendents
of UUID-of-A. You can also examine the dependent component attributes
of all of Example A's descendents.
$ prodreg info -u UUID-of-B -i 1 -a "Dependent Components"
Dependent Components:
Name UUID #
----------------------------------------------------------------
Example A UUID-of-A 1
$ prodreg info -u UUID-of-C -i 1 -a "Dependent Components"
Dependent Components:
Name UUID #
----------------------------------------------------------------
Example A UUID-of-A 1
$ prodreg info -u UUID-of-D -i 1 -a "Dependent Components"
Dependent Components:
Name UUID #
----------------------------------------------------------------
Example C UUID-of-C 1
$ prodreg info -u UUID-of-E -i 1 -a "Dependent Components"
Dependent Components:
Name UUID #
----------------------------------------------------------------
Example C UUID-of-C 1
A recursive unregistration of Example A only results in unregistering
Example A and its descendents, as intended.
# prodreg unregister -r -u UUID-of-A -i 1
Example 12 Reinstalling a Damaged Component
In this example, there is a component, Software ZZZ which is depended
upon by other software. Software ZZZ has been damaged and you need to
reinstall it. The reinstallation is impossible until Software ZZZ is
unregistered.
First, you check what depends upon Software ZZZ:
$ prodreg info -m "Software ZZZ" -a "Dependent Components"
Dependent Components:
Name UUID #
----------------------------------------------------------------
Software Foobar d9723500-9823-1432-810c-0100e09832ff 1
Normally, you would have to uninstall Software Foobar before unregis‐
tering Software ZZZ, since Software Foobar depends on Software ZZZ. You
decide that it is impossible or unreasonable to reinstall Software Foo‐
bar. Performing a recursive unregister of Software ZZZ is not an option
as it would unregister Software Foobar as well. Instead you can do a
forced unregister of Software ZZZ. The UUID of Software ZZZ is
90843fb1-9874-3a20-9b88-984b32098432.
# prodreg unregister -f -u 90843fb1-9874-3a20-9b88-984b32098432 -i 1
You can then reinstall Software ZZZ:
# /usr/bin/java -cp /usr/installers/org.example.softwarezzz
BUGS
The registry can become out of date because of software being manually
removed, or removed using pkgrm(1M) directly. To avoid damaging the
registry, use uninstall programs to remove software which was initially
installed using an install program.
ENVIRONMENT VARIABLES
The following environment variable affects the execution of prodreg:
PKG_INSTALL_ROOT If present, defines the full path name of a direc‐
tory to use as the system's PKG_INSTALL_ROOT path.
All product and package information files are then
looked for in the directory tree, starting with the
specified PKG_INSTALL_ROOT path. If not present,
the default system path of / is used.
EXIT STATUS
The following exit values are returned:
0 Successful completion.
>0 An error occurred.
ATTRIBUTES
See attributes(5) for descriptions of the following attributes:
┌─────────────────────────────┬─────────────────────────────┐
│ ATTRIBUTE TYPE │ ATTRIBUTE VALUE │
├─────────────────────────────┼─────────────────────────────┤
│Availability │system/management/product- │
│ │registry, SUNWwsrv │
├─────────────────────────────┼─────────────────────────────┤
│Interface Stability │Committed │
└─────────────────────────────┴─────────────────────────────┘
SEE ALSOpkgadd(1M), pkgrm(1M), wsreg_can_access_registry(3WSREG), libws‐
reg(3LIB), live_upgrade(5), attributes(5)
Application Packaging Developer's Guide
NOTES
The prodreg GUI and command line interface view both the Solaris Prod‐
uct Registry and the package database. Both look like components in the
registry, but some of these cannot be unregistered or uninstalled.
Packages do not have an associated uninstaller, so they cannot be unin‐
stalled using the prodreg uninstall subcommand. Solaris packages cannot
be unregistered using the prodreg unregister subcommand. Packages are
removed using the pkgrm(1M) command, after which time the packages do
not appear in the GUI or CLI prodreg viewer.
It is preferable to remove software using the uninstaller associated
with the software installed than to remove individual packages using
pkgrm(1M), since the uninstaller software takes care of comprehensive
removal of all resources associated with the installed software,
including unregistering information in Registry and removing the appro‐
priate packages.
The prodreg uninstall subcommand launches an external program. The com‐
mand line conventions of these programs have to be used to indicate the
alternate root for the product registry. Another possibility is to use
the PKG_INSTALL_ROOT environment variable for this purpose as the
install program is executed in the same environment as prodreg. Unin‐
stall programs are frequently java classes which require Java to be
installed. If Java software has been removed or is missing from a
Solaris distribution, it is impossible to run java based uninstallers.
Only the prodreg unregister and uninstall subcommands can only be run
with root permissions. This is because they modify the product registry
in the case of unregister, and remove packages in the case of unin‐
stall. The other operations merely read the registry and can be run
with any user permissions. The prodreg uninstall subcommand might
require root permissions as well, as installers can execute commands
such as pkgadd(1M) or pkgrm(1M) which require root permissions to run.
Attributes associated with components are documented in various places
-primarily in the Application Packaging Developer's Guide. The
attributes associated with the Solaris Product Registry itself are
described in the following glossary.
Dependent Components List of components upon which the component
depends.
Location The location relative to which software was
installed.
pkgs List of packages which correspond to the compo‐
nent. These packages are added with pkgadd
after the component is registered. They are
removed with pkgrm before the component is
unregistered.
Required Components List of components on which the component
depends.
Source Media from which the install was done.
Supported Languages List of locales for which there are registered
titles.
Title Name given by the prodreg browse subcommand.
This name can be localized to the locale in
which the shell is running.
Unique Name Name used by previous versions of the Solaris
Product Registry. This value is often set to
the package name corresponding to a given com‐
ponent in the registry.
Vendor Vendor who produced the component.
Version Version string associated with the component.
The Registry can contain components which do not correspond to software
actually installed on the system. This can be detected several ways.
The easiest is to check using the info subcommand if a component is
damaged. Another way is to determine where software was installed using
the info subcommand, and verify it is still there.
SunOS 5.11 6 Apr 2005 prodreg(1M)