The problem happens when installing NetBackup on non-global zones when client was already installed on the global zone.
The error complains that links /opt/pdag and /opt/pdshared already exist -
Please remove /opt/pdag and /opt/pdshared links and restart the installation.
NetBackup Deduplication, PDDO or Classic PureDisk Agent software
is incorrectly installed. Please remove /opt/pdag and
/opt/pdshared links and restart the installation.
PureDisk precheck failed. Resolve issues with PureDisk
installations and re-run this NetBackup installation script.
In the global zone when NetBackup client was installed, it created the following soft links -
ls -l /opt/pd*
lrwxrwxrwx 1 root root 28 Dec 16 11:14 pdag -> /usr/openv/pdde/pdopensource
lrwxrwxrwx 1 root root 24 Dec 16 11:14 pdshared -> /usr/openv/pdde/pdshared
These links can also be seen in all the non-global zones.
The error is coming from pdinstall, it first checks for existense of /etc/pdregistry.cfg and then looks for /opt/pdag and /opt/pdshared soft links.
Can get the same error by running the precheck -
Note: pdinstall can be found under <dir>/NetBackup_<release>_<OS_Platform>_<Hardware>/<OS>/catalog/anb/pdinstall
For example, for Solaris and NetBackup 7.5, it can be found here -
The precheck is failing with the error, if there is no /etc/pdregistry.cfg but the links for /opt/pdag and /opt/pdshared links are present.
To troubleshoot the pdinstall script and to see where it is failing, run it with "sh -x" in front of it -
sh -x pdinstall -precheck
Look for the check for /etc/pdregistry.cfg file and /opt/pdag, /opt/pdshared directories -
+ [ -f /etc/pdregistry.cfg ]
+ [ ! -d /opt/pdag -a ! -d /opt/pdshared ]
Look for any errors after that check.
As a workaround copy the /etc/pdregistry.cfg from the global to the local zone, the precheck should work after that.
After that the install was still hanging, the install log showed the following -
Same version is already installed. Nothing to upgrade for package VRTSpbx
Installation log located here: /var/tmp/installpbx-*.log
Unpacking SYMCnbclt package.
Checking for pre-existing SYMCnbclt package.
Installing SYMCnbclt package.
Checked install trace under /usr/openv/tmp/install_cltpkg_trace.<pid>, it was prompting pkgadd for input -
WARNING: The <VRTSpbx> package "Symantec Private Branch Exchange" is a prerequisite package and is not completely installed.
Do you want to continue with the installation of <SYMCnbclt> [y,n,?]
This was the reason for the hang as it cannot interact with the installer.
The reason for the hang is that VRTSpbx package was installed in all zones during the install
of the client in the global zone. In this case it is crucial that it gets installed in the current zone only as /opt is shared, so need to create a link from /opt/VRTSpbx to a non-shared location, so each zone gets a non-shared copy of PBX (Note: this only needs to be done if /opt is managed by the global zone).
To resolve the hang -
1. Stop PBX in the global zone
2. Uninstall PBX in the global zone, which will uninstall it from the global zones and also all non-global zones -
3. Confirmed in all zones that VRTSpbx was uninstalled
4. If /opt is managed by global zone, create /var/VRTSpbx and link it to /opt/VRTSpbx
On both global and non-global zones -
Only on global zone -
ln -s /var/VRTSpbx /opt/VRTSpbx
5. Reinstall PBX in the global zone only
(Note: "-z" flag in installpbx allows it to be installed in the current zone.)
installpbx -z -f PBX.tar.gz
6. Modify client_config script so it has "-z" flag for installpbx -
installpbx -z -f PBX.tar.gz
7. Rerun NetBackup install in the non-global zone. It will work now.
NetBackup client was installed in the global zone and the server meets the description from technote TECH65627 of
"has a sparse non-global zone using a read-only loopback device for the /usr directory".
The non-global zones are spare-root (as opposed to whole-root) zones. This means
that the system software directories & files are made available via readonly access to the global zone.
/opt is managed by the global zone, the same way as /usr. This allows to install
software under /opt in the global zone and have it immediately available to
all the non-global zones.