Performed an upgrade of XCOM r11.6 to r12.0 on Linux. After the upgrade the xcomd daemon was not starting and failed with messages:
XCOMU0474E xcomd is already running. Multiple instances not supported.
XCOMU0466E Unable to create an index file for queue.
It was also noticed that the "$XCOM_HOME\q" directory was missing from the XCOM directory.
XCOM r12.0 for Linux
The "xcominstaller.log" file showed the following messages:
Installer has detected r11.6 SP01 64-bit was intalled but XCOM_HOME is blank on the system. Set XCOM_HOME correctly to upgrade to r12.0 SP00 64-bit. If using a non-interactive shell, ensure /etc/profile is loaded in the current shell.
Even though command "echo $XCOM_HOME" showed the correct path to the XCOM install directory before performing an upgrade.
It was determined that the Installer checks for the $XCOM_HOME variable and it does so by reading the /tmp directory after a file is produced in that /tmp directory that contains the variable information. The Installer also uses the /tmp to extract utilities in order to process the installer actions. If the /tmp contents cannot be read or executed the install/upgrade will encounter problems such as this one.
That led us to believe that one of the following is happening:
1. That the system does not have a /tmp directory defined or /tmp is read only.
2. That SELinux is enabled on the system and there are restrictions pertaining the /tmp directory, which was the scenario for this particular upgrade.
To address this do one of the following:
1. If command sestatus or getenforce shows the SELinux mode is "enforcing", issue commands:
setenforce 0; sh XCOM.bin
This will change SELinux from "enforcing" to "permissive" mode to allow the Installer to use the /tmp directory and installer contents for the install/upgrade.
Then after the installation revert the mode to "enforcing" using: setenforce 1
2. Set a temporary variable before starting the upgrade. For example issue the following commands:
export IATEMPDIR=/logfs
echo $IATEMPDIR
So instead of using /tmp/ it will use /logfs/ as a temporary directory and SELinux should allow that.
Note: Please consult with the Linux System Administrator before taking any action.