diff --git a/nt_install.sh b/nt_install.sh index 7797d01..884fc11 100644 --- a/nt_install.sh +++ b/nt_install.sh @@ -9,28 +9,37 @@ checkRootPermit() { checkSystemArch() { arch=$(uname -m) if [[ $arch == "x86_64" ]]; then - archParam="amd64" + archParam="amd64" fi if [[ $arch == "aarch64" ]]; then - archParam="arm64" + archParam="arm64" + fi + + if [[ $arch == "arm64" ]]; then + archParam="arm64" + fi + + if [[ $archParam == "" ]]; then + echo "未知的系统架构,请联系作者" + exit 1 fi } checkSystemDistribution() { case "$OSTYPE" in - darwin*) - osDistribution="darwin" - downPath="/var/tmp/nexttrace" - ;; - linux*) - osDistribution="linux" - downPath="/var/tmp/nexttrace" - ;; + darwin*) + osDistribution="darwin" + downPath="/var/tmp/nexttrace" + ;; + linux*) + osDistribution="linux" + downPath="/var/tmp/nexttrace" + ;; *) - echo "unknown: $OSTYPE" - exit 1 - ;; + echo "unknown: $OSTYPE" + exit 1 + ;; esac } @@ -43,30 +52,30 @@ installWgetPackage() { # macOS should install wget originally. Nothing to do echo "wget 正在安装中..." # try apt - apt -h &> /dev/null + apt -h >/dev/null if [ $? -eq 0 ]; then - # 先更新一下数据源,有些机器数据源比较老可能会404 - apt update -y &> /dev/null - apt install wget -y &> /dev/null + # 先更新一下数据源,有些机器数据源比较老可能会404 + apt update -y >/dev/null + apt install wget -y >/dev/null fi # try yum - yum -h &> /dev/null + yum -h >/dev/null if [ $? -eq 0 ]; then - yum install wget -y &> /dev/null + yum install wget -y >/dev/null fi # try dnf - dnf -h &> /dev/null + dnf -h >/dev/null if [ $? -eq 0 ]; then - dnf install wget -y &> /dev/null + dnf install wget -y >/dev/null fi # try pacman - pacman -h &> /dev/null + pacman -h >/dev/null if [ $? -eq 0 ]; then - pacman -Sy - pacman -S wget + pacman -Sy + pacman -S wget fi } @@ -75,101 +84,101 @@ installJqPackage() { # macOS should install wget originally. Nothing to do echo "jq 正在安装中..." # try apt - apt -h &> /dev/null + apt -h >/dev/null if [ $? -eq 0 ]; then - # 先更新一下数据源,有些机器数据源比较老可能会404 - apt update -y &> /dev/null - apt install jq -y &> /dev/null + # 先更新一下数据源,有些机器数据源比较老可能会404 + apt update -y >/dev/null + apt install jq -y >/dev/null fi # try yum - yum -h &> /dev/null + yum -h >/dev/null if [ $? -eq 0 ]; then - yum install jq -y &> /dev/null + yum install jq -y >/dev/null fi # try dnf - dnf -h &> /dev/null + dnf -h >/dev/null if [ $? -eq 0 ]; then - dnf install jq -y &> /dev/null + dnf install jq -y >/dev/null fi # try pacman - pacman -h &> /dev/null + pacman -h >/dev/null if [ $? -eq 0 ]; then - pacman -Sy - pacman -S jq + pacman -Sy + pacman -S jq fi } checkWgetPackage() { - wget -h &> /dev/null + wget -h >/dev/null if [ $? -ne 0 ]; then - read -r -p "您还没有安装wget,是否安装? (y/n)" input + read -r -p "您还没有安装wget,是否安装? (y/n)" input - case $input in - [yY][eE][sS]|[yY]) - installWgetPackage - ;; + case $input in + [yY][eE][sS] | [yY]) + installWgetPackage + ;; - [nN][oO]|[nN]) - echo "您选择了取消安装,脚本即将退出" - exit 1 - ;; + [nN][oO] | [nN]) + echo "您选择了取消安装,脚本即将退出" + exit 1 + ;; - *) - installWgetPackage - ;; - esac + *) + installWgetPackage + ;; + esac fi } checkJqPackage() { - jq -h &> /dev/null + jq -h >/dev/null if [ $? -ne 0 ]; then - echo "您还没有安装jq, 当您取消安装,我们会使用awk获取当前版本号。" - read -r -p "但是如遇Github变更API,这可能会存在问题,是否安装? (y/n)" input + echo "您还没有安装jq, 当您取消安装,我们会使用awk获取当前版本号。" + read -r -p "但是如遇Github变更API,这可能会存在问题,是否安装? (y/n)" input - case $input in - [yY][eE][sS]|[yY]) - installJqPackage - ;; + case $input in + [yY][eE][sS] | [yY]) + installJqPackage + ;; - [nN][oO]|[nN]) - echo "您选择了取消安装" - return 0 - ;; + [nN][oO] | [nN]) + echo "您选择了取消安装" + return 0 + ;; - *) - installJqPackage - ;; - esac + *) + installJqPackage + ;; + esac fi return 1 } downloadBinrayFile() { - echo "正在获取最新版的 NextTrace 发行版文件信息..." + echo "正在获取最新版的 NextTrace 发行版文件信息..." checkJqPackage # 简单说明一下,Github提供了一个API,可以获取最新发行版本的二进制文件下载地址(对应的是browser_download_url),根据刚刚测得的osDistribution、archParam,获取对应的下载地址 if [[ $? -eq 1 ]]; then - # 支持 jq 不回退 - # echo nexttrace_${osDistribution}_${archParam} - latestURL=$(curl -s https://api.github.com/repos/xgadget-lab/nexttrace/releases/latest | jq ".assets[] | select(.name == \"nexttrace_${osDistribution}_${archParam}\") | .browser_download_url") - latestURL=${latestURL: 1: -1} + # 支持 jq 不回退 + # echo nexttrace_${osDistribution}_${archParam} + latestURL=$(curl -s https://api.github.com/repos/xgadget-lab/nexttrace/releases/latest | jq ".assets[] | select(.name == \"nexttrace_${osDistribution}_${archParam}\") | .browser_download_url") + latestURL=${latestURL:1:-1} else - # 不支持 jq,用户拒绝安装,回退 awk - latestURL=$(curl -s https://api.github.com/repos/xgadget-lab/nexttrace/releases/latest | grep -i "browser_download_url.*${osDistribution}.*${archParam}" | awk -F '"' '{print $4}') + # 不支持 jq,用户拒绝安装,回退 awk + latestURL=$(curl -s https://api.github.com/repos/xgadget-lab/nexttrace/releases/latest | grep -i "browser_download_url.*${osDistribution}.*${archParam}" | awk -F '"' '{print $4}') fi if [ "$countryCode" == "CN" ]; then read -r -p "检测到国内网络环境,是否使用镜像下载以加速(y/n)" input case $input in - [yY][eE][sS]|[yY]) + [yY][eE][sS] | [yY]) latestURL="https://ghproxy.com/"$latestURL ;; - [nN][oO]|[nN]) + [nN][oO] | [nN]) echo "您选择了不使用镜像,下载可能会变得异常缓慢,或者失败" ;; @@ -178,27 +187,29 @@ downloadBinrayFile() { ;; esac fi - + echo "正在下载 NextTrace 二进制文件..." - wget -O ${downPath} ${latestURL} &> /dev/null - if [ $? -eq 0 ]; - then - echo "NextTrace 现在已经在您的系统中可用" - changeMode - mv ${downPath} ${usrPath} + wget -O ${downPath} ${latestURL} >/dev/null + if [ $? -eq 0 ]; then + echo "NextTrace 现在已经在您的系统中可用" + changeMode + mv ${downPath} ${usrPath} + if [[ ${osDistribution} == "macOS" ]]; then + xattr -r -d com.apple.quarantine ${usrPath}/nexttrace + fi else - echo "NextTrace 下载失败,请检查您的网络是否正常" - exit 1 + echo "NextTrace 下载失败,请检查您的网络是否正常" + exit 1 fi } changeMode() { - chmod +x ${downPath} &> /dev/null + chmod +x ${downPath} >/dev/null } runBinrayFileHelp() { if [ -e ${usrPath} ]; then - ${usrPath}/nexttrace -h + ${usrPath}/nexttrace -h fi }