sapconf/SOURCES/sapconf-check-required-glib...

82 lines
3.8 KiB
Diff

diff --git a/sapconf b/sapconf
index 5840b2c..97ea301 100644
--- a/sapconf
+++ b/sapconf
@@ -817,6 +817,68 @@ else
fi
}
+#####################################
+# function: check_glibc
+# parameters: none
+#
+# checks if the minimum version of glibc is installed
+function check_glibc() {
+for GLIBC_PACKAGE in $(rpm -q glibc)
+do
+ REQUIRED_MAJOR_VERSION=2
+ REQUIRED_MINOR_VERSION=17
+ REQUIRED_BUILD_VERSION=73
+ REQUIRED_BUILD_MINOR_VERSION=0
+ ARCHITECTURE=$(echo $GLIBC_PACKAGE | rev | cut -d'.' -f1 | rev)
+ MAJOR_VERSION=$(echo $GLIBC_PACKAGE | cut -d'-' -f2 | cut -d'.' -f1)
+ MINOR_VERSION=$(echo $GLIBC_PACKAGE | cut -d'-' -f2 | cut -d'.' -f2)
+ BUILD_VERSION=$(echo $GLIBC_PACKAGE | cut -d'-' -f3 | cut -d'.' -f1)
+ BUILD_MINOR_VERSION=$(echo $GLIBC_PACKAGE | rev | cut -d'.' -f2- | rev | cut -s -d'_' -f2 | cut -d'.' -f2)
+ UPDATE=0
+
+ if [ -z $BUILD_MINOR_VERSION ]; then
+ BUILD_MINOR_VERSION=0
+ fi
+
+ if [ $MAJOR_VERSION -lt $REQUIRED_MAJOR_VERSION ]; then
+ UPDATE=1
+ elif [ $MAJOR_VERSION -eq $REQUIRED_MAJOR_VERSION ]; then
+ if [ $MINOR_VERSION -lt $REQUIRED_MINOR_VERSION ]; then
+ UPDATE=1
+ elif [ $MINOR_VERSION -eq $REQUIRED_MINOR_VERSION ]; then
+ if [ $BUILD_VERSION -lt $REQUIRED_BUILD_VERSION ]; then
+ UPDATE=1
+ elif [ $BUILD_VERSION -eq $REQUIRED_BUILD_VERSION ]; then
+ if [ $BUILD_MINOR_VERSION -lt $REQUIRED_BUILD_MINOR_VERSION ]; then
+ UPDATE=1
+ else
+ UPDATE=0
+ fi
+ fi
+ fi
+ fi
+
+ if [ $UPDATE -eq 1 ]; then
+ if [ $CHECK_ONLY == 0 ]; then
+ out "Updating glibc ..."
+ yum -q -y update "glibc*.$ARCHITECTURE"
+ else
+ if [ $REQUIRED_BUILD_MINOR_VERSION -eq 0 ]; then
+ rec "Newer version of glibc is required. Minimum required glibc.$ARCHITECTURE version is glibc-$REQUIRED_MAJOR_VERSION.$REQUIRED_MINOR_VERSION-$REQUIRED_BUILD_VERSION.el7.$ARCHITECTURE."
+ rec "Installed version is glibc-$MAJOR_VERSION.$MINOR_VERSION-$BUILD_VERSION.el7.$ARCHITECTURE."
+ else
+ if [ $BUILD_MINOR_VERSION -eq 0 ]; then
+ rec "Newer version of glibc is required. Minimum required glibc.$ARCHITECTURE version is glibc-$REQUIRED_MAJOR_VERSION.$REQUIRED_MINOR_VERSION-$REQUIRED_BUILD_VERSION.el7_0.$REQUIRED_BUILD_MINOR_VERSION.$ARCHITECTURE. Installed version is glibc-$MAJOR_VERSION.$MINOR_VERSION-$BUILD_VERSION.el7.$ARCHITECTURE."
+ else
+ rec "Newer version of glibc is required. Minimum required glibc.$ARCHITECTURE version is glibc-$REQUIRED_MAJOR_VERSION.$REQUIRED_MINOR_VERSION-$REQUIRED_BUILD_VERSION.el7_0.$REQUIRED_BUILD_MINOR_VERSION.$ARCHITECTURE. Installed version is glibc-$MAJOR_VERSION.$MINOR_VERSION-$BUILD_VERSION.el7_0.$BUILD_MINOR_VERSION.$ARCHITECTURE."
+ fi
+ fi
+ fi
+ else
+ out "Required glibc.$ARCHITECTURE version is already installed"
+ fi
+done
+}
####################################################################################
#
@@ -894,6 +956,7 @@ for g in $SAPGROUPLIST; do
update_limits_conf @$g hard nofile 32800
update_limits_conf @$g soft nofile 32800
done
+check_glibc
out ""
if [ $CHECK_ONLY == 0 ]; then