I'm a debianist (please don't hit me, I come in peace), but we have some CentOS servers at work.
We use Abaqus mostly on windows, but we have an old installation process for it on CentOS 6.
This old procedure uses compat-libtermcap.i686 compat-libstdc++-33.i686 compat-libstdc++-33.x86_64 which do not exist anymore.
I'm trying to install Abaqus 2020 on CentOS 8.
From this link it should be just one yum command and then running the StartupGUI.sh script.
But doing that I get an error message :
Code: Select all
Action LaunchAppAction from feature CODE\\linux\_a64\\EXACloudView\_inst failed.
Action ID: CheckDeps
This error is apparently produced by the script "check-deps.sh"
(code here - it's a script that is created at installation, I didn't find it in the installation folder :)
Code: Select all
#!/bin/bash
# Check dependencies (libraries, 64-bit runtime ..)
# Environment variables that can be set to override default behaviour:
# NG_FORCE_SUCCESS: if set to a non-empty value, force to return with a success
# code even if the script failed to validate the environment
# Linux specific:
# NG_RUNTIME_32: "/usr/lib" 32-bit directory runtime
# NG_RUNTIME_64: "/usr/lib" 64-bit directory runtime
function warning {
printf "** WARNING: $* \n" >&2
}
function info {
printf "$* \n" >&2
}
function die {
printf "** ERROR: $* \n" >&2
if test -n "${NG_FORCE_SUCCESS}" ; then
info "Force mode activated (NG_FORCE_SUCCESS=1), trying to pursue..."
else
info "to ignore this error, just use: NG_FORCE_SUCCESS=1"
exit 1
fi
}
function dieLibNotFound {
die "Could not find a suitable library for $1 (arch: $2) in $3"
}
# Rewrite some message on stderr not to afraid customers too much
function pimpedldd {
ldd $* 2> >(sed "s/no version information available/compatible version found/" | uniq 1>&2)
}
# backup <file>
function backup {
target="$1"
if test -f "${target}" ; then
info "backuped ${target} as ${target}.backup"
rm -f "${target}.backup"
mv "${target}" "${target}.backup" || die "can not rename ${target}"
fi
return 0
}
# dedup symlinks within a single list of alternatives
function dedupFilesLongest {
ref=
sym=
max=0
for s in $* ; do
if ! f=$(readlink -f $s) ; then
return 1
fi
if ! test -n "$ref"; then
ref="$f"
elif ! test "$f" == "$ref" ; then
return 1
fi
l=$(echo "$s" | wc -c)
if test $l -gt $max ; then
max=$l
sym="$s"
fi
done
if ! test -n "$sym"; then
return 1
fi
echo "$sym"
return 0
}
# guessLink <source dir[ source dir..]> <regexp> <target dir> <target file name>
function guessLink {
# first arg is a space-sep list
for sourceDir in $1 ; do
sourcePattern="$2"
test -n "$2" || die "missing argument 2"
files=$(find "${sourceDir}"/ -maxdepth 1 -name "${sourcePattern}")
test -n "$3" || die "missing argument 3"
targetDir="$3"
test -n "$4" || die "missing argument 4"
targetFile="$4"
count=$(echo "$files" | wc -l)
# exactly one candidate found
if dedupfile=$(dedupFilesLongest $files) ; then
info "found ${dedupfile} => ${targetDir}/${targetFile}"
backup "${targetDir}/${targetFile}" \
|| die "can not backup ${targetDir}"
ln -sf "${dedupfile}" "${targetDir}/${targetFile}" \
|| die "can not create symbolic link"
return 0
elif test "$count" -gt 1 ; then
warning "multiple files found, do not known what to do: $files"
fi
done
return 1
}
function tryGeneric {
sourceFile="$1"
targetDir="$2"
targetFile="$3"
if test -f "${sourceFile}" ; then
case "${sourceFile##*.}" in
tgz|tar.gz)
info "found generic libraries replacement: $sourceFile => use it as ${targetDir}/${targetFile}"
tar xfz "${sourceFile}" --directory "${targetDir}/" \
|| die "could not extract ${targetFile} in ${targetDir}"
find "${targetDir}" -type f -exec chmod a+r {} \; \
|| die "could not chmod ${targetDir}/*"
;;
*)
info "found generic library replacement: $sourceFile => use it as ${targetDir}/${targetFile}"
zcat "${sourceFile}" > "${targetDir}/${targetFile}" \
|| die "could not create ${targetDir}/${targetFile}"
chmod a+r "${targetDir}/${targetFile}" \
|| die "could not chmod ${targetDir}/${targetFile}"
;;
esac
return 0
fi
return 1
}
function hasRPM {
rpm --quiet -q $1
return $?
}
function hasRPMArch {
rpm --quiet -q $1
if [ $? == 0 ]
then
rpm -q $1 --qf "%{NAME}-%{ARCH}\n"|grep --quiet $2
return $?
else
return 1
fi
}
function hasDEB {
dpkg -l "$1" > /dev/null
return $?
}
function isSuse12 {
if test -f /etc/SuSE-release
then
if `cat /etc/SuSE-release|grep -q "VERSION = 12"`
then
return 0
fi
fi
return 1
}
function isSuse15 {
if test -f /etc/SuSE-release
then
if `cat /etc/SuSE-release|grep -q "VERSION = 15"`
then
return 0
fi
fi
return 1
}
function isRedhat {
if test -f /etc/redhat-release
then
return 0
fi
return 1
}
function isRedhat7 {
if test -f /etc/redhat-release
then
grep -q " 7\." /etc/redhat-release
if [ $? = 0 ]
then
return 0
fi
fi
return 1
}
function isRedhat8 {
if test -f /etc/redhat-release
then
grep -q " 8\." /etc/redhat-release
if [ $? = 0 ]
then
return 0
fi
fi
return 1
}
function isUbuntu {
if test -x /usr/bin/lsb_release
then
if `lsb_release -i|grep -q Ubuntu`
then
return 0
fi
fi
return 1
}
function isDebian {
if test -x /usr/bin/lsb_release
then
if `lsb_release -i|grep -q Debian`
then
return 0
fi
fi
return 1
}
function checkRPM {
if ! hasRPM $1 ; then warning "\'$1\' ' package seems to be missing. Installation might fail."; fi
}
function checkRPMArch {
if ! hasRPMArch $1 $2 ; then warning "\'$1\' (arch: $2) package seems to be missing. Installation might fail."; fi
}
function copyAlienKitLibs {
src=osdat/$1
if ! test -d $src ; then
return
fi
file=imported-libs.txt
if ! test -f $file ; then
/usr/bin/find ${src} > $file
if test -f $file ; then
info "Copying additional libraries for $1 ..."
if ! /usr/bin/rsync -a ${src}/ . ; then
die "Could not copy libraries"
else
info "done"
fi
fi
fi
}
# Copy imported libraries (hack for redhat kit)
function checkAlienKit {
if isSuse12 || isSuse15; then
copyAlienKitLibs suse12
elif isUbuntu || isDebian; then
copyAlienKitLibs ubuntu
fi
}
function checkDEB {
if ! hasDEB $1 ; then warning "\'$1\' ' package seems to be missing. Installation might fail."; fi
}
function checkDeps {
if isSuse12
then
info "SuSE 12 release detected, checking installed packages"
checkRPM libaio1
checkRPM libbz2-1
checkRPM libgthread-2_0-0
checkRPM xorg-x11-server
checkRPM libpng12-0
checkRPM gd
checkRPM libjpeg62
#Qt
checkRPM libxslt1
elif isRedhat7
then
info "Redhat 7 release detected, checking installed packages"
checkRPM gd.x86_64
checkRPM openssl-1.0.*.x86_64
checkRPM libaio.x86_64
checkRPM zlib.x86_64
checkRPM bzip2-libs.x86_64
checkRPM libstdc++.x86_64
checkRPM glib2.x86_64
checkRPM xorg-x11-server-Xvfb.x86_64
checkRPM openldap.x86_64
checkRPM libpng12.x86_64
checkRPM dejavu-sans-fonts
# Qt
checkRPM libXrender.x86_64
checkRPM libXcomposite.x86_64
checkRPM libXext.x86_64
checkRPM mesa-libGL.x86_64
checkRPM libxcb.x86_64
checkRPM libX11.x86_64
checkRPM libdrm.x86_64
checkRPM libXau.x86_64
checkRPM libXxf86vm.x86_64
checkRPM libXdamage.x86_64
checkRPM libxslt.x86_64
checkRPM libxml2.x86_64
checkRPM xz-libs.x86_64
checkRPM pcre.x86_64
elif isRedhat8
then
info "Redhat 8 release detected"
else
if isUbuntu || isDebian
then
info "Ubuntu/Debian release detected, checking installed packages"
checkDEB libaio1
checkDEB libgd3
checkDEB libgl1-mesa-glx
checkDEB libxslt1.1
fi
die "Unsupported Linux distribution"
fi
}
function seLinuxIsEnabled {
if test -d "/selinux" ; then
if test -f "/selinux/enforce" ; then
if test "$(cat /selinux/enforce)" == "1"; then
return 0
fi
fi
elif test -f "/etc/selinux/config"; then
if grep -qE "^SELINUX=enforcing" /etc/selinux/config ; then
return 0
fi
fi
return 1
}
# Target
if test "$#" -ge 1 ; then
cd "$1" || die "can not find $1 directory"
fi
# Check for binaries
for i in uname ldd grep sed cut tr find ln rm mv zcat chmod ; do
type "$i" >/dev/null || die "$i not found"
done
# System dispatch
if test "$(uname)" == "Linux" ; then
checkAlienKit
checkDeps
# Check SELinux
if seLinuxIsEnabled ; then
warning "SELinux is enabled on this machine - some components may fail"
fi
info "Checking for dependencies..."
LIB64=
ROOTLIB64=
# explicit 64-bit directory
if test -d /usr/lib64 ; then
LIB64=/usr/lib64
fi
if test -d /lib64 ; then
ROOTLIB64=/lib64
fi
# override manually
if test -n "${NG_RUNTIME_64}"; then
if test -d "${NG_RUNTIME_64}" ; then
LIB64="${NG_RUNTIME_64}"
else
die "bad NG_RUNTIME_64: not a directory"
fi
fi
# root /lib
if test ! -n "${ROOTLIB32}" ; then
if test -d /lib ; then
ROOTLIB32=/lib
fi
elif test ! -n "${ROOTLIB64}" ; then
if test -d /lib ; then
ROOTLIB64=/lib
fi
fi
# Check for directories
test -d "amd64-linux" || die "amd64-linux directory not found"
test -d "amd64-linux/lib" || die "amd64-linux/lib directory not found"
# Check for library dependencies.
# We check ngexaberun and cvcommand
isOptional=
for testElf in \
lib/libngexaberun.so \
lib/libngcomexaleadgraph.so \
lib/libjnicomexaleadnetldap.so \
lib/libcomexaleadactionrules.so \
lib/libcomexaleadindexinganalysisprocessors.so \
lib/libcomexaleadindexquery.so \
lib/libcomexaleadindexsearch.so \
lib/libcomexaleadindexsearcher.so \
lib/libcomexaleadindexsynthesis.so \
lib/libngconvert-dynamic.so \
bin/cvcommand \
_OPTIONAL_ \
lib/oda-teigha/libTD_Db.so \
lib/oda-teigha/libTG_Db.so \
lib/qt5-commercial/libQt5Core.so \
lib/qt5-commercial/libQt5Network.so \
lib/qt5-commercial/libQt5Quick.so \
lib/qt5-commercial/libQt5Declarative.so \
lib/qt5-commercial/libQt5WebKit.so
do
for i in amd64-linux ; do
if test "${testElf}" = "_OPTIONAL_" ; then
isOptional=1
continue
fi
libDir="${LIB64}"
if test -d "/lib64/x86_64-linux-gnu" ; then
libDir="${libDir} /lib64/x86_64-linux-gnu"
fi
if test -d "/usr/lib64/x86_64-linux-gnu" ; then
libDir="${libDir} /usr/lib64/x86_64-linux-gnu"
fi
if test -d "/lib/x86_64-linux-gnu"; then
libDir="${libDir} /lib/x86_64-linux-gnu"
fi
if test -d "/usr/lib/x86_64-linux-gnu"; then
libDir="${libDir} /usr/lib/x86_64-linux-gnu"
fi
if test -d "${ROOTLIB64}"; then
libDir="${libDir} ${ROOTLIB64}"
fi
# ensure file is present
soFile="${i}/${testElf}"
test -f "${soFile}" \
|| test -n "$isOptional" \
|| die "${soFile} file not found"
test -f "${soFile}" \
|| continue
# check link dependencies
export LD_LIBRARY_PATH="${i}/lib:${soFile%/*}:${i}/lib/ngconvert:${i}/java-jre/lib/server/"
pimpedldd "${soFile}" >/dev/null \
|| die "can not ldd "${soFile}
MISSING=$(pimpedldd "${soFile}" \
| grep "not found" \
| sed -e 's/^[[:space:]]//' \
| cut -f1 -d' ' \
| tr '\n' ' ')
unset LD_LIBRARY_PATH
if test -n "$MISSING"; then
DEPFAILED=
for file in $MISSING ; do
case "${file}" in
libgd.so.2)
guessLink "$libDir" "libgd.so.2" \
"${i}/lib" "$file" \
|| guessLink "$libDir" "libgd.so.3" \
"${i}/lib" "$file" \
|| tryGeneric "osdat/${i}/libgd.tgz" \
"${i}/lib" "$file" \
|| dieLibNotFound "libgd.so.2" $i "$libDir"
;;
libcrypto.so*)
for j in lib lib/qt5-lgpl lib/qt5-commercial ; do
if test -d "${i}/${j}"; then
guessLink "$libDir" "libcrypto.so.1.0.0" \
"${i}/${j}" "$file" \
|| guessLink "$libDir" "libcrypto.so.1.0.*" \
"${i}/${j}" "$file" \
|| guessLink "$libDir" "libcrypto.so.*.*.*" \
"${i}/${j}" "$file" \
|| guessLink "$libDir" "libcrypto.so.*.*" \
"${i}/${j}" "$file" \
|| dieLibNotFound "libcrypto.so" $i "$libDir"
fi
done
;;
libssl.so*)
for j in lib lib/qt5-lgpl lib/qt5-commercial ; do
if test -d "${i}/${j}"; then
guessLink "$libDir" "libssl.so.1.0.0" \
"${i}/${j}" "$file" \
|| guessLink "$libDir" "libssl.so.1.0.*" \
"${i}/${j}" "$file" \
|| guessLink "$libDir" "libssl.so.*.*.*" \
"${i}/${j}" "$file" \
|| guessLink "$libDir" "libssl.so.*.*" \
"${i}/${j}" "$file" \
|| dieLibNotFound "libssl.so" $i "$libDir"
fi
done
;;
libaio.so*)
guessLink "$libDir" "libaio.so.*.*" \
"${i}/lib" "$file" \
|| guessLink "$libDir" "libaio.so.*" \
"${i}/lib" "$file" \
|| tryGeneric "osdat/${i}/libaio.so.1.0.1.gz" \
"${i}/lib" "$file" \
|| dieLibNotFound "libaio.so" $i "$libDir"
;;
libacl.so*)
guessLink "$libDir" "libacl.so.*.*" \
"${i}/lib" "$file" \
|| guessLink "$libDir" "libacl.so.*" \
"${i}/lib" "$file" \
|| tryGeneric "osdat/${i}/libacl.so.1.0.1.gz" \
"${i}/lib" "$file" \
|| dieLibNotFound "libacl.so" $i "$libDir"
;;
libiconv.so.2*)
guessLink "$libDir" "libiconv.so.2.*.*" \
"${i}/lib" "$file" \
|| guessLink "$libDir" "libiconv.so.2.*" \
"${i}/lib" "$file" \
|| tryGeneric "osdat/${i}/libiconv.so.2.1.0.1.gz" \
"${i}/lib" "$file" \
|| dieLibNotFound "libiconv.so.2" $i "$libDir"
;;
libbz2.so.1*)
guessLink "$libDir" "libbz2.so.1.*.*" \
"${i}/lib" "$file" \
|| guessLink "$libDir" "libbz2.so.1.*" \
"${i}/lib" "$file" \
|| guessLink "$libDir" "libbz2.so" \
"${i}/lib" "$file" \
|| dieLibNotFound "libbz2.so.1" $i "$libDir"
;;
libcurl.so.3*)
guessLink "$libDir" "libcurl.so.4" \
"${i}/lib" "$file" \
|| dieLibNotFound "libcurl.so.3" $i "$libDir"
;;
libldap_r-2.3.so.0)
guessLink "$libDir" "libldap_r-2.3.so.*" \
"${i}/lib" "$file" \
|| guessLink "$libDir" "libldap_r-2.4.so.2" \
"${i}/lib" "$file" \
|| guessLink "$libDir" "libldap_r-2.4.so.*" \
"${i}/lib" "$file" \
|| dieLibNotFound "libldap_r-2.3.so.0" $i "$libDir"
;;
liblber-2.3.so.0)
guessLink "$libDir" "liblber-2.3.so.*" \
"${i}/lib" "$file" \
|| guessLink "$libDir" "liblber-2.4.so.2" \
"${i}/lib" "$file" \
|| guessLink "$libDir" "liblber-2.4.so.*" \
"${i}/lib" "$file" \
|| dieLibNotFound "liblber-2.3.so.0" $i "$libDir"
;;
libpcre.so.0)
guessLink "$libDir" "libpcre.so.*" "${i}/lib" "$file" \
|| dieLibNotFound "libpcre.so.0" $i "$libDir"
;;
libpcre.so.1)
guessLink "$libDir" "libpcre.so.*" "${i}/lib" "$file" \
|| dieLibNotFound "libpcre.so.1" $i "$libDir"
;;
libpcre16.so.0)
guessLink "$libDir" "libpcre.so.*" "${i}/lib" "$file" \
|| dieLibNotFound "libpcre16.so.0" $i "$libDir"
;;
libglib-2.0.so.0)
guessLink "$libDir" "libglib-2.0.so.*" "${i}/lib" "$file" \
|| dieLibNotFound "libglib-2.0.so.0" $i "$libDir"
;;
libgobject-2.0.so.0)
guessLink "$libDir" "libgobject-2.0.so.*" "${i}/lib" "$file" \
|| dieLibNotFound "libgobject-2.0.so.0" $i "$libDir"
;;
libgthread-2.0.so.0)
guessLink "$libDir" "libgthread-2.0.so.*" "${i}/lib" "$file" \
|| dieLibNotFound "libgthread-2.0.so.0" $i "$libDir"
;;
libpng12.so.0)
guessLink "$libDir" "libpng12.so.0" "${i}/lib" "$file" \
|| dieLibNotFound "libpng12.so.0" $i "$libDir"
;;
*)
DEPFAILED=1
warning "missing dependency on $i architecture: $file ($testElf failed to load)"
;;
esac
done
test -n "$DEPFAILED" && die "one or more dependencies failed"
fi
done
done
fi
chmod ug+w productversion.txt || die "Permission change for productversion.txt failed."
info "Deps OK"
exit 0
Code: Select all
function isRedhat8 {
if test -f /etc/redhat-release
then
grep -q " 8\." /etc/redhat-release
if [ $? = 0 ]
then
return 0
fi
fi
return 1
}
Did anyone succeed in installing Abaqus 2020 on Centos 8 ?
By not getting this error or by solving it ?