An IDR can be superseded by a new IDR that addresses the same problem or by an SRU that fixes the problem. Get information about the content of the IDR package and use the -nv options to understand what the result of the pkg update or pkg install command will be.
Superseding IDR. IDRs can supersede other IDRs. Usually, an existing IDR is updated with new fixes, and a superseding IDR is not necessary. In some cases, modifying an existing IDR is not feasible and a new IDR is created that supersedes the previous IDR.
A superseding IDR is needed when a change would modify a package that is already modified by a different IDR. For example, IDR1 delivers a fix to usr/sbin/cron, which is part of the system/core-os package. IDR2 delivers unrelated fixes to other packages and includes a fix for usr/sbin/svcadm, which also is part of system/core-os. IDR1 and IDR2 cannot both modify the system/core-os package. A superseding IDR package is necessary and can take one of the following forms:
IDR2 includes the fix for IDR1. IDR2 supersedes IDR1. IDR1 is renamed to IDR2 so that when you explicitly install or update the IDR1 package, the IDR2 package is installed instead, and the IDR1 package is removed if it was already installed on your system.
IDR3 includes the fix for IDR1 and the fix for IDR2. IDR3 supersedes both IDR1 and IDR2.
Superseding SRU. If the issue addressed by the IDR is fixed in an SRU, then the IDR package will be renamed to the package where the fix was made. If you update to the SRU that installs the version of the package to which the IDR package was renamed, then the IDR package will be removed.
Update to an SRU that includes a newer version of the fixed package but does not fix the problem will be blocked. To accomplish the update, uninstall the IDR or reject the IDR package. Note, however, that using these methods to remove the IDR leaves the system exposed to the problems that the IDR addresses.
The following output shows that this image has version 1 of idr1834 installed. Version 2 of idr1834 is available from idr1929.2.p5p, which was added as a solaris publisher origin in How to Install an IDR.
$ pkg list -af 'idr*' NAME (PUBLISHER) VERSION IFO idr1834 2 --r idr1834 1 i-- idr1929 2 ---
Example 16, Show Whether an IDR is Renamed showed that in version 2, the idr1834 package is renamed to idr1929. When you update idr1834, the installed version 1 is removed and idr1929 is installed. No version of the idr1834 package is installed after the update.
$ pkg update -v idr1834 Packages to remove: 1 Packages to install: 1 Estimated space available: 30.42 GB Estimated space to be consumed: 718.51 MB Create boot environment: No Create backup boot environment: No Rebuild boot archive: No Changed packages: solaris idr1834 1,5.11:20150708T000258Z -> None idr1929 None -> 2,5.11:20150624T090120Z ... $ pkg list -af 'idr*' NAME (PUBLISHER) VERSION IFO idr1834 2 --r idr1834 1 --- idr1929 2 i--
If you tried to install idr1929 instead of update idr1834, that installation operation would have failed because idr1834 would still constrain the packages on the system to a lower version than the version to which idr1929 moves.Example 18 Update to an SRU That Fixes the IDR Issue
The following command lists all problems that are addressed by installed IDRs:
$ pkg contents -Ho value,pkg.name -t set -a name='*bug*' 'idr*'
Read the Readme file for the SRU to determine the problems that are fixed in the SRU. If all problems that are addressed by installed IDRs are fixed in the SRU, you can update to the SRU. To update to the newest SRU that is available from configured publishers, use the unconstrained pkg update command. To update to an intermediate SRU that fixes all problems that are addressed by installed IDRs, see Updating to a Version Older Than the Newest Version Allowed.
The fixed IDRs are automatically removed during the update.Example 19 Update to an SRU That Does Not Fix the IDR Issue
If the SRU does not update any packages that the IDR modifies, then the pkg update command will update to the SRU and the IDR will remain installed.
If the SRU updates any packages that the IDR modifies but does not fix the problem addressed by the IDR, then the update operation will fail. You could use the following command to remove the IDR and proceed with the update if you are willing to lose the fix that the IDR provides:
$ pkg update --reject idr1929
If you are not willing to lose the fix that the IDR provides, then contact your support representative and request a new IDR for that SRU revision. A new IDR will be generated that supersedes the existing IDR, enabling the system to be updated to the new SRU and IDR without losing the fixes.
If you update to an SRU that is not the newest available SRU, then you need to specify the superseding IDR package in the update. One way to do this is shown in the following example:
$ pkg update entire@intermediate-version superseding-idr '*'