CentOS7安装EPICS base的脚本

工作中需要经常安装EPICS base(下载地址:EPICS Base Downloads), 返回安装是一个重复劳动的过程。以下脚本是实现了EPICS base自动安装 ,适用基于Redhat的Linux发行版,因为这个脚本使用了yum在线安装命令来安装base所需的readline-devel软件包。

此脚本使用方法:执行用户必须是root,先对这个脚本赋予执行权限,然后像如下执行:

./install_epics.sh base.xxxx.tar.gz  # 此处xxx是base的版本号

这个脚本在CentOS7上测试成功,完成了base安装和环境变量的配置。 

#!/bin/bash
# script name: install_epics.sh
# Writen by YLG
# Date: 20220922
# install the EPICS base into /usr/local/EPICS
# Usage: ./install_epics.sh base.xxxx.tar.gz

INSTALL_LOCATION=/usr/local/EPICS

if [[ ${UID} -ne "0" ]];then
        echo "You are not root, you cannot run this script!"
        exit 1
fi

if [ "$#" -ne "1" ];then
        echo "Usage: install_epics.sh filename!"
        exit 1
else
        FILENAME="$1"
fi

echo "You will install epics base: ${FILENAME}"

if [[ -d "${INSTALL_LOCATION}" ]];then
        echo "${INSTALL_LOCATION} already exists"
else
        mkdir "${INSTALL_LOCATION}"
        if [[ $? -eq "0" ]];then
                echo "Create ${INSTALL_LOCATION} successfully"
        else
                echo "Failed to create ${INSTALL_LOCATION} !"
                exit 1
        fi
fi


if [[ -f "${FILENAME}" ]];then
        if [[ "$FILENAME" =~ ^base && "$FILENAME" =~ tar\.gz$ ]];then
                echo "extract files from ${FILENAME} to ${INSTALL_LOCATION}"
                tar -xvzf ${FILENAME} -C ${INSTALL_LOCATION}
                if [[ "$?" -eq 0 ]];then
                        echo "extract files successfully!"
                else
                        echo "failed to extract files"
                        exit 1
                fi
        else
                echo "The base file format error!"
                exit 1
        fi
else
        echo "The file you pass to the command  not exists or it is not ordinary file!"
fi

DIRNAME=${FILENAME%.tar.gz}
cd "${INSTALL_LOCATION}"
rm -rf base
ln -s ${DIRNAME} base

EPICSENVFILE=/etc/profile.d/epics.sh
if [[ -f "$EPICSENVFILE" ]];then
        echo "EPICS ENV File exists"
else
        echo "Create a file epics.sh in /etc/profile.d:"
        cat >> "${EPICSENVFILE}" <<$
export EPICS_BASE=/usr/local/EPICS/base
export EPICS_HOST_ARCH=\`\$EPICS_BASE/startup/EpicsHostArch\`
export PATH=\${PATH}:\${EPICS_BASE}/bin/\${EPICS_HOST_ARCH}
export LD_LIBRARY_PATH=\${LD_LIBRARY_PATH}:\${EPICS_BASE}/lib/\${EPICS_HOST_ARCH}

export EPICS_CA_AUTO_ADDR_LIST=NO
export EPICS_CA_ADDR_LIST=localhost
$
fi

source "$EPICSENVPATH"

yum install -y readline-devel
if [[  "$?" -ne 0 ]];then
        echo "failed to install readline-devel package!"
        exit 1
fi

cd base
make
if [[ "$?"  -eq 0 ]];then
        echo "Install base in /usr/local/EPICS successfully!"
else
        echo "failed to install base!"
fi

注意:如果需要对批量主机安装base软件包,可以使用Ansible进行编写playbook把此脚本和base软件包下载到远程主机上进行批量安装。

猜你喜欢

转载自blog.csdn.net/yuyuyuliang00/article/details/126972198