How to do a non-root install with IDM patches

  • 7002532
  • 03-Feb-2009
  • 26-Apr-2012

Environment

Novell Identity Manager 3.6

Situation

Can you install IDM patches with a non-root installation?   Is this supported ?
This would apply to the IDM 3.5.1 and 3.6.0 engine patches and any driver patches that use RPMs.
Using sudo appears to fail on some installs with a failed dependencies error.
Here is an example of the error with the 3.5.1 engine patch install:
error: Failed dependencies:
NDSserv is needed by novell-DXMLengn-3.5.12-20080307.i386
NDScommon is needed by novell-DXMLengn-3.5.12-20080307.i386
novell-DXMLevent is needed by novell-DXMLengn-3.5.12-20080307.i386
The non-root installation of eDirectory isn't really a installation, instead of installing the packages the installation extracts them, the IDM installation is using some kind of script, but doesn't update the rpm database either.

Resolution

This works and is supported.
a) don't use sudo, this needs to be installed as the user that owns the non-root install of eDirectory
b) you need to add --dbpath /home/gerard/edir/eDirectory/rpm to the rpm command lines to tell rpm to use the local rpm database instead of the system one
c) the easiest way to make sure the upgrade is done exactly right for non-root is to make a copy of the original install image in a writable directory and replace the updated rpm's with the new ones and rerun the non-root installer. Since the rpms have version numbers in the names, you need to make sure you delete the old ones because copying the new ones will not overwrite the old ones. For Solaris this is the only way to do the update because the script doesn't use the system package manager at all.
 
Below is an example of how to do the install:
Assuming during the installation the customer followed the documentation and specified '/idm/eDirectory883/eDirectory' as the first parameter to the 'idm-nonroot-install' script, use the following command for each of the RPMs:
<quote shell="/bin/bash">
export ROOTDIR=/idm/eDirectory883/eDirectory
rpm --dbpath $ROOTDIR/rpm
--relocate=/usr=$ROOTDIR/opt/novell/eDirectory
--relocate=/etc=$ROOTDIR/etc
--relocate=/opt/novell/eDirectory=$ROOTDIR/opt/novell/eDirectory
--relocate=/opt/novell/dirxml=$ROOTDIR/opt/novell/dirxml
--relocate=/var=$ROOTDIR/var --badreloc --nodeps --replacefiles
<rpmFileGoesHere.rpm>
</quote>
If they are in the directory where the RPMs are located:
export ROOTDIR=/idm/eDirectory883/eDirectory
for i in `ls -1 *.rpm`; do
rpm --dbpath $ROOTDIR/rpm
--relocate=/usr=$ROOTDIR/opt/novell/eDirectory
--relocate=/etc=$ROOTDIR/etc
--relocate=/opt/novell/eDirectory=$ROOTDIR/opt/novell/eDirectory
--relocate=/opt/novell/dirxml=$ROOTDIR/opt/novell/dirxml
--relocate=/var=$ROOTDIR/var --badreloc --nodeps --replacefiles $i
done