fix pyenv

This commit is contained in:
Mateusz Gruszczyński
2025-10-24 14:44:56 +02:00
parent 435d5c3743
commit e9501bcd19

View File

@@ -237,25 +237,26 @@ def setup_certbot_venv(venv_dir: Path = Path("/opt/certbot")):
PYENV_ROOT.mkdir(parents=True, exist_ok=True) PYENV_ROOT.mkdir(parents=True, exist_ok=True)
run(["chown", "-R", f"{PYENV_OWNER}:{PYENV_OWNER}", "/opt/npm"], check=False) run(["chown", "-R", f"{PYENV_OWNER}:{PYENV_OWNER}", "/opt/npm"], check=False)
pyenv_bin = next((c for c in PYENV_BIN_CANDIDATES if shutil.which(c)), None) pyenv_bin = next((c for c in PYENV_BIN_CANDIDATES if shutil.which(c)), None)
if not pyenv_bin: if not pyenv_bin:
raise RuntimeError("Nie znaleziono 'pyenv' (spróbuj /usr/bin/pyenv lub /usr/lib/pyenv/bin/pyenv).") raise RuntimeError("Nie znaleziono 'pyenv' (spróbuj /usr/bin/pyenv lub /usr/lib/pyenv/bin/pyenv).")
env_pyenv = os.environ.copy() env_pyenv = os.environ.copy()
env_pyenv.update({ env_pyenv.update({
"HOME": "/opt/npm", "HOME": "/opt/npm", # ważne: wrapper pyenv robi cd $HOME
"PYENV_ROOT": str(PYENV_ROOT), "PYENV_ROOT": str(PYENV_ROOT),
"PATH": "/usr/lib/pyenv/bin:/usr/bin:/bin" "PATH": "/usr/lib/pyenv/bin:/usr/bin:/bin" # pluginy pyenv (install) + system
}) })
with step(f"Installing Python {PYTHON_VERSION} via pyenv into {PYENV_ROOT}"): with step(f"Installing Python {PYTHON_VERSION} via pyenv into {PYENV_ROOT}"):
run([ run([
"sudo", "-u", PYENV_OWNER, "-s", "env", "sudo", "-u", PYENV_OWNER, "-s",
"env",
f"HOME={env_pyenv['HOME']}", f"HOME={env_pyenv['HOME']}",
f"PYENV_ROOT={env_pyenv['PYENV_ROOT']}", f"PYENV_ROOT={env_pyenv['PYENV_ROOT']}",
f"PATH={env_pyenv['PATH']}", f"PATH={env_pyenv['PATH']}",
pyenv_bin, "install", "-s", PYTHON_VERSION "bash", "-lc",
], env=env_pyenv, cwd="/opt/npm") f'cd /opt/npm && "{pyenv_bin}" install -s {PYTHON_VERSION}'
], env=env_pyenv)
profile_snippet = f"""# Auto-generated by setup_certbot_venv profile_snippet = f"""# Auto-generated by setup_certbot_venv
# Ustawienia pyenv dla uzytkownika '{PYENV_OWNER}' # Ustawienia pyenv dla uzytkownika '{PYENV_OWNER}'
@@ -317,6 +318,7 @@ fi
run(["chown", "-R", f"{PYENV_OWNER}:{PYENV_OWNER}", str(PYENV_ROOT)], check=False) run(["chown", "-R", f"{PYENV_OWNER}:{PYENV_OWNER}", str(PYENV_ROOT)], check=False)
def configure_letsencrypt(): def configure_letsencrypt():
with step("configure letsencrypt"): with step("configure letsencrypt"):
run(["chown", "-R", "npm:npm", "/opt/certbot"], check=False) run(["chown", "-R", "npm:npm", "/opt/certbot"], check=False)