From b9f3ce8a50f8acd82bfdb927f43d1dda28751dc8 Mon Sep 17 00:00:00 2001 From: yanistyle Date: Sun, 11 Oct 2026 23:19:50 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20install.sh?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- install.sh | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/install.sh b/install.sh index b81faed..a50dc33 100644 --- a/install.sh +++ b/install.sh @@ -12,7 +12,7 @@ VER="${TAG#v}" # Свой Gitea: сюда загружены те же файлы, что и в релизе GitHub # (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}" PROXY_PREFIX="https://ghproxy.net/" @@ -191,6 +191,12 @@ stop_service() { printf "${C}[*] Останавливаю %s...${N}\n" "$SERVICE_NAME" /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 SERVICE_STOPPED=1 @@ -199,6 +205,8 @@ stop_service() { printf "${C}[*] Распаковываю архив...${N}\n" tar -xzf "$FILE_NAME" || fail "Ошибка распаковки архива." +# Архив больше не нужен: освобождаем место (/tmp - это оперативная память) +rm -f "$FILE_NAME" BIN_PATH=$(find . -type f -name sing-box | head -n 1) [ -z "$BIN_PATH" ] && fail "Бинарник не найден внутри архива." @@ -209,11 +217,14 @@ printf "${C}[*] Устанавливаю...${N}\n" rm -f "$REAL_BIN" "$VERSION_CACHE" DEST_DIR=$(dirname "$DEST_FILE") -STAGE_FILE="$DEST_DIR/.sing-box.tmp.$$" -cp "$BIN_PATH" "$STAGE_FILE" || fail "Недостаточно места на целевом диске ($DEST_DIR)." -chmod +x "$STAGE_FILE" -mv -f "$STAGE_FILE" "$DEST_FILE" || { rm -f "$STAGE_FILE"; fail "Сбой замены файла."; } +# Места на флеше мало (бинарник ~70 МБ), старый и новый вместе не поместятся. +# Поэтому сначала удаляем старый бинарник (в том числе стоковый из пакета +# 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" != "$VER" ] && fail "Версия после установки ($NEW_VER) не совпадает с ожидаемой ($VER)."