fix: distro package fallback before pyenv for Python install
This commit is contained in:
parent
31013b3e82
commit
278d82441d
1 changed files with 26 additions and 15 deletions
27
setup.sh
27
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
|
apt-get update -qq 2>/dev/null && apt-get install -y -qq curl 2>/dev/null || true
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# ── Install pyenv + Python 3.12 ───────────────────────────────────────
|
# ── Ensure Python 3.10+ is available ─────────────────────────────────
|
||||||
PYTHON_BIN=""
|
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
|
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"
|
PYTHON_BIN="python3"
|
||||||
elif [ -f "$HOME/.pyenv/versions/3.12.0/bin/python3" ]; then
|
elif [ -f "$HOME/.pyenv/versions/3.12.0/bin/python3" ]; then
|
||||||
PYTHON_BIN="$HOME/.pyenv/versions/3.12.0/bin/python3"
|
PYTHON_BIN="$HOME/.pyenv/versions/3.12.0/bin/python3"
|
||||||
else
|
else
|
||||||
echo -e "${YELLOW}Installing pyenv + Python 3.12...${NC}"
|
echo -e "${YELLOW}Installing Python 3...${NC}"
|
||||||
if ! command -v git >/dev/null 2>&1; then
|
# Try distro package first (fast)
|
||||||
apt-get update -qq 2>/dev/null && apt-get install -y -qq git 2>/dev/null || true
|
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
|
fi
|
||||||
# Install build deps
|
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 \
|
apt-get install -y -qq make build-essential libssl-dev zlib1g-dev \
|
||||||
libbz2-dev libreadline-dev libsqlite3-dev libncursesw5-dev \
|
libbz2-dev libreadline-dev libsqlite3-dev libffi-dev liblzma-dev 2>/dev/null || true
|
||||||
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
|
curl -fsSL https://pyenv.run | bash 2>/dev/null
|
||||||
export PYENV_ROOT="$HOME/.pyenv"
|
export PYENV_ROOT="$HOME/.pyenv"
|
||||||
export PATH="$PYENV_ROOT/bin:$PATH"
|
export PATH="$PYENV_ROOT/bin:$PATH"
|
||||||
eval "$(pyenv init -)"
|
eval "$(pyenv init -)" 2>/dev/null
|
||||||
pyenv install 3.12.0 -s 2>/dev/null
|
pyenv install 3.12.0 -s 2>/dev/null
|
||||||
pyenv global 3.12.0
|
pyenv global 3.12.0
|
||||||
PYTHON_BIN="$HOME/.pyenv/versions/3.12.0/bin/python3"
|
PYTHON_BIN="$HOME/.pyenv/versions/3.12.0/bin/python3"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo -e "${GREEN}Python: $($PYTHON_BIN --version)${NC}"
|
echo -e "${GREEN}Python: $($PYTHON_BIN --version)${NC}"
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue