Обновить install.sh

This commit is contained in:
yanistyle
2026-10-11 23:19:50 +03:00
parent 901a9af0b7
commit b9f3ce8a50
+16 -5
View File
@@ -12,7 +12,7 @@ VER="${TAG#v}"
# Свой Gitea: сюда загружены те же файлы, что и в релизе GitHub # Свой Gitea: сюда загружены те же файлы, что и в релизе GitHub
# (Releases -> вложения). Пока адрес не заменён - шаг пропускается. # (Releases -> вложения). Пока адрес не заменён - шаг пропускается.
GITEA_BASE="https://git.ownsrv.ru/yanistyle/sing-box-extended/releases/download/${TAG}" GITEA_BASE="https://gitea.example.com/USER/REPO/releases/download/${TAG}"
GITHUB_BASE="https://github.com/shtorm-7/sing-box-extended/releases/download/${TAG}" GITHUB_BASE="https://github.com/shtorm-7/sing-box-extended/releases/download/${TAG}"
PROXY_PREFIX="https://ghproxy.net/" PROXY_PREFIX="https://ghproxy.net/"
@@ -191,6 +191,12 @@ stop_service() {
printf "${C}[*] Останавливаю %s...${N}\n" "$SERVICE_NAME" printf "${C}[*] Останавливаю %s...${N}\n" "$SERVICE_NAME"
/etc/init.d/"$SERVICE_NAME" stop >/dev/null 2>&1 /etc/init.d/"$SERVICE_NAME" stop >/dev/null 2>&1
# Если службой управляет podkop, останавливаем и сам сервис sing-box,
# чтобы procd не перезапустил стоковый sing-box при удалении бинарника
if [ "$SERVICE_NAME" != "sing-box" ] && [ -f /etc/init.d/sing-box ]; then
/etc/init.d/sing-box stop >/dev/null 2>&1
fi
killall sing-box >/dev/null 2>&1 killall sing-box >/dev/null 2>&1
SERVICE_STOPPED=1 SERVICE_STOPPED=1
@@ -199,6 +205,8 @@ stop_service() {
printf "${C}[*] Распаковываю архив...${N}\n" printf "${C}[*] Распаковываю архив...${N}\n"
tar -xzf "$FILE_NAME" || fail "Ошибка распаковки архива." tar -xzf "$FILE_NAME" || fail "Ошибка распаковки архива."
# Архив больше не нужен: освобождаем место (/tmp - это оперативная память)
rm -f "$FILE_NAME"
BIN_PATH=$(find . -type f -name sing-box | head -n 1) BIN_PATH=$(find . -type f -name sing-box | head -n 1)
[ -z "$BIN_PATH" ] && fail "Бинарник не найден внутри архива." [ -z "$BIN_PATH" ] && fail "Бинарник не найден внутри архива."
@@ -209,11 +217,14 @@ printf "${C}[*] Устанавливаю...${N}\n"
rm -f "$REAL_BIN" "$VERSION_CACHE" rm -f "$REAL_BIN" "$VERSION_CACHE"
DEST_DIR=$(dirname "$DEST_FILE") DEST_DIR=$(dirname "$DEST_FILE")
STAGE_FILE="$DEST_DIR/.sing-box.tmp.$$"
cp "$BIN_PATH" "$STAGE_FILE" || fail "Недостаточно места на целевом диске ($DEST_DIR)." # Места на флеше мало (бинарник ~70 МБ), старый и новый вместе не поместятся.
chmod +x "$STAGE_FILE" # Поэтому сначала удаляем старый бинарник (в том числе стоковый из пакета
mv -f "$STAGE_FILE" "$DEST_FILE" || { rm -f "$STAGE_FILE"; fail "Сбой замены файла."; } # sing-box), и только потом копируем новый.
rm -f "$DEST_FILE"
cp "$BIN_PATH" "$DEST_FILE" || { rm -f "$DEST_FILE"; fail "Недостаточно места на целевом диске ($DEST_DIR). sing-box не установлен."; }
chmod +x "$DEST_FILE"
sync
NEW_VER=$("$DEST_FILE" version 2>/dev/null | head -n 1 | awk '{print $NF}') NEW_VER=$("$DEST_FILE" version 2>/dev/null | head -n 1 | awk '{print $NF}')
[ "$NEW_VER" != "$VER" ] && fail "Версия после установки ($NEW_VER) не совпадает с ожидаемой ($VER)." [ "$NEW_VER" != "$VER" ] && fail "Версия после установки ($NEW_VER) не совпадает с ожидаемой ($VER)."