Обновить install.sh
This commit is contained in:
+16
-5
@@ -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)."
|
||||||
|
|||||||
Reference in New Issue
Block a user