Uninstalling Packages

Use the pkg uninstall command to remove installed packages.

When a package is uninstalled, the command output is very similar to the output when a package is installed, with “Packages to remove” instead of “Packages to install”, for example.

The --reject option of the pkg install command can also remove installed packages, as described in Rejecting a Package.

Uninstalling a package can cause a mediated link to be removed as described in Setting a Preferred Path that is Not Available: Consequences and Recovery. Use the -nv or -nvv options to check whether a mediated link will be removed.

For information about how a file action with certain attributes is treated when the package that delivers the file is uninstalled, see File Actions in Packaging and Delivering Software With the Image Packaging System in Oracle Solaris 11.4 or the pkg(7) man page.

Example 3-1 Undoing a Package Installation

Uninstalling a package does not uninstall dependencies of that package. A user might want to continue to use the content delivered by a dependency package even if the only package that requires the dependency is uninstalled.

If you want to undo a package installation operation so that you uninstall all packages that the installation operation installed, use the pkg history command to determine exactly what was installed. See Viewing Operation History for more information.

In the example shown in Previewing Package Installation, four packages were installed. However, the following command shows that only the package named on the command line is removed by uninstall:

$ pkg uninstall -v oracle-rdbms-server-18c-preinstall
            Packages to remove:         1
     Estimated space available: 852.20 GB
Estimated space to be consumed: 455.25 MB
          Rebuild boot archive:        No

Changed packages:
solaris
  group/prerequisite/oracle/oracle-rdbms-server-18c-preinstall
    11.4-11.4.0.0.1.10.0 -> None
...

The pkg list command shows that the other three packages that were installed are still installed:

$ pkg -R /mnt list oracle-rdbms-server-18c-preinstall system/kernel/oracka \
x11/diagnostic/x11-info-clients x11/library/libdmx
NAME (PUBLISHER)                               VERSION                    IFO
system/kernel/oracka                           11.4-11.4.0.0.1.10.1       i--
x11/diagnostic/x11-info-clients                7.7-11.4.0.0.1.10.0        i--
x11/library/libdmx                             1.1.3-11.4.0.0.1.10.0      i--

pkg list: no packages matching the following patterns are installed:
  oracle-rdbms-server-18c-preinstall

To undo this installation if you do not have the original pkg install output, find the list of packages that were installed in the history. Use a short listing to find the installation command that you want, and then use the -l option to list exactly what was installed at that time (-t), as shown in Viewing Operation History. The list is at the end of the output under the heading End State.

$ pkg history -n 1
START                    OPERATION                CLIENT             OUTCOME
2018-08-06T12:36:43      install                  pkg                Succeeded
$ pkg history -lt 2018-08-06T12:36:43
         Operation: install
...
           Command: /usr/bin/pkg install --be-name rdbms oracle-rdbms-server-18c-preinstall
...
         End State:
None -> pkg://solaris/x11/diagnostic/x11-info-clients@7.7,5.11-11.4.0.0.1.10.0:20180702T172622Z
None -> pkg://solaris/group/prerequisite/oracle/oracle-rdbms-server-18c-preinstall@11.4,5.11-11.4.0.0.1.10.0:20180702T172914Z
None -> pkg://solaris/system/kernel/oracka@11.4,5.11-11.4.0.0.1.10.1:20180702T144645Z
None -> pkg://solaris/x11/library/libdmx@1.1.3,5.11-11.4.0.0.1.10.0:20180702T172638Z

Example 3-2 Specifying Multiple Packages to Uninstall

If you specify multiple packages to the pkg uninstall command, or if you specify options such as -r to perform this operation in non-global zones, you might be attempting to uninstall a package that is not installed in that image.

If you attempt to uninstall a package that is not currently installed, the pkg uninstall operation exits without uninstalling any packages.

When a package to be uninstalled does not exist in that image, a message about no matching packages is displayed for that package name. If additional packages to be uninstalled do exist in the image, no message is displayed to tell you that those packages were not uninstalled.

To uninstall all specified packages that are installed and skip the operation for any specified packages that are not installed, use the --ignore-missing option. The --ignore-missing option ignores packages that are not installed and prevents pkg uninstall from failing if some packages to uninstall are not currently installed.

In the following command, if one zone does not have the git package installed, no packages are uninstalled, even if some zones do have git installed:

$ pkg uninstall -r git

In the following command, the git package is uninstalled from any zone where it is currently installed:

$ pkg uninstall -r --ignore-missing git

Example 3-3 Uninstalling a Package that is Required by Another Package

Attempting to uninstall a package that is required by another installed package fails.

For example, if you try to uninstall the libdmx package while the x11-info-clients package is still installed, you receive the following error message:

$ pkg uninstall libdmx
pkg uninstall: Unable to remove 'x11/library/libdmx@1.1.3-11.4.0.0.1.10.0' due to the following packages that depend on it:
  x11/diagnostic/x11-info-clients@7.7-11.4.0.0.1.10.0

To uninstall libdmx, you must uninstall both libdmx and x11-info-clients. Recall that simply uninstalling x11-info-clients does not uninstall the dependent package libdmx.

$ pkg uninstall x11-info-clients libdmx

Example 3-4 Uninstalling a Package that is a group Dependency

When you uninstall a package that is a group dependency, that package is placed on the avoid list. See Avoiding Installing Some Packages in a Group Package for information about the avoid list.

$ pkg avoid
$ pkg uninstall mysql-56
...
$ pkg list mysql-56
pkg list: no packages matching the following patterns are installed:
  mysql-56
$ pkg avoid
    database/mysql-56 (group dependency of 'group/feature/amp')