617 lines
18 KiB
Bash
617 lines
18 KiB
Bash
#!/bin/bash
|
||
#判断是否管理员权限
|
||
if [ $(id -u) -ne 0 ]; then
|
||
echo "ERROR:当前用户没有管理员权限,非管理员请用 sudo ./installer_linux.sh 命令执行"
|
||
exit
|
||
fi
|
||
|
||
#variable
|
||
#当前的安装包运行目录
|
||
initfile=$(dirname "$(dirname "$(readlink -f "$0")")")
|
||
#安装目录
|
||
INSTALL_DIR="/opt/HMEnergy"
|
||
#debug or release
|
||
SETUP_DEBUG_RELEASE=debug
|
||
#安装平台 centos 、openeuler
|
||
OS_DEFINE=""
|
||
#nginx 定制系统配置目录 以及服务名称
|
||
NGINX_CONFIGDIR=""
|
||
NGINX_SERVICE_NAME=""
|
||
|
||
#polkit 权限规则处理
|
||
polkit_rule_path=""
|
||
custom_rule_file=""
|
||
|
||
#系统设置开机执行文件路径
|
||
custom_cmd_file=""
|
||
|
||
# 命令行参数解析
|
||
DB_SERVICE_NAME=""
|
||
AUTO_CONFIRM=false
|
||
|
||
echo "INFO: 接收到的参数: $@"
|
||
# 解析命令行参数
|
||
while [[ $# -gt 0 ]]; do
|
||
case $1 in
|
||
-d|--database)
|
||
DB_SERVICE_NAME="$2"
|
||
shift 2
|
||
;;
|
||
-y|--yes)
|
||
AUTO_CONFIRM=true
|
||
shift
|
||
;;
|
||
-o|--os)
|
||
OS_DEFINE="$2"
|
||
shift 2
|
||
;;
|
||
*)
|
||
echo "未知参数: $1"
|
||
exit 1
|
||
;;
|
||
esac
|
||
done
|
||
|
||
#加载宏定义,用来判断平台
|
||
if [ -f "/etc/profile.d/iscs6000.sh" ]; then
|
||
source /etc/profile.d/iscs6000.sh
|
||
fi
|
||
if [ -f "/etc/profile.d/iscs6000env.sh" ]; then
|
||
source /etc/profile.d/iscs6000env.sh
|
||
fi
|
||
if [ -f "/etc/profile.d/rqeh6000.sh" ]; then
|
||
source /etc/profile.d/rqeh6000.sh
|
||
fi
|
||
if [ -f "/etc/profile.d/rqeh6000env.sh" ]; then
|
||
source /etc/profile.d/rqeh6000env.sh
|
||
fi
|
||
|
||
#variable
|
||
#script_path="$(cd "$(dirname "$0")" && pwd)"
|
||
script_path="${INSTALL_DIR}/installer"
|
||
echo "INFO:当前脚本执行目录: $script_path"
|
||
|
||
if [ -n "$RQEH6000_OS" ]; then
|
||
OS_DEFINE=$RQEH6000_OS
|
||
echo "INFO:安装操作系统平台:" $RQEH6000_OS
|
||
fi
|
||
if [ -n "$ISCS6000_OS" ]; then
|
||
OS_DEFINE=$ISCS6000_OS
|
||
echo "INFO:安装操作系统平台:" $ISCS6000_OS
|
||
fi
|
||
|
||
if [ ! -n "$OS_DEFINE" ]; then
|
||
echo "ERROR:没有找到操作系统平台定义"
|
||
exit 1
|
||
fi
|
||
|
||
echo "INFO:安装目录为: ${INSTALL_DIR} "
|
||
|
||
#判断原来目录下有文件,则删除
|
||
if [ -d "$INSTALL_DIR" ]; then
|
||
echo "WARNING:安装目录 $INSTALL_DIR 不为空!"
|
||
|
||
# 如果启用了自动确认,直接删除;否则询问用户
|
||
if [ "$AUTO_CONFIRM" = true ]; then
|
||
echo "INFO:自动确认模式,删除原有文件..."
|
||
rm -rf $INSTALL_DIR
|
||
else
|
||
# 询问用户是否删除这些文件
|
||
read -p "INFO:是否删除这些文件或者取消安装?注意:安装前需要保证原系统停止运行!(y/c): " answer
|
||
|
||
case $answer in
|
||
[Yy]* )
|
||
rm -rf $INSTALL_DIR
|
||
;;
|
||
[Cc]* )
|
||
echo "INFO:安装操作已取消。"
|
||
exit 1
|
||
;;
|
||
* )
|
||
echo "INFO:无效的输入,安装操作已取消。"
|
||
exit 1
|
||
;;
|
||
esac
|
||
fi
|
||
fi
|
||
|
||
mkdir $INSTALL_DIR
|
||
cp -r $initfile/* $INSTALL_DIR
|
||
|
||
EXPORT_DIR="${INSTALL_DIR}/backup"
|
||
DB_GROUP=""
|
||
DB_USER=""
|
||
CURRENT_OWNER=""
|
||
|
||
#开启配置数据库服务
|
||
if [ "kylin10d" = "$OS_DEFINE" ]; then
|
||
echo "INFO:kylin need to select db-service"
|
||
|
||
# 如果没有通过命令行指定数据库类型,则进行交互式选择
|
||
if [ -z "$DB_SERVICE_NAME" ]; then
|
||
valid_input=false
|
||
while [ "$valid_input" = false ]; do
|
||
echo "请选择数据库服务名:"
|
||
echo "1) kingbase"
|
||
echo "2) mariadb"
|
||
read -p "请输入数字选择(默认: 1): " choice
|
||
|
||
case "$choice" in
|
||
1 | "") # 输入 1 或直接回车
|
||
DB_SERVICE_NAME="kingbase"
|
||
valid_input=true
|
||
;;
|
||
2)
|
||
DB_SERVICE_NAME="mariadb"
|
||
valid_input=true
|
||
;;
|
||
*)
|
||
echo "无效选择,请重新输入!"
|
||
;;
|
||
esac
|
||
done
|
||
else
|
||
# 验证命令行传入的数据库类型是否有效
|
||
if [ "$DB_SERVICE_NAME" != "kingbase" ] && [ "$DB_SERVICE_NAME" != "mariadb" ]; then
|
||
echo "ERROR:不支持的数据库类型: $DB_SERVICE_NAME,支持的类型: kingbase, mariadb"
|
||
exit 1
|
||
fi
|
||
fi
|
||
|
||
echo "INFO: 选择的数据库服务为 ${DB_SERVICE_NAME}"
|
||
|
||
if [ "kingbase" = "$DB_SERVICE_NAME" ]; then
|
||
if sudo systemctl is-active --quiet "$DB_SERVICE_NAME"; then
|
||
echo "INFO:${DB_SERVICE_NAME} 服务已开启。"
|
||
else
|
||
chmod +x /opt/Kingbase/ES/V8/Scripts/root.sh
|
||
/opt/Kingbase/ES/V8/Scripts/root.sh
|
||
echo "INFO:${DB_SERVICE_NAME} 服务已开启。"
|
||
fi
|
||
fi
|
||
|
||
if [ "mariadb" = "$DB_SERVICE_NAME" ]; then
|
||
if sudo systemctl is-active --quiet "$DB_SERVICE_NAME"; then
|
||
echo "INFO:${DB_SERVICE_NAME} 服务已开启。"
|
||
else
|
||
systemctl enable mariadb.service
|
||
systemctl start mariadb.service
|
||
echo "INFO:${DB_SERVICE_NAME} 服务已开启。"
|
||
fi
|
||
fi
|
||
|
||
#为数据库服务赋backup文件夹权限
|
||
CURRENT_OWNER="$(stat -c '%U' "$EXPORT_DIR")"
|
||
if systemctl show "$DB_SERVICE_NAME" >/dev/null 2>&1; then
|
||
#DB_USER="$(systemctl show "$DB_SERVICE_NAME" -p User --value 2>/dev/null || true)"
|
||
DB_GROUP="$(systemctl show "$DB_SERVICE_NAME" -p Group --value 2>/dev/null || true)"
|
||
fi
|
||
|
||
if [ -z "$DB_GROUP" ]; then
|
||
if id -u "$DB_SERVICE_NAME" >/dev/null 2>&1; then
|
||
DB_USER="$DB_SERVICE_NAME"
|
||
else
|
||
# 用进程表查第一个匹配到的用户(变量要正确传入 awk)
|
||
DB_USER="$(ps -eo user,comm | awk -v svc="$DB_SERVICE_NAME" '$2 ~ svc {print $1; exit}')"
|
||
fi
|
||
|
||
if [ -n "$DB_USER" ] && id -u "$DB_USER" >/dev/null 2>&1; then
|
||
DB_GROUP="$(id -gn "$DB_USER")"
|
||
fi
|
||
fi
|
||
|
||
if [ -n "$DB_GROUP" ]; then
|
||
sudo chown "$CURRENT_OWNER":"$DB_GROUP" "$EXPORT_DIR"
|
||
sudo chmod 2775 "$EXPORT_DIR"
|
||
echo "INFO: ${EXPORT_DIR} 设置${DB_SERVICE_NAME} 权限完成."
|
||
else
|
||
echo "WARN: 无法获取 ${DB_SERVICE_NAME} 的 Group 配置!"
|
||
echo " ${EXPORT_DIR} 权限未设置,可能影响备份功能,请手动执行:"
|
||
fi
|
||
|
||
elif [ "oe2203" = "$OS_DEFINE" ] || [ "oe2203_aarch64" = "$OS_DEFINE" ]; then
|
||
|
||
echo "INFO:openEuler need to select db-service"
|
||
|
||
# 如果没有通过命令行指定数据库类型,则进行交互式选择
|
||
if [ -z "$DB_SERVICE_NAME" ]; then
|
||
valid_input=false
|
||
while [ "$valid_input" = false ]; do
|
||
echo "请选择数据库服务名:"
|
||
echo "1) opengauss"
|
||
echo "2) mysqld"
|
||
read -p "请输入数字选择(默认: 1): " choice
|
||
|
||
case "$choice" in
|
||
1 | "") # 输入 1 或直接回车
|
||
DB_SERVICE_NAME="opengauss"
|
||
valid_input=true
|
||
;;
|
||
2)
|
||
DB_SERVICE_NAME="mysqld"
|
||
valid_input=true
|
||
;;
|
||
*)
|
||
echo "无效选择,请重新输入!"
|
||
;;
|
||
esac
|
||
done
|
||
else
|
||
# 验证命令行传入的数据库类型是否有效
|
||
if [ "$DB_SERVICE_NAME" != "opengauss" ] && [ "$DB_SERVICE_NAME" != "mysqld" ]; then
|
||
echo "ERROR:不支持的数据库类型: $DB_SERVICE_NAME,支持的类型: opengauss, mysqld"
|
||
exit 1
|
||
fi
|
||
fi
|
||
|
||
echo "INFO: 选择的数据库服务为 ${DB_SERVICE_NAME}"
|
||
if [ "mysqld" = "$DB_SERVICE_NAME" ]; then
|
||
mysql_path="/etc/my.cnf.d"
|
||
mysql_cof="${script_path}/others/z1-oe-mysql-custom.cnf"
|
||
if [ -d "$mysql_path" ] && [ -f "$mysql_cof" ]; then
|
||
sudo cp "$mysql_cof" "$mysql_path/z1-oe-mysql-custom.cnf"
|
||
sudo chmod 644 "$mysql_path/z1-oe-mysql-custom.cnf"
|
||
sudo chown root:root "$mysql_path/z1-oe-mysql-custom.cnf"
|
||
echo "INFO:mysql 自定义配置文件已复制到配置文件夹中"
|
||
else
|
||
echo "INFO:mysql 自定义配置文件无法生效,原因找不到mysql的配置目录"
|
||
fi
|
||
|
||
if sudo systemctl is-active --quiet "$DB_SERVICE_NAME"; then
|
||
sudo systemctl restart mysqld.service
|
||
echo "INFO:${DB_SERVICE_NAME} 服务已开启,正在重启以应用新配置..."
|
||
else
|
||
systemctl enable mysqld.service
|
||
systemctl start mysqld.service
|
||
echo "INFO:${DB_SERVICE_NAME} 服务已开启。"
|
||
fi
|
||
fi
|
||
|
||
if [ "opengauss" = "$DB_SERVICE_NAME" ]; then
|
||
if sudo systemctl is-active --quiet "$DB_SERVICE_NAME"; then
|
||
echo "INFO:${DB_SERVICE_NAME} 服务已开启。"
|
||
else
|
||
|
||
chown -R ${SUDO_USER}:${SUDO_USER} /usr/local/opengauss
|
||
chown -R ${SUDO_USER}:${SUDO_USER} /var/lib/opengauss
|
||
echo "INFO:opengauss dir owner has changed "
|
||
|
||
pg_conf="/var/lib/opengauss/data/single_node/postgresql.conf"
|
||
if grep -q "^behavior_compat_options" "$pg_conf"; then
|
||
sed -i "s/^behavior_compat_options.*/behavior_compat_options = 'accept_empty_str'/" "$pg_conf"
|
||
else
|
||
echo "behavior_compat_options = 'accept_empty_str'" >> "$pg_conf"
|
||
fi
|
||
|
||
sed -i '/^session_timeout/s/=.*/= 0/' ${pg_conf}
|
||
|
||
|
||
|
||
#sed -i "s/^User=.*/User=$SUDO_USER/" /usr/lib/systemd/system/opengauss.service
|
||
sed -i "s/^User=.*/User=$SUDO_USER/; s/^Group=.*/Group=$SUDO_USER/" /usr/lib/systemd/system/opengauss.service
|
||
if ! grep -q "^Group=" /usr/lib/systemd/system/opengauss.service; then
|
||
sed -i "/^\[Service\]/a Group=$SUDO_USER" /usr/lib/systemd/system/opengauss.service
|
||
fi
|
||
systemctl daemon-reload
|
||
systemctl restart opengauss.service
|
||
systemctl enable opengauss.service
|
||
|
||
check_service_path=${script_path}/others/checkOpengauss.sh
|
||
chmod +x ${check_service_path}
|
||
${check_service_path}
|
||
if [ $? -eq 0 ]; then
|
||
echo "INFO:${DB_SERVICE_NAME} 服务已开启。"
|
||
else
|
||
echo "INFO:${DB_SERVICE_NAME} 服务开启失败。"
|
||
fi
|
||
fi
|
||
fi
|
||
|
||
#为数据库服务赋backup文件夹权限
|
||
CURRENT_OWNER="$(stat -c '%U' "$EXPORT_DIR")"
|
||
if systemctl show "$DB_SERVICE_NAME" >/dev/null 2>&1; then
|
||
DB_USER="$(systemctl show "$DB_SERVICE_NAME" -p User --value 2>/dev/null || true)"
|
||
DB_GROUP="$(systemctl show "$DB_SERVICE_NAME" -p Group --value 2>/dev/null || true)"
|
||
fi
|
||
|
||
if [ -z "$DB_GROUP" ]; then
|
||
if id -u "$DB_SERVICE_NAME" >/dev/null 2>&1; then
|
||
DB_USER="$DB_SERVICE_NAME"
|
||
else
|
||
# 用进程表查第一个匹配到的用户(变量要正确传入 awk)
|
||
DB_USER="$(ps -eo user,comm | awk -v svc="$DB_SERVICE_NAME" '$2 ~ svc {print $1; exit}')"
|
||
fi
|
||
|
||
if [ -n "$DB_USER" ] && id -u "$DB_USER" >/dev/null 2>&1; then
|
||
DB_GROUP="$(id -gn "$DB_USER")"
|
||
fi
|
||
fi
|
||
echo "INFO :${DB_SERVICE_NAME} user:${DB_USER} group:${DB_GROUP}"
|
||
|
||
if [ -n "$DB_GROUP" ]; then
|
||
sudo chown "$CURRENT_OWNER":"$DB_GROUP" "$EXPORT_DIR"
|
||
sudo chmod 2775 "$EXPORT_DIR"
|
||
echo "INFO: ${EXPORT_DIR} 设置${DB_SERVICE_NAME} 权限完成."
|
||
else
|
||
echo "WARN: 无法获取 ${DB_SERVICE_NAME} 的 Group 配置!"
|
||
echo " ${EXPORT_DIR} 权限未设置,可能影响备份功能,请手动执行:"
|
||
fi
|
||
|
||
else
|
||
echo "INFO:数据库使用mariadb服务"
|
||
DB_SERVICE_NAME="mariadb"
|
||
if sudo systemctl is-active --quiet "$DB_SERVICE_NAME"; then
|
||
echo "INFO:${DB_SERVICE_NAME} 服务已开启。"
|
||
else
|
||
systemctl enable mariadb.service
|
||
systemctl start mariadb.service
|
||
echo "INFO:${DB_SERVICE_NAME} 服务已开启。"
|
||
fi
|
||
fi
|
||
|
||
#开启历史数据库服务
|
||
HISDB_SERVICE_NAME="influxdb"
|
||
if sudo systemctl is-active --quiet "$HISDB_SERVICE_NAME"; then
|
||
echo "INFO:${HISDB_SERVICE_NAME} 服务已开启。"
|
||
else
|
||
systemctl enable influxdb
|
||
systemctl start influxdb
|
||
echo "INFO:${HISDB_SERVICE_NAME} 服务已开启。"
|
||
fi
|
||
|
||
#nginx配置文件以及polkit规则文件
|
||
if [ "oe2203" = "$OS_DEFINE" ] || [ "kylin10d" = "$OS_DEFINE" ]; then
|
||
|
||
#nginx 配置文件
|
||
NGINX_CONFIGDIR="/etc/nginx/nginx.conf"
|
||
NGINX_SERVICE_NAME="nginx"
|
||
echo "INFO:nginx配置文件:"$NGINX_CONFIGDIR "服务名称" $NGINX_SERVICE_NAME
|
||
|
||
#polkit-auth
|
||
polkit_rule_path="/etc/polkit-1/rules.d"
|
||
custom_rule_file="51-custom-authentication.rules" #注意数字排序别被规则覆盖
|
||
|
||
if [ "kylin10d" = "$OS_DEFINE" ]; then
|
||
polkit_rule_path="/etc/polkit-1/localauthority/50-local.d"
|
||
custom_rule_file="allow-program-kylin.pkla"
|
||
fi
|
||
|
||
echo "INFO:polkit配置文件:"$polkit_rule_path "自定义文件名称" $custom_rule_file
|
||
|
||
custom_rule_file_path=${script_path}/others/${custom_rule_file}
|
||
cp ${custom_rule_file_path} ${polkit_rule_path}/
|
||
chmod 644 ${polkit_rule_path}/${custom_rule_file}
|
||
systemctl restart polkit.service
|
||
echo "INFO:规则文件已拷贝并且polkit服务已重启"
|
||
|
||
#auth
|
||
chown ${SUDO_USER}:${SUDO_USER} ${INSTALL_DIR}
|
||
echo "INFO: change auth to user- ${SUDO_USER} dir-${INSTALL_DIR}"
|
||
|
||
else
|
||
NGINX_CONFIGDIR="/etc/opt/rh/rh-nginx116/nginx/nginx.conf"
|
||
NGINX_SERVICE_NAME="rh-nginx116-nginx"
|
||
echo "INFO:nginx配置文件:"$NGINX_CONFIGDIR "服务名称" $NGINX_SERVICE_NAME
|
||
fi
|
||
|
||
#开启Nginx服务
|
||
nginx_path="${INSTALL_DIR}/nginx/nginx.conf"
|
||
if [ -e "$nginx_path" ]; then
|
||
echo "copy nginx config"
|
||
cp "$nginx_path" "$NGINX_CONFIGDIR"
|
||
rm "$nginx_path"
|
||
else
|
||
echo "cannot find nginx config in ${INSTALL_DIR}"
|
||
fi
|
||
|
||
ln -s "$NGINX_CONFIGDIR" "$nginx_path"
|
||
chmod -R 775 "$nginx_path"
|
||
|
||
if [ -L "$nginx_path" ]; then
|
||
echo "nginx symbolic link create success!"
|
||
else
|
||
echo "nginx symbolic link create failure!"
|
||
fi
|
||
|
||
if sudo systemctl is-active --quiet "$NGINX_SERVICE_NAME"; then
|
||
echo "INFO:${NGINX_SERVICE_NAME} 服务已开启。"
|
||
else
|
||
systemctl enable ${NGINX_SERVICE_NAME}
|
||
systemctl start ${NGINX_SERVICE_NAME}
|
||
echo "INFO:${NGINX_SERVICE_NAME} 服务已开启。"
|
||
fi
|
||
|
||
|
||
|
||
if [ -d "$(dirname "$script_path")/product/${OS_DEFINE}_debug/" ]; then
|
||
SETUP_DEBUG_RELEASE=debug
|
||
else
|
||
SETUP_DEBUG_RELEASE=release
|
||
fi
|
||
echo "INFO:安装版本:" $SETUP_DEBUG_RELEASE
|
||
|
||
export BIN_DIR_VER=${OS_DEFINE}_${SETUP_DEBUG_RELEASE}
|
||
|
||
#进行配置数据库初始化操作
|
||
$(dirname "$script_path")/product/$BIN_DIR_VER/db_installer
|
||
|
||
echo "INFO:开始进行附文件权限"
|
||
sh_path="$(dirname "$script_path")/product/$BIN_DIR_VER/"
|
||
sh_files=$(find "$sh_path" -maxdepth 1 -type f -name "*.sh")
|
||
#sh_files=$(find "$script_path" -maxdepth 1 -type f -name "*.sh")
|
||
if [ -n "$sh_files" ]; then
|
||
echo "INFO:找到以下 .sh 文件:"
|
||
echo "$sh_files"
|
||
echo "INFO:为这些文件添加执行权限..."
|
||
for file in $sh_files; do
|
||
chmod +x "$file"
|
||
done
|
||
fi
|
||
|
||
app_name="HMEnergy"
|
||
exec_command="$(dirname "$script_path")/product/$BIN_DIR_VER/workBench"
|
||
# 创建.desktop文件
|
||
sudo -k
|
||
|
||
DESKTOP_DIR=/root/桌面
|
||
if [ -n "$SUDO_USER" ]; then
|
||
DESKTOP_DIR=/home/$SUDO_USER/桌面
|
||
fi
|
||
|
||
if [ ! -d "${DESKTOP_DIR}" ]; then
|
||
echo "ERROR:目录不存在:${DESKTOP_DIR}"
|
||
exit
|
||
fi
|
||
echo "INFO:start-创建快捷方式成功"
|
||
cat > ${DESKTOP_DIR}/$app_name.desktop <<EOL
|
||
[Desktop Entry]
|
||
Name=$app_name
|
||
Exec=$exec_command
|
||
Type=Application
|
||
Terminal=false
|
||
Icon=$(dirname "$script_path")/installer/rqeh6000.ico
|
||
StartupNotify=true
|
||
EOL
|
||
echo "INFO:end-创建EMS.desktop快捷方式成功"
|
||
|
||
#赋权限
|
||
#net Permission
|
||
echo 'net.ipv4.ping_group_range = 0 2147483647' > /etc/sysctl.d/z5-ping.conf
|
||
sysctl -p /etc/sysctl.d/z5-ping.conf
|
||
|
||
# 赋予.desktop文件执行权限
|
||
chmod u+x ${DESKTOP_DIR}/$app_name.desktop
|
||
|
||
if [ -n "$SUDO_USER" ]; then
|
||
chown $SUDO_USER ${DESKTOP_DIR}/$app_name.desktop
|
||
chown -R $SUDO_USER ${INSTALL_DIR}/*
|
||
fi
|
||
|
||
cp ${DESKTOP_DIR}/$app_name.desktop /usr/share/applications/
|
||
|
||
#net_keepalived config
|
||
config_keepalived_cmd="$(dirname "$script_path")/platform/$BIN_DIR_VER/net_keepalived"
|
||
KEEPALIVE_SERVICE_NAME="net_keepalived"
|
||
if sudo systemctl is-active --quiet "$KEEPALIVE_SERVICE_NAME"; then
|
||
systemctl stop net_keepalived
|
||
systemctl disable net_keepalived
|
||
fi
|
||
|
||
$config_keepalived_cmd -r
|
||
if [ $? -ne 0 ]; then
|
||
echo "WARNING: Command '$config_keepalived_cmd -r' failed."
|
||
fi
|
||
|
||
systemctl start net_keepalived
|
||
systemctl enable net_keepalived
|
||
|
||
if sudo systemctl is-active --quiet "$KEEPALIVE_SERVICE_NAME"; then
|
||
echo "INFO:${KEEPALIVE_SERVICE_NAME} 服务已开启。"
|
||
else
|
||
echo "INFO:${KEEPALIVE_SERVICE_NAME} 服务开启失败。"
|
||
fi
|
||
|
||
# ota_server 配置
|
||
product_dir="$(dirname "$script_path")/product/$BIN_DIR_VER"
|
||
platform_dir="$(dirname "$script_path")/platform/$BIN_DIR_VER"
|
||
|
||
ota_script_path="$(dirname "$script_path")/installer/ota_server.sh"
|
||
if [ -f "$ota_script_path" ]; then
|
||
chmod +x "$ota_script_path"
|
||
CURRENT_OWNER="$(stat -c '%U' "$EXPORT_DIR")"
|
||
|
||
# 加载 ota_server.sh
|
||
source "$ota_script_path"
|
||
if config_ota_server "$CURRENT_OWNER" "$product_dir" "$platform_dir" "$OS_DEFINE"; then
|
||
echo "INFO: ota_server 配置完成"
|
||
else
|
||
echo "ERROR: ota_server 配置失败"
|
||
fi
|
||
fi
|
||
|
||
if sudo systemctl is-active --quiet "ota_server"; then
|
||
echo "INFO: ota_server 服务已开启"
|
||
else
|
||
echo "INFO: ota_server 服务开启失败"
|
||
fi
|
||
|
||
|
||
if [ "kylin10d" = "$OS_DEFINE" ]; then
|
||
profile_path="/etc/profile.d"
|
||
custom_cmd_file="others/customCmd.sh"
|
||
cp ${custom_cmd_file} ${profile_path}/
|
||
chmod +x ${profile_path}/customCmd.sh
|
||
|
||
echo "**********************"
|
||
echo "由于更改了系统设置,需要重启电脑或者注销用户然后重新登录才能生效!!!!!"
|
||
echo "**********************"
|
||
fi
|
||
|
||
#为所有用户创建应用菜单快捷方式 begin
|
||
cat <<EOF | tee /usr/share/applications/${app_name}.desktop >/dev/null
|
||
[Desktop Entry]
|
||
Name=$app_name
|
||
Exec=$exec_command
|
||
Icon=$(dirname "$script_path")/installer/rqeh6000.ico
|
||
Terminal=false
|
||
Type=Application
|
||
Categories=Utility;
|
||
EOF
|
||
|
||
chmod 644 /usr/share/applications/${app_name}.desktop
|
||
update-desktop-database
|
||
#为所有用户创建应用菜单快捷方式 end
|
||
|
||
#注册 sys_data_sync_server 到 systemd
|
||
#if [ "oe2203_aarch64" = "$OS_DEFINE" ]; then
|
||
SERVICE_NAME="sys_data_sync_server"
|
||
EXEC_PATH="$(dirname "$script_path")/product/$BIN_DIR_VER/sys_data_sync_server"
|
||
SERVICE_FILE="/etc/systemd/system/${SERVICE_NAME}.service"
|
||
|
||
if [ ! -f "$EXEC_PATH" ]; then
|
||
echo "ERROR: 未找到可执行文件 $EXEC_PATH"
|
||
else
|
||
echo "INFO: 开始注册 ${SERVICE_NAME} 到 systemd..."
|
||
|
||
chmod +x "$EXEC_PATH"
|
||
|
||
cat > "$SERVICE_FILE" <<EOF
|
||
[Unit]
|
||
Description=Sys Data Sync Server
|
||
After=network.target
|
||
|
||
[Service]
|
||
Type=simple
|
||
ExecStart=$EXEC_PATH
|
||
WorkingDirectory=$(dirname "$EXEC_PATH")
|
||
Restart=always
|
||
RestartSec=5
|
||
LimitNOFILE=65535
|
||
|
||
[Install]
|
||
WantedBy=multi-user.target
|
||
EOF
|
||
|
||
# 重新加载 systemd
|
||
systemctl daemon-reload
|
||
|
||
# 设置开机自启动
|
||
systemctl enable ${SERVICE_NAME}.service
|
||
|
||
# 启动服务
|
||
systemctl start ${SERVICE_NAME}.service
|
||
|
||
# 检查状态
|
||
if systemctl is-active --quiet "${SERVICE_NAME}"; then
|
||
echo "INFO:${SERVICE_NAME} 服务已成功启动并设置为开机自启"
|
||
else
|
||
echo "ERROR:${SERVICE_NAME} 启动失败,请执行:"
|
||
echo "journalctl -u ${SERVICE_NAME} -f"
|
||
fi
|
||
fi
|
||
#fi
|
||
|
||
echo "INFO:安装成功:$app_name"
|
||
|
||
exit 0
|