#!/bin/bash # # $Id: post-install 3705 2013-08-07 19:47:20Z dhill $ # # Post-install steps for columnstore install prefix=/usr/local installdir=$prefix/mariadb/columnstore rpmmode=install user=`whoami 2>/dev/null` quiet=0 for arg in "$@"; do if [ `expr -- "$arg" : '--prefix='` -eq 9 ]; then prefix="`echo $arg | awk -F= '{print $2}'`" installdir=$prefix/mariadb/columnstore elif [ `expr -- "$arg" : '--rpmmode='` -eq 10 ]; then rpmmode="`echo $arg | awk -F= '{print $2}'`" elif [ `expr -- "$arg" : '--installdir='` -eq 13 ]; then installdir="`echo $arg | awk -F= '{print $2}'`" prefix=`dirname $installdir` prefix=`dirname $prefix` elif [ `expr -- "$arg" : '--user='` -eq 7 ]; then user="`echo $arg | awk -F= '{print $2}'`" elif [ `expr -- "$arg" : '--quiet'` -eq 7 ]; then quiet=1 elif [ `expr -- "$arg" : '--plugin='` -eq 9 ]; then plugin="`echo $arg | awk -F= '{print $2}'`" else echo "post-install: ignoring unknown argument: $arg" 1>&2 fi done if [ $user != "root" ]; then export COLUMNSTORE_INSTALL_DIR=$installdir export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$installdir/lib:$installdir/mysql/lib else # add library config file /bin/cp -f $installdir/bin/columnstore.conf /etc/ld.so.conf.d/. >/dev/null 2>&1 ldconfig >/dev/null 2>&1 fi #check 64-bit OS compatiable arch=`uname -m` patcnt=`expr "$arch" : 'i.86'` is64bitos=1 if [ $patcnt -ne 0 ]; then is64bitos=0 fi is64bitpkg=1 file $installdir/bin/PrimProc | grep '64-bit' >/dev/null 2>&1 if [ $? -ne 0 ]; then is64bitpkg=0 fi if [ $is64bitpkg -eq 1 -a $is64bitos -ne 1 ]; then echo "ERROR: Incompatiable Version, package is intended for a x86_64 architecture" echo "exiting...." exit 1 fi if [ ! -f $installdir/etc/Columnstore.xml ]; then echo "$installdir/etc/Columnstore.xml not found, exiting" exit 1 fi cd $installdir/lib || exit 1 touch /dev/shm/columnstore-test && rm /dev/shm/columnstore-test if [ $? -ne 0 ] ; then echo "User $user will need R/W access to /dev/shm." exit 1 fi #remove libudfsdk.so.1.0.0 file, if it exist # mcol-875 rm -f $installdir/lib/libudfsdk.so rm -f $installdir/lib/libudfsdk.so.1 rm -f $installdir/lib/libudfsdk.so.1.0.0 for lib in *.so.1.0.0; do blib=`basename $lib .1.0.0` ln -sf $lib $blib ln -sf $lib ${blib}.1 done for lib in *.so.1.1.0; do blib=`basename $lib .1.1.0` ln -sf $lib $blib ln -sf $lib ${blib}.1 done chown -h $user.$user *.so >/dev/null 2>&1 if [ -f libstdc++.so.6.0.14 ]; then ln -sf libstdc++.so.6.0.14 libstdc++.so.6 chown -h $user.$user libstdc++.so.6 >/dev/null 2>&1 fi # softlink for libperl.sp, used by cplogger ln -s /usr/lib64/perl5/CORE/libperl.so /usr/lib64/libperl.so >/dev/null 2>&1 if [ $installdir != "/usr/local/mariadb/columnstore" ]; then sed -i -e s@/usr/local/mariadb/columnstore@$installdir@g $installdir/bin/columnstoreAlias fi if [ $user != "root" ]; then if [ -f $prefix/.bash_profile ]; then profileFile=$prefix/.bash_profile elif [ -f $prefix/.profile ]; then profileFile=$prefix/.profile else profileFile=$prefix/.bashrc touch $prefix/.bashrc fi if [ ! -f ${profileFile}_backup ]; then cp $profileFile ${profileFile}_backup fi egrep -qs 'MariaDB Columnstore Non-Root Environment Variables' ${profileFile} rc1=$? if [ $rc1 -ne 0 ]; then echo " " >> ${profileFile} echo "# MariaDB Columnstore Non-Root Environment Variables" >> ${profileFile} echo "export COLUMNSTORE_INSTALL_DIR=$COLUMNSTORE_INSTALL_DIR" >> ${profileFile} echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$COLUMNSTORE_INSTALL_DIR/lib:$COLUMNSTORE_INSTALL_DIR/mysql/lib" >> ${profileFile} fi egrep -qs 'MariaDB Columnstore Non-Root Alias Variables' ${profileFile} rc1=$? if [ $rc1 -ne 0 ]; then echo " " >> ${profileFile} echo "# MariaDB Columnstore Non-Root Alias Variables" >> ${profileFile} cat $installdir/bin/columnstoreAlias >> ${profileFile} fi #source the file . ${profileFile} else profileFile="/etc/profile.d/columnstoreAlias.sh" /bin/cp -f $installdir/bin/columnstoreAlias /etc/profile.d/columnstoreAlias.sh chmod 644 /etc/profile.d/columnstoreAlias.sh >/dev/null 2>&1 fi # set Profile File in config file $installdir/bin/setConfig -d Installation ProfileFile $profileFile # create directories if [ $user == "root" ]; then test -d /var/log/mariadb || mkdir /var/log/mariadb >/dev/null 2>&1 test -d /var/log/mariadb/columnstore || mkdir /var/log/mariadb/columnstore >/dev/null 2>&1 test -d /var/log/mariadb/columnstore/archive || mkdir /var/log/mariadb/columnstore/archive >/dev/null 2>&1 test -d /var/log/mariadb/columnstore/corefiles || mkdir /var/log/mariadb/columnstore/corefiles >/dev/null 2>&1 test -d /var/log/mariadb/columnstore/trace || mkdir /var/log/mariadb/columnstore/trace >/dev/null 2>&1 test -h /var/log/mariadb/columnstore/data && rm -f /var/log/mariadb/columnstore/data chmod 755 /var/log/mariadb/columnstore/corefiles > /dev/null 2>&1 fi # make sure trace dir is world-writable and sticky test -d $installdir/data || mkdir $installdir/data test -d $installdir/data1 || mkdir $installdir/data1 test -d $installdir/data1/systemFiles || mkdir $installdir/data1/systemFiles test -d $installdir/data1/systemFiles/dbrm || mkdir $installdir/data1/systemFiles/dbrm test -d $installdir/data1/systemFiles/dataTransaction || rmdir $installdir/data1/systemFiles/dataTransaction >/dev/null 2>&1 test -d $installdir/data1/systemFiles/dataTransaction/archive || rmdir $installdir/data1/systemFiles/dataTransaction/archive >/dev/null 2>&1 chmod 1755 $installdir/data1 >/dev/null 2>&1 chmod -R 1755 $installdir/data1/systemFiles >/dev/null 2>&1 chmod 1755 $installdir/etc > /dev/null 2>&1 #create the bulk-load dirs mkdir -p $installdir/data/bulk/data/import >/dev/null 2>&1 mkdir -p $installdir/data/bulk/log >/dev/null 2>&1 mkdir -p $installdir/data/bulk/job >/dev/null 2>&1 mkdir -p $installdir/data/bulk/rollback >/dev/null 2>&1 mkdir -p $installdir/data/bulk/tmpjob >/dev/null 2>&1 rm -f $installdir/data/bulk/tmpjob/* >/dev/null 2>&1 #get temp base directory tmpDir="/tmp" if [ $user != "root" ]; then tmpDir=$HOME"/.tmp" mkdir $tmpDir >/dev/null 2>&1 else #get columnstore temp file directory name TempFileDir=`$installdir/bin/getConfig SystemConfig TempFileDir` tmpDir=${tmpDir}${TempFileDir} fi #set base columnstore temp file directory $installdir/bin/setConfig -d SystemConfig SystemTempFileDir $tmpDir #get place file buffer temporary files hdfsRdwrScratch=`$installdir/bin/getConfig SystemConfig hdfsRdwrScratch` hdfsDir=${tmpDir}${hdfsRdwrScratch} #create place file buffer temporary files mkdir -p $hdfsDir >/dev/null 2>&1 #create mount directories mkdir /mnt/tmp > /dev/null 2>&1 # remove mysql archive log test -d $installdir/mysql/db || mkdir -p $installdir/mysql/db rm -rf $installdir/mysql/db/columnstore_log_archive > /dev/null 2>&1 # delete Columnstore shared memory segments $installdir/bin/clearShm > /dev/null 2>&1 #check and create rc.local file if missing if [ -f /etc/rc.d ]; then RCFILE=/etc/rc.d/rc.local else RCFILE=/etc/rc.local fi if [ $user = "root" ]; then touch $RCFILE chmod +x $RCFILE else printf '%s\n' '#!/bin/bash' "#" | tee -a $RCFILE > /dev/null 2>&1 fi if [ $user = "root" ]; then #setup the columnstore service script rm -f /etc/init.d/columnstore >/dev/null 2>&1 rm -f /etc/init.d/mysql-Columnstore >/dev/null 2>&1 rm -f /etc/default/columnstore systemctl=`which systemctl 2>/dev/null` if [ -n "$systemctl" ]; then chmod 644 $installdir/bin/columnstore.service cp $installdir/bin/columnstore.service /usr/lib/systemd/system/. >/dev/null 2>&1 cp $installdir/bin/columnstore.service /lib/systemd/system/. >/dev/null 2>&1 systemctl enable columnstore >/dev/null 2>&1 else chkconfig=`which chkconfig 2>/dev/null` if [ -n "$chkconfig" ]; then cp $installdir/bin/columnstore /etc/init.d/. >/dev/null 2>&1 chkconfig --add columnstore > /dev/null 2>&1 chkconfig columnstore on > /dev/null 2>&1 else cp $installdir/bin/columnstore /etc/init.d/. >/dev/null 2>&1 updaterc=`which update-rc.d 2>/dev/null` if [ -n "$updaterc" ]; then update-rc.d columnstore defaults 99 > /dev/null 2>&1 else echo "" echo "Package 'systemctl', 'chkconfig' or 'update-rc.d' not installed, contact your sysadmin if you want to setup to autostart for columnstore" fi fi fi fi if [ $user = "root" ]; then $installdir/bin/syslogSetup.sh install > $tmpDir/syslog_install.log 2>&1 #check if MariaDB Columnstore system logging was setup cat $tmpDir/syslog_install.log | grep 'No System Logging' >/dev/null 2>&1 if [ $? -eq 0 ]; then cat $tmpDir/syslog_install.log fi else sed -i -e s@/usr/local/mariadb/columnstore@$installdir@g $installdir/bin/columnstoreLogRotate sed -i -e s@prefix=/home/guest@prefix=$prefix@g $installdir/bin/* chown $user:$user $installdir/etc/Columnstore.xml cat </dev/null 2>&1 rm -f $lockdir/mysql-Columnstore rm -f $lockdir/columnstore #backup copy of Alarm Config File /bin/cp -f $installdir/etc/AlarmConfig.xml $installdir/etc/AlarmConfig.xml.installSave > /dev/null 2>&1 #check and get amazon env variables aws=`which aws 2>/dev/null` if [ -z "aws" ]; then $installdir/bin/MCSgetCredentials.sh >/dev/null 2>&1 fi #log install message test -f $installdir/post/functions && . $installdir/post/functions if [ $user = "root" ]; then $installdir/bin/cplogger -i 19 "***** MariaDB Columnstore Installed *****" else LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$installdir/lib $installdir/bin/cplogger -i 19 "***** MariaDB Columnstore Installed *****" fi #setup hadoop hadoop=`which hadoop 2>/dev/null` if [ -z "$hadoop" ]; then #check for non-root user if [ $installdir != "/usr/local/mariadb/columnstore" -a $quiet -eq 0 ]; then cat < $tmpDir/hdfs-20-test.log 2>&1 if [ $? -eq 0 ]; then #Passed set in config file $installdir/bin/setConfig -d SystemConfig DataFilePlugin $installdir/lib/hdfs-20.so $installdir/bin/setConfig -d SystemConfig DataFileEnvFile setenv-hdfs-20 #check for non-root user if [ $installdir != "/usr/local/mariadb/columnstore" -a $quiet -eq 0 ]; then cat < $tmpDir/hdfs-12-test.log 2>&1 if [ $? -eq 0 ]; then #Passed set in config file $installdir/bin/setConfig -d SystemConfig DataFilePlugin $installdir/lib/hdfs-12.so $installdir/bin/setConfig -d SystemConfig DataFileEnvFile setenv-hdfs-12 if [ $installdir != "/usr/local/mariadb/columnstore" -a $quiet -eq 0 ]; then cat <