From 1f4ef72e670790a11bb974753217a7f6f28af80b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B8=D0=BA=D1=82=D0=BE=D1=80?= <78488229+viktor138irk@users.noreply.github.com> Date: Wed, 6 May 2026 20:43:18 +0900 Subject: [PATCH] Make install entrypoint verbose and failure visible --- install.sh | 52 +++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 43 insertions(+), 9 deletions(-) diff --git a/install.sh b/install.sh index 620c8cb..bd8abe6 100644 --- a/install.sh +++ b/install.sh @@ -6,34 +6,68 @@ set -euo pipefail # Universal one-command install file. # # Works both as root and as a regular sudo-capable user: -# curl -fsSL https://raw.githubusercontent.com/viktor138irk/virtuality/main/install.sh | bash +# curl -fL https://raw.githubusercontent.com/viktor138irk/virtuality/main/install.sh | bash # ========================================================== INSTALL_URL="${VIRTUALITY_BOOTSTRAP_URL:-https://raw.githubusercontent.com/viktor138irk/virtuality/main/bootstrap.sh}" TMP_FILE="/tmp/virtuality-install-$$.sh" +ESC="\033" +RESET="${ESC}[0m" +BOLD="${ESC}[1m" +GREEN="${ESC}[32m" +RED="${ESC}[31m" +CYAN="${ESC}[36m" +GRAY="${ESC}[90m" + cleanup() { rm -f "$TMP_FILE" 2>/dev/null || true } trap cleanup EXIT +ok() { echo -e "${GREEN}✓${RESET} $*"; } +fail() { echo -e "${RED}✗${RESET} $*"; exit 1; } + +cat </dev/null 2>&1; then - curl -fsSL "$INSTALL_URL" -o "$TMP_FILE" + curl -fL --show-error "$INSTALL_URL" -o "$TMP_FILE" || fail "Не удалось скачать bootstrap. Проверь, что репозиторий публичный и URL доступен." elif command -v wget >/dev/null 2>&1; then - wget -qO "$TMP_FILE" "$INSTALL_URL" + wget -O "$TMP_FILE" "$INSTALL_URL" || fail "Не удалось скачать bootstrap. Проверь, что репозиторий публичный и URL доступен." else - echo "Ошибка: нужен curl или wget для загрузки установщика Virtuality." - exit 1 + fail "Нужен curl или wget для загрузки установщика Virtuality." +fi + +if [[ ! -s "$TMP_FILE" ]]; then + fail "Скачанный bootstrap пустой. Чаще всего это private repository или проблема сети." fi chmod +x "$TMP_FILE" +ok "Установщик скачан: $TMP_FILE" +echo +echo "[2/3] Проверяем режим запуска..." if [[ "${EUID}" -eq 0 ]]; then - bash "$TMP_FILE" + ok "Запуск под root" + echo + echo "[3/3] Запускаем установку Virtuality..." + bash "$TMP_FILE" || fail "Установка остановлена с ошибкой. Выше должна быть причина. Логи: /var/log/virtuality/" else if ! command -v sudo >/dev/null 2>&1; then - echo "Ошибка: нужен root или sudo. Запусти под root или установи sudo." - exit 1 + fail "Нужен root или sudo. Запусти под root или установи sudo." fi - sudo --preserve-env=VIRTUALITY_USER,VIRTUALITY_WEB_PORT,VIRTUALITY_MIN_ROOT_FREE_MB,VIRTUALITY_MIN_VAR_FREE_MB,VIRTUALITY_MIN_RAM_MB,VIRTUALITY_MIN_CPU_CORES,VIRTUALITY_SKIP_REQUIREMENTS,VIRTUALITY_SETUP_BRIDGE,VIRTUALITY_BRIDGE_IFACE,VIRTUALITY_CREATE_TEST_VM,VIRTUALITY_REPO_URL,VIRTUALITY_PROJECT_BASE_DIR,VIRTUALITY_PROJECT_DIR,VIRTUALITY_BOOTSTRAP_URL bash "$TMP_FILE" + + ok "Запуск под обычным пользователем, будет использован sudo" + echo + echo "[3/3] Запускаем установку Virtuality через sudo..." + + sudo --preserve-env=VIRTUALITY_USER,VIRTUALITY_WEB_PORT,VIRTUALITY_MIN_ROOT_FREE_MB,VIRTUALITY_MIN_VAR_FREE_MB,VIRTUALITY_MIN_RAM_MB,VIRTUALITY_MIN_CPU_CORES,VIRTUALITY_SKIP_REQUIREMENTS,VIRTUALITY_SETUP_BRIDGE,VIRTUALITY_BRIDGE_IFACE,VIRTUALITY_CREATE_TEST_VM,VIRTUALITY_REPO_URL,VIRTUALITY_PROJECT_BASE_DIR,VIRTUALITY_PROJECT_DIR,VIRTUALITY_BOOTSTRAP_URL bash "$TMP_FILE" || fail "Установка остановлена с ошибкой. Выше должна быть причина. Логи: /var/log/virtuality/" fi + +ok "Установка завершена"