diff --git a/installer/installer_linux.sh b/installer/installer_linux.sh index 992640b0..35d3233b 100644 --- a/installer/installer_linux.sh +++ b/installer/installer_linux.sh @@ -25,6 +25,33 @@ 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 @@ -63,52 +90,73 @@ echo "INFO:安装目录为: ${INSTALL_DIR} " #判断原来目录下有文件,则删除 if [ -d "$INSTALL_DIR" ]; then echo "WARNING:安装目录 $INSTALL_DIR 不为空!" - # 询问用户是否删除这些文件 - read -p "INFO:是否删除这些文件或者取消安装?注意:安装前需要保证原系统停止运行!(y/c): " answer + + # 如果启用了自动确认,直接删除;否则询问用户 + 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 + 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" - valid_input=false - while [ "$valid_input" = false ]; do - echo "请选择数据库服务名:" - echo "1) kingbase" - echo "2) mariadb" - read -p "请输入数字选择(默认: 1): " choice + # 如果没有通过命令行指定数据库类型,则进行交互式选择 + 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 + 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}" @@ -132,38 +180,86 @@ if [ "kylin10d" = "$OS_DEFINE" ]; then 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" - valid_input=false - while [ "$valid_input" = false ]; do - echo "请选择数据库服务名:" - echo "1) opengauss" - echo "2) mysqld" - read -p "请输入数字选择(默认: 1): " choice + # 如果没有通过命令行指定数据库类型,则进行交互式选择 + 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="mysql" - valid_input=true - ;; - *) - echo "无效选择,请重新输入!" - ;; - esac - done + 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 [ "mysql" = "$DB_SERVICE_NAME" ]; then + 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 - echo "INFO:${DB_SERVICE_NAME} 服务已开启。" + sudo systemctl restart mysqld.service + echo "INFO:${DB_SERVICE_NAME} 服务已开启,正在重启以应用新配置..." else systemctl enable mysqld.service systemctl start mysqld.service @@ -180,12 +276,27 @@ elif [ "oe2203" = "$OS_DEFINE" ] || [ "oe2203_aarch64" = "$OS_DEFINE" ]; then chown -R ${SUDO_USER}:${SUDO_USER} /var/lib/opengauss echo "INFO:opengauss dir owner has changed " - sed -i "s/^User=.*/User=$SUDO_USER/" /usr/lib/systemd/system/opengauss.service + 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}/checkOpengauss.sh + check_service_path=${script_path}/others/checkOpengauss.sh chmod +x ${check_service_path} ${check_service_path} if [ $? -eq 0 ]; then @@ -193,18 +304,46 @@ elif [ "oe2203" = "$OS_DEFINE" ] || [ "oe2203_aarch64" = "$OS_DEFINE" ]; then 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} 服务已开启。" + echo "INFO:${DB_SERVICE_NAME} 服务已开启。" else - systemctl enable mariadb.service + systemctl enable mariadb.service systemctl start mariadb.service echo "INFO:${DB_SERVICE_NAME} 服务已开启。" fi @@ -239,7 +378,7 @@ if [ "oe2203" = "$OS_DEFINE" ] || [ "kylin10d" = "$OS_DEFINE" ]; then echo "INFO:polkit配置文件:"$polkit_rule_path "自定义文件名称" $custom_rule_file - custom_rule_file_path=${script_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 @@ -372,33 +511,106 @@ else echo "INFO:${KEEPALIVE_SERVICE_NAME} 服务开启失败。" fi -INFLUXD_PROGRAM_PATH=$(which influxd) -ln -sf "${INFLUXD_PROGRAM_PATH}" "${INSTALL_DIR}/product/$BIN_DIR_VER/" +# ota_server 配置 +product_dir="$(dirname "$script_path")/product/$BIN_DIR_VER" +platform_dir="$(dirname "$script_path")/platform/$BIN_DIR_VER" -if [ "oe2203" = "$OS_DEFINE" ]; then - # 设置core_pattern - echo '/corefiles/core-%e-%p-%s-%t' >/proc/sys/kernel/core_pattern - # 检查操作是否成功 - if [ $? -eq 0 ]; then - echo "core_pattern has been set successfully." - else - echo "Failed to set core_pattern." - fi +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="customCmd.sh" + custom_cmd_file="others/customCmd.sh" cp ${custom_cmd_file} ${profile_path}/ - chmod +x ${profile_path}/${custom_cmd_file} + chmod +x ${profile_path}/customCmd.sh echo "**********************" echo "由于更改了系统设置,需要重启电脑或者注销用户然后重新登录才能生效!!!!!" echo "**********************" fi +#为所有用户创建应用菜单快捷方式 begin +cat </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" </dev/null || echo "0") + # target_size=$(stat -c%s "$target_server" 2>/dev/null || echo "0") + # source_hash=$(md5sum "$ota_server_executable" 2>/dev/null | cut -d' ' -f1) + # target_hash=$(md5sum "$target_server" 2>/dev/null | cut -d' ' -f1) + + # if [ "$source_size" != "$target_size" ] && [ "$source_hash" != "$target_hash" ]; then + # echo "INFO: 检测到 ota_server 程序更新" + # echo " Source - Size: $source_size, Hash: $source_hash" + # echo " Target - Size: $target_size, Hash: $target_hash" + # need_update=true + # fi + # else + # echo "INFO: 目标目录中不存在 ota_server,需要安装" + # need_update=true + # fi + + # 检查依赖库是否有更新(只检查源目录下的库) + if [ "$need_update" = false ]; then + # 使用 ldd 查找 ota_server 的依赖库 + local libs=$(ldd "$ota_server_executable" 2>/dev/null | grep "=>" | awk '{print $3}' | grep -v "not found") + + for lib in $libs; do + if [ -n "$lib" ] && [ -f "$lib" ]; then + # 只处理位于两个源目录下的库,不处理系统库 + if [[ "$lib" == "$product_dir"* ]] || [[ "$lib" == "$platform_dir"* ]]; then + lib_name=$(basename "$lib") + # 使用通配符匹配库文件的所有相关文件 + lib_base=$(echo "$lib_name" | sed 's/\.so\..*$/.so*/' | sed 's/\.so$/.so*/') + lib_dir=$(dirname "$lib") + + # 查找所有相关的库文件 + for lib_file in "$lib_dir"/$lib_base; do + if [ -f "$lib_file" ]; then + target_lib="$target_dir/$(basename "$lib_file")" + + # 检查库文件是否在目标目录中 + if [ -f "$target_lib" ]; then + source_size=$(stat -c%s "$lib_file" 2>/dev/null || echo "0") + target_size=$(stat -c%s "$target_lib" 2>/dev/null || echo "0") + source_hash=$(md5sum "$lib_file" 2>/dev/null | cut -d' ' -f1) + target_hash=$(md5sum "$target_lib" 2>/dev/null | cut -d' ' -f1) + + if [ "$source_size" != "$target_size" ] && [ "$source_hash" != "$target_hash" ]; then + echo "INFO: 检测到依赖库更新: $(basename "$lib_file")" + need_update=true + break 2 + fi + else + echo "INFO: 检测到新依赖库: $(basename "$lib_file")" + need_update=true + break 2 + fi + fi + done + fi + fi + done + fi + + if [ "$need_update" = true ]; then + # 拷贝依赖库(只拷贝源目录下的库) + echo "INFO: 拷贝依赖库到 $target_dir" + local libs=$(ldd "$ota_server_executable" 2>/dev/null | grep "=>" | awk '{print $3}' | grep -v "not found") + for lib in $libs; do + if [ -n "$lib" ] && [ -f "$lib" ]; then + # 只拷贝位于两个源目录下的库,不拷贝系统库 + if [[ "$lib" == "$product_dir"* ]] || [[ "$lib" == "$platform_dir"* ]]; then + lib_name=$(basename "$lib") + # 使用通配符匹配库文件的所有相关文件 + lib_base=$(echo "$lib_name" | sed 's/\.so\..*$/.so*/' | sed 's/\.so$/.so*/') + lib_dir=$(dirname "$lib") + + # 拷贝所有相关的库文件 + for lib_file in "$lib_dir"/$lib_base; do + if [ -f "$lib_file" ]; then + # echo "INFO: 拷贝依赖库: $(basename "$lib_file")" + cp "$lib_file" "$target_dir/" + fi + done + fi + fi + done + + # 设置目录和文件的所有权 + # echo "INFO: 设置目录和文件的所有权为: $user" + # sudo chown -R "$user":root "$target_dir" + # sudo chmod 777 "$target_dir/"* + + # echo "INFO: 服务已更新,需手动重启" + + # echo "INFO: 启动 ota_server 服务..." + # systemctl start "$service_name" + + # if systemctl is-active --quiet "$service_name"; then + # echo "INFO: ota_server 服务更新并启动成功" + # else + # echo "ERROR: ota_server 服务启动失败" + # return 1 + # fi + else + echo "INFO: ota_server 及其依赖库无变化,无需更新" + fi + + else + echo "INFO: ota_server 服务未运行,进行安装或更新..." + + # 创建目标目录 + mkdir -p "$target_dir" + + # 拷贝 ota_server 可执行文件 + echo "INFO: 拷贝 ota_server 可执行文件到 $target_dir" + cp "$ota_server_executable" "$target_dir/" + chmod +x "$target_dir/ota_server" + + # 查找并拷贝 updater_linux.sh 脚本和 ota_server.yaml + local update_script_source="" + local ota_server_yaml="" + for source_dir in "${source_dirs[@]}"; do + if [ -f "$source_dir/updater_linux.sh" ]; then + update_script_source="$source_dir/updater_linux.sh" + fi + if [ -f "$source_dir/ota_server.yaml" ] && [ ! -f "$target_dir/ota_server.yaml" ]; then + ota_server_yaml="$source_dir/ota_server.yaml" + fi + done + + if [ -n "$update_script_source" ] && [ -f "$update_script_source" ]; then + echo "INFO: 拷贝 updater_linux.sh 脚本到 $target_dir" + cp "$update_script_source" "$target_dir/" + chmod +x "$target_dir/updater_linux.sh" + else + echo "WARNING: 在所有源目录中均未找到 updater_linux.sh 脚本" + fi + + if [ -n "$ota_server_yaml" ] && [ -f "$ota_server_yaml" ]; then + echo "INFO: 拷贝 ota_server.yaml 脚本到 $target_dir" + cp "$ota_server_yaml" "$target_dir/" + fi + + # 拷贝依赖库(只拷贝源目录下的库) + echo "INFO: 拷贝依赖库到 $target_dir" + local libs=$(ldd "$ota_server_executable" 2>/dev/null | grep "=>" | awk '{print $3}' | grep -v "not found") + for lib in $libs; do + if [ -n "$lib" ] && [ -f "$lib" ]; then + # 只拷贝位于两个源目录下的库,不拷贝系统库 + if [[ "$lib" == "$product_dir"* ]] || [[ "$lib" == "$platform_dir"* ]]; then + lib_name=$(basename "$lib") + # 使用通配符匹配库文件的所有相关文件 + lib_base=$(echo "$lib_name" | sed 's/\.so\..*$/.so*/' | sed 's/\.so$/.so*/') + lib_dir=$(dirname "$lib") + + # 拷贝所有相关的库文件 + for lib_file in "$lib_dir"/$lib_base; do + if [ -f "$lib_file" ]; then + # echo "INFO: 拷贝依赖库: $(basename "$lib_file")" + cp "$lib_file" "$target_dir/" + fi + done + fi + fi + done + + # 设置目录和文件的所有权 + echo "INFO: 设置目录和文件的所有权为: $user" + sudo chown -R "$user":root "$target_dir" + sudo chmod 777 "$target_dir/"* + + # 检查是否有 ota_server 可执行文件 + if [ -f "$target_dir/ota_server" ] && [ -x "$target_dir/ota_server" ]; then + echo "INFO: 运行 ota_server 进行服务注册..." + echo "INFO: user="$user", os="$os_name"" + + # 运行 ota_server(首次运行会自动注册服务) + sudo "$target_dir"/ota_server --user "$user" --os "$os_name" > /dev/null 2>&1 + + sleep 2 + + # 检查服务是否成功注册 + # if systemctl is-active --quiet "$service_name"; then + # echo "INFO: ota_server 服务注册并启动成功" + # # 杀死临时进程(服务已经在后台运行) + # kill $ota_pid 2>/dev/null || true + # else + # echo "WARNING: ota_server 可能未成功注册为系统服务" + # # 杀死临时进程 + # kill $ota_pid 2>/dev/null || true + + # # 尝试手动启动服务 + # if systemctl start "$service_name" 2>/dev/null; then + # echo "INFO: ota_server 服务手动启动成功" + # else + # echo "ERROR: ota_server 服务启动失败" + # return 1 + # fi + # fi + else + echo "ERROR: 在目标目录中找不到 ota_server 可执行文件" + return 1 + fi + fi + + return 0 +} + +# 如果脚本被直接执行,则显示用法 +# if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then +# if [ $# -eq 3 ]; then +# # 如果提供了3个参数,直接执行配置 +# config_ota_server "$1" "$2" "$3" +# else +# echo "Usage: $0 " +# echo "Example:" +# echo " $0 admin /opt/EnergyHub/product/oe2203_debug /opt/EnergyHub/platform/oe2203_debug" +# exit 1 +# fi +# fi \ No newline at end of file diff --git a/installer/51-custom-authentication.rules b/installer/others/51-custom-authentication.rules similarity index 100% rename from installer/51-custom-authentication.rules rename to installer/others/51-custom-authentication.rules diff --git a/installer/allow-program-kylin.pkla b/installer/others/allow-program-kylin.pkla similarity index 100% rename from installer/allow-program-kylin.pkla rename to installer/others/allow-program-kylin.pkla diff --git a/installer/checkOpengauss.sh b/installer/others/checkOpengauss.sh similarity index 100% rename from installer/checkOpengauss.sh rename to installer/others/checkOpengauss.sh diff --git a/installer/customCmd.sh b/installer/others/customCmd.sh similarity index 100% rename from installer/customCmd.sh rename to installer/others/customCmd.sh diff --git a/installer/readme.txt b/installer/others/readme.txt similarity index 100% rename from installer/readme.txt rename to installer/others/readme.txt diff --git a/installer/registry_software.bat b/installer/others/registry_software.bat similarity index 100% rename from installer/registry_software.bat rename to installer/others/registry_software.bat diff --git a/installer/setup-gpio85-systemd.sh b/installer/others/setup-gpio85-systemd.sh similarity index 100% rename from installer/setup-gpio85-systemd.sh rename to installer/others/setup-gpio85-systemd.sh diff --git a/installer/switch_dataBase_kylin.sh b/installer/others/switch_dataBase_kylin.sh similarity index 100% rename from installer/switch_dataBase_kylin.sh rename to installer/others/switch_dataBase_kylin.sh