From 278d82441d18f1b595d7648853550b0701d33fa8 Mon Sep 17 00:00:00 2001 From: admin Date: Mon, 3 Aug 2026 11:47:03 +0000 Subject: [PATCH] fix: distro package fallback before pyenv for Python install --- setup.sh | 41 ++++++++++++++++++++++++++--------------- 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/setup.sh b/setup.sh index 578b7fc..c4d1571 100644 --- a/setup.sh +++ b/setup.sh @@ -19,28 +19,39 @@ if ! command -v curl >/dev/null 2>&1 && ! command -v wget >/dev/null 2>&1; then apt-get update -qq 2>/dev/null && apt-get install -y -qq curl 2>/dev/null || true fi -# ── Install pyenv + Python 3.12 ─────────────────────────────────────── +# ── Ensure Python 3.10+ is available ───────────────────────────────── PYTHON_BIN="" if command -v python3 >/dev/null 2>&1 && python3 -c "import sys; exit(0 if sys.version_info >= (3,10) else 1)" 2>/dev/null; then PYTHON_BIN="python3" elif [ -f "$HOME/.pyenv/versions/3.12.0/bin/python3" ]; then PYTHON_BIN="$HOME/.pyenv/versions/3.12.0/bin/python3" else - echo -e "${YELLOW}Installing pyenv + Python 3.12...${NC}" - if ! command -v git >/dev/null 2>&1; then - apt-get update -qq 2>/dev/null && apt-get install -y -qq git 2>/dev/null || true + echo -e "${YELLOW}Installing Python 3...${NC}" + # Try distro package first (fast) + if command -v apt-get >/dev/null 2>&1; then + apt-get update -qq && apt-get install -y -qq python3 2>/dev/null + elif command -v yum >/dev/null 2>&1; then + yum install -y -q python3 2>/dev/null + elif command -v dnf >/dev/null 2>&1; then + dnf install -y -q python3 2>/dev/null + elif command -v apk >/dev/null 2>&1; then + apk add --no-cache python3 2>/dev/null + fi + if command -v python3 >/dev/null 2>&1; then + PYTHON_BIN="python3" + else + # Last resort: pyenv (slow but works anywhere) + echo -e "${YELLOW}Building Python via pyenv (3-5 min)...${NC}" + apt-get install -y -qq make build-essential libssl-dev zlib1g-dev \ + libbz2-dev libreadline-dev libsqlite3-dev libffi-dev liblzma-dev 2>/dev/null || true + curl -fsSL https://pyenv.run | bash 2>/dev/null + export PYENV_ROOT="$HOME/.pyenv" + export PATH="$PYENV_ROOT/bin:$PATH" + eval "$(pyenv init -)" 2>/dev/null + pyenv install 3.12.0 -s 2>/dev/null + pyenv global 3.12.0 + PYTHON_BIN="$HOME/.pyenv/versions/3.12.0/bin/python3" fi - # Install build deps - apt-get install -y -qq make build-essential libssl-dev zlib1g-dev \ - libbz2-dev libreadline-dev libsqlite3-dev libncursesw5-dev \ - xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev 2>/dev/null || true - curl -fsSL https://pyenv.run | bash 2>/dev/null - export PYENV_ROOT="$HOME/.pyenv" - export PATH="$PYENV_ROOT/bin:$PATH" - eval "$(pyenv init -)" - pyenv install 3.12.0 -s 2>/dev/null - pyenv global 3.12.0 - PYTHON_BIN="$HOME/.pyenv/versions/3.12.0/bin/python3" fi echo -e "${GREEN}Python: $($PYTHON_BIN --version)${NC}"