mirror of
https://github.com/fscarmen/sing-box.git
synced 2026-08-10 17:55:16 +08:00
Fix Alpine compatibility: use musl libc instead of glibc. https://github.com/fscarmen/sing-box/issues/249
This commit is contained in:
+5
-6
@@ -1,5 +1,5 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# 脚本更新日期 2025.12.14
|
# 脚本更新日期 2025.12.21
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
WORK_DIR=/sing-box
|
WORK_DIR=/sing-box
|
||||||
@@ -14,14 +14,13 @@ hint() { echo -e "\033[33m\033[01m$*\033[0m"; } # 黄色
|
|||||||
# 判断系统架构,以下载相应的应用
|
# 判断系统架构,以下载相应的应用
|
||||||
case "$ARCH" in
|
case "$ARCH" in
|
||||||
arm64 )
|
arm64 )
|
||||||
SING_BOX_ARCH=arm64; JQ_ARCH=arm64; QRENCODE_ARCH=arm64; ARGO_ARCH=arm64
|
SING_BOX_ARCH=arm64-musl; JQ_ARCH=arm64; QRENCODE_ARCH=arm64; ARGO_ARCH=arm64
|
||||||
;;
|
;;
|
||||||
amd64 )
|
amd64 )
|
||||||
SING_BOX_ARCH=amd64
|
SING_BOX_ARCH=amd64-musl; JQ_ARCH=amd64; QRENCODE_ARCH=amd64; ARGO_ARCH=amd64
|
||||||
JQ_ARCH=amd64; QRENCODE_ARCH=amd64; ARGO_ARCH=amd64
|
|
||||||
;;
|
;;
|
||||||
armv7 )
|
armv7 )
|
||||||
SING_BOX_ARCH=armv7; JQ_ARCH=armhf; QRENCODE_ARCH=arm; ARGO_ARCH=arm
|
SING_BOX_ARCH=armv7-musl; JQ_ARCH=armhf; QRENCODE_ARCH=arm; ARGO_ARCH=arm
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
@@ -35,7 +34,7 @@ check_latest_sing-box() {
|
|||||||
|
|
||||||
# 获取最终版本号
|
# 获取最终版本号
|
||||||
local VERSION=$(wget --no-check-certificate --tries=2 --timeout=3 -qO- https://api.github.com/repos/SagerNet/sing-box/releases | awk -F '["v]' -v var="tag_name.*$FORCE_VERSION" '$0 ~ var {print $5; exit}')
|
local VERSION=$(wget --no-check-certificate --tries=2 --timeout=3 -qO- https://api.github.com/repos/SagerNet/sing-box/releases | awk -F '["v]' -v var="tag_name.*$FORCE_VERSION" '$0 ~ var {print $5; exit}')
|
||||||
VERSION=${VERSION:-'1.13.0-alpha.27'}
|
VERSION=${VERSION:-'1.13.0-alpha.33'}
|
||||||
|
|
||||||
echo "$VERSION"
|
echo "$VERSION"
|
||||||
}
|
}
|
||||||
|
|||||||
+18
-14
@@ -20,7 +20,7 @@ NODE_TAG=("xtls-reality" "hysteria2" "tuic" "ShadowTLS" "shadowsocks" "trojan" "
|
|||||||
CONSECUTIVE_PORTS=${#PROTOCOL_LIST[@]}
|
CONSECUTIVE_PORTS=${#PROTOCOL_LIST[@]}
|
||||||
CDN_DOMAIN=("skk.moe" "ip.sb" "time.is" "cfip.xxxxxxxx.tk" "bestcf.top" "cdn.2020111.xyz" "xn--b6gac.eu.org" "cf.090227.xyz")
|
CDN_DOMAIN=("skk.moe" "ip.sb" "time.is" "cfip.xxxxxxxx.tk" "bestcf.top" "cdn.2020111.xyz" "xn--b6gac.eu.org" "cf.090227.xyz")
|
||||||
SUBSCRIBE_TEMPLATE="https://raw.githubusercontent.com/fscarmen/client_template/main"
|
SUBSCRIBE_TEMPLATE="https://raw.githubusercontent.com/fscarmen/client_template/main"
|
||||||
DEFAULT_NEWEST_VERSION='1.13.0-alpha.31'
|
DEFAULT_NEWEST_VERSION='1.13.0-alpha.33'
|
||||||
|
|
||||||
export DEBIAN_FRONTEND=noninteractive
|
export DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
@@ -1041,15 +1041,6 @@ cmd_systemctl() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
check_system_info() {
|
check_system_info() {
|
||||||
# 判断虚拟化
|
|
||||||
if [ -x "$(type -p systemd-detect-virt)" ]; then
|
|
||||||
VIRT=$(systemd-detect-virt)
|
|
||||||
elif [ -x "$(type -p hostnamectl)" ]; then
|
|
||||||
VIRT=$(hostnamectl | awk '/Virtualization/{print $NF}')
|
|
||||||
elif [ -x "$(type -p virt-what)" ]; then
|
|
||||||
VIRT=$(virt-what)
|
|
||||||
fi
|
|
||||||
|
|
||||||
[ -s /etc/os-release ] && SYS="$(awk -F '"' 'tolower($0) ~ /pretty_name/{print $2}' /etc/os-release)"
|
[ -s /etc/os-release ] && SYS="$(awk -F '"' 'tolower($0) ~ /pretty_name/{print $2}' /etc/os-release)"
|
||||||
[[ -z "$SYS" && -x "$(type -p hostnamectl)" ]] && SYS="$(hostnamectl | awk -F ': ' 'tolower($0) ~ /operating system/{print $2}')"
|
[[ -z "$SYS" && -x "$(type -p hostnamectl)" ]] && SYS="$(hostnamectl | awk -F ': ' 'tolower($0) ~ /operating system/{print $2}')"
|
||||||
[[ -z "$SYS" && -x "$(type -p lsb_release)" ]] && SYS="$(lsb_release -sd)"
|
[[ -z "$SYS" && -x "$(type -p lsb_release)" ]] && SYS="$(lsb_release -sd)"
|
||||||
@@ -1086,6 +1077,20 @@ check_system_info() {
|
|||||||
elif [ "$SYSTEM" = 'Alpine' ]; then
|
elif [ "$SYSTEM" = 'Alpine' ]; then
|
||||||
ARGO_DAEMON_FILE='/etc/init.d/argo'; SINGBOX_DAEMON_FILE='/etc/init.d/sing-box'
|
ARGO_DAEMON_FILE='/etc/init.d/argo'; SINGBOX_DAEMON_FILE='/etc/init.d/sing-box'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# 判断虚拟化
|
||||||
|
if [ -x "$(type -p systemd-detect-virt)" ]; then
|
||||||
|
VIRT=$(systemd-detect-virt)
|
||||||
|
elif grep -qa container= /proc/1/environ 2>/dev/null; then
|
||||||
|
VIRT=$(tr '\0' '\n' </proc/1/environ | awk -F= '/container=/{print $2; exit}')
|
||||||
|
elif grep -Eq '(lxc|docker|kubepods|containerd)' /proc/1/cgroup 2>/dev/null; then
|
||||||
|
VIRT=$(grep -Eo '(lxc|docker|kubepods|containerd)' /proc/1/cgroup | sed -n 1p)
|
||||||
|
elif [ -x "$(type -p hostnamectl)" ]; then
|
||||||
|
VIRT=$(hostnamectl | awk '/Virtualization/{print $NF}')
|
||||||
|
else
|
||||||
|
[ -x "$(type -p virt-what)" ] && ${PACKAGE_INSTALL[int]} virt-what >/dev/null 2>&1
|
||||||
|
[ -x "$(type -p virt-what)" ] && VIRT=$(virt-what | sed -n 1p) || VIRT=unknown
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# 获取 sing-box 最新版本
|
# 获取 sing-box 最新版本
|
||||||
@@ -1390,10 +1395,10 @@ sing-box_variables() {
|
|||||||
check_dependencies() {
|
check_dependencies() {
|
||||||
# 如果是 Alpine,先升级 wget ,安装 systemctl-py 版
|
# 如果是 Alpine,先升级 wget ,安装 systemctl-py 版
|
||||||
if [ "$SYSTEM" = 'Alpine' ]; then
|
if [ "$SYSTEM" = 'Alpine' ]; then
|
||||||
local CHECK_WGET=$(wget 2>&1 | head -n 1)
|
local CHECK_WGET=$(wget 2>&1 | sed -n 1p)
|
||||||
grep -qi 'busybox' <<< "$CHECK_WGET" && ${PACKAGE_INSTALL[int]} wget >/dev/null 2>&1
|
grep -qi 'busybox' <<< "$CHECK_WGET" && ${PACKAGE_INSTALL[int]} wget >/dev/null 2>&1
|
||||||
local DEPS_CHECK=("bash" "rc-update" "virt-what" "iptables" "ip6tables")
|
local DEPS_CHECK=("bash" "rc-update" "iptables" "ip6tables")
|
||||||
local DEPS_INSTALL=("bash" "openrc" "virt-what" "iptables" "ip6tables")
|
local DEPS_INSTALL=("bash" "openrc" "iptables" "ip6tables")
|
||||||
for g in "${!DEPS_CHECK[@]}"; do
|
for g in "${!DEPS_CHECK[@]}"; do
|
||||||
[ ! -x "$(type -p ${DEPS_CHECK[g]})" ] && DEPS_ALPINE+=(${DEPS_INSTALL[g]})
|
[ ! -x "$(type -p ${DEPS_CHECK[g]})" ] && DEPS_ALPINE+=(${DEPS_INSTALL[g]})
|
||||||
done
|
done
|
||||||
@@ -1401,7 +1406,6 @@ check_dependencies() {
|
|||||||
info "\n $(text 7) $(sed "s/ /,&/g" <<< ${DEPS_ALPINE[@]}) \n"
|
info "\n $(text 7) $(sed "s/ /,&/g" <<< ${DEPS_ALPINE[@]}) \n"
|
||||||
${PACKAGE_UPDATE[int]} >/dev/null 2>&1
|
${PACKAGE_UPDATE[int]} >/dev/null 2>&1
|
||||||
${PACKAGE_INSTALL[int]} ${DEPS_ALPINE[@]} >/dev/null 2>&1
|
${PACKAGE_INSTALL[int]} ${DEPS_ALPINE[@]} >/dev/null 2>&1
|
||||||
[[ -z "$VIRT" && "${DEPS_ALPINE[@]}" =~ 'virt-what' ]] && VIRT=$(virt-what | tr '\n' ' ')
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user