How to Install an IDR on a Non-Global Zone

This procedure describes how to use the svc:/application/pkg/system-repository:default SMF service to install an IDR on a non-global zone.

The svc:/application/pkg/system-repository:default service is in the global zone and must be online before you can install an IDR safely.

  1. Determine the state of the svc:/application/pkg/system-repository:default service instance by running the svcs -xv command.
    # svcs -xv
    • Service instance online. The svcs -xv command produces no output and you can install the IDR safely. Go to Step 5.

    • Service instance in maintenance. The svcs -xv command shows output similar to the following:

      # svcs -xv
      
      svc:/application/pkg/system-repository:default (IPS System Repository)
       State: maintenance since 2025-04-04T07:24:15                                   
       Reason: Start method exited with $SMF_EXIT_ERR_FATAL.                          
         See: http://support.oracle.com/msg/SMF-8000-KS
         See: man -M /usr/share/man -s 8 pkg.sysrepo
         See: /var/svc/log/application-pkg-system-repository:default.log
       Impact: This service is not running.
  2. Determine why the service instance is in the maintenance state by viewing the /var/svc/log/application-pkg-system-repository:default.log log file.

    If the log includes entries similar to the following, you must update the IDR file permissions:

    pkg.sysrepo: unable to get publisher information: file repository file:///root/idr5760.1.p5p does not exist or is not accessible
    pkg.client.api_errors.PermissionsException: Could not operate on /var/tmp/idr5760.1.p5p

    These log entries indicate that the idr5760.1.p5p IDR file is not accessible by the user that runs the svc:/application/pkg/ssystem-repository:default service.

  3. Move the idr5760.1.p5p file to /var/tmp and update its file permissions.
    # mv idr5760.1.p5p /var/tmp
    # chmod 644 /var/tmp/idr5760.1.p5p
    # ls -l /var/tmp/idr5760.1.p5p
    -rw-r--r--   1 root     root     54999040 Apr  3 14:11 /var/tmp/idr5760.1.p5p
  4. Re-set the existing publisher to access the IDR file in its new location.
    1. View the publisher status.
      # pkg publisher
      PUBLISHER                   TYPE     STATUS P LOCATION
      solaris                     origin   online F file:///root/idr5760.1.p5p/
      solaris                     origin   online F http://ipkg.us.oracle.com/solaris11/support/
    2. Remove the original file:///root/idr5760.1.p5p IDR from the solaris publisher.
      # pkg set-publisher -G file:///root/idr5760.1.p5p/ solaris
    3. Verify that the original file:///root/idr5760.1.p5p IDR is no longer part of the solaris publisher.
      # pkg publisher
      PUBLISHER                   TYPE     STATUS P LOCATION
      solaris                     origin   online F http://ipkg.us.oracle.com/solaris11/support/
    4. Add the new file:///var/tmp/idr5760.1.p5p IDR to the solaris publisher.
      # pkg set-publisher -g /var/tmp/idr5760.1.p5p solaris
    5. Verify that the new file:///var/tmp/idr5760.1.p5p IDR is part of the solaris publisher.
      # pkg publisher
      PUBLISHER                   TYPE     STATUS P LOCATION
      solaris                     origin   online F file:///var/tmp/idr5760.1.p5p/
      solaris                     origin   online F http://ipkg.us.oracle.com/solaris11/support/
    6. Notify SMF that the system-repository:default service instance in the maintenance state has been repaired.
      # svcadm clear system-repository:default
    7. Verify that the system-repository:default service instance is online.
      # svcs -xv
  5. Install the IDR.
    # pkg install -r idr5760