When installing ArcGIS for Server on a Red Hat Enterprise Linux (RHEL) platform without the Linux Standard Base (LSB) package, the Server Diagnostics tool fails to run and the following error is displayed, "<ArcGISServer extracted location>/serverdiag/.diag/common.sh". The script called in the installation throws the following errors for every diagnostics check:
[portal@redportal ArcGISServer]$ ./Setup
“<ArcGISServer extracted location>/serverdiag/.diag/common.sh: line 193: [: too many arguments”
“<ArcGISServer extracted location>/serverdiag/.diag/common.sh: line 195: [: !=: unary operator expected”
“<ArcGISServer extracted location>/serverdiag/.diag/common.sh: line 197: [: !=: unary operator expected”
“<ArcGISServer extracted location>/serverdiag/.diag/common.sh: line 199: [: !=: unary operator expected”
Installation still succeeds if errors are ignored. The following is a possible solution from a customer:
Most systems work because they have a command available that helps with the system discovery process. The code snippet is as below:
# Check for lsb_release executable
HAS_LSB="true"
[ ! -e /usr/bin/lsb_release ] && HAS_LSB="false"
The Red Hat Linux 6.2 version where the script works has the ‘lsb_release’ command while the 6.5 version does not. It is believed that there is still and issue with the script because the failure happens when it attempts to figure out the system without this command.
If the system is tested without this command installed (or comment out the code to use this other code in the script), the issue can be seen. The following lines are affected:
elif [ -f /etc/redhat-release ]; then
if [ `grep -i "Red Hat" /etc/redhat-release` != "" ]; then
DISTRO="RedHatEnterpriseServer"
elif [ `grep -i "CentOS" /etc/redhat-release` != "" ]; then
DISTRO="CentOS"
elif [ `grep -i "Scientific" /etc/redhat-release` != "" ]; then
DISTRO="Scientific"
elif [ `grep -i "Oracle" /etc/redhat-release` != "" ]; then
DISTRO="OracleServer"
fi
#
# SUSE
#
elif [ -f /etc/SuSE-release ]; then
DISTRO="SUSE LINUX"
#
# UBUNTU
#
elif [ -f /etc/os-release ]; then
if [ `grep -i "Ubuntu" /etc/os-release` != "" ]; then
DISTRO="Ubuntu"
fi
fi