From 06ec22ef3d2c7035f5512ff1a08fefd1d90004b0 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:35:11 +0900 Subject: [PATCH] Make install entrypoint root and sudo friendly --- install.sh | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/install.sh b/install.sh index a49b68c..620c8cb 100644 --- a/install.sh +++ b/install.sh @@ -3,19 +3,37 @@ set -euo pipefail # ========================================================== # Virtuality public installer entrypoint -# Preferred one-command install file. +# Universal one-command install file. # -# Usage: -# curl -fsSL https://raw.githubusercontent.com/viktor138irk/virtuality/main/install.sh | sudo bash +# Works both as root and as a regular sudo-capable user: +# curl -fsSL 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" + +cleanup() { + rm -f "$TMP_FILE" 2>/dev/null || true +} +trap cleanup EXIT if command -v curl >/dev/null 2>&1; then - curl -fsSL "$INSTALL_URL" | bash + curl -fsSL "$INSTALL_URL" -o "$TMP_FILE" elif command -v wget >/dev/null 2>&1; then - wget -qO- "$INSTALL_URL" | bash + wget -qO "$TMP_FILE" "$INSTALL_URL" else echo "Ошибка: нужен curl или wget для загрузки установщика Virtuality." exit 1 fi + +chmod +x "$TMP_FILE" + +if [[ "${EUID}" -eq 0 ]]; then + bash "$TMP_FILE" +else + if ! command -v sudo >/dev/null 2>&1; then + echo "Ошибка: нужен root или sudo. Запусти под root или установи sudo." + exit 1 + 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" +fi