fix pyenv
This commit is contained in:
@@ -248,17 +248,34 @@ def setup_certbot_venv(venv_dir: Path = Path("/opt/certbot")):
|
|||||||
"PATH": "/usr/lib/pyenv/bin:/usr/bin:/bin"
|
"PATH": "/usr/lib/pyenv/bin:/usr/bin:/bin"
|
||||||
})
|
})
|
||||||
with step(f"Installing Python {PYTHON_VERSION} via pyenv into {PYENV_ROOT}"):
|
with step(f"Installing Python {PYTHON_VERSION} via pyenv into {PYENV_ROOT}"):
|
||||||
cmd = (
|
# 1) Upewnij się, że PYENV_ROOT istnieje i należy do 'npm'
|
||||||
|
run(["mkdir", "-p", str(PYENV_ROOT)])
|
||||||
|
run(["chown", "-R", f"{PYENV_OWNER}:{PYENV_OWNER}", "/opt/npm"], check=False)
|
||||||
|
|
||||||
|
# 2) Jeżeli lokalny pyenv nie istnieje – sklonuj go (pomija wrappera Debiana)
|
||||||
|
run([
|
||||||
|
"sudo", "-u", PYENV_OWNER, "bash", "-lc",
|
||||||
|
'if [ ! -x "/opt/npm/.pyenv/bin/pyenv" ]; then '
|
||||||
|
' command -v git >/dev/null 2>&1 || sudo apt-get install -y git; '
|
||||||
|
' git clone --depth=1 https://github.com/pyenv/pyenv.git /opt/npm/.pyenv; '
|
||||||
|
"fi"
|
||||||
|
])
|
||||||
|
|
||||||
|
# 3) Z bardzo czystym środowiskiem (env -i) instalujemy CPython
|
||||||
|
# – żadnych /etc/profile, żadnych wrapperów.
|
||||||
|
install_cmd = (
|
||||||
'export HOME=/opt/npm; '
|
'export HOME=/opt/npm; '
|
||||||
f'export PYENV_ROOT="{PYENV_ROOT}"; '
|
'export PYENV_ROOT=/opt/npm/.pyenv; '
|
||||||
'export PATH="$PYENV_ROOT/bin:/usr/lib/pyenv/bin:/usr/bin:/bin"; '
|
'export PATH="$PYENV_ROOT/bin:/usr/bin:/bin"; '
|
||||||
'mkdir -p "$PYENV_ROOT"; cd /opt/npm; '
|
'mkdir -p "$PYENV_ROOT"; cd "$HOME"; '
|
||||||
f'/usr/lib/pyenv/bin/pyenv install -s {PYTHON_VERSION}'
|
f'pyenv install -s {PYTHON_VERSION}'
|
||||||
)
|
)
|
||||||
run([
|
run([
|
||||||
"sudo", "-H", "-u", PYENV_OWNER,
|
"sudo", "-u", PYENV_OWNER, "env", "-i",
|
||||||
"--preserve-env=HOME,PYENV_ROOT,PATH",
|
"HOME=/opt/npm",
|
||||||
"bash", "-lc", cmd
|
f"PYENV_ROOT={PYENV_ROOT}",
|
||||||
|
f"PATH={PYENV_ROOT}/bin:/usr/bin:/bin",
|
||||||
|
"bash", "-lc", install_cmd
|
||||||
])
|
])
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user