fix pyenv
This commit is contained in:
@@ -237,28 +237,38 @@ def setup_certbot_venv(venv_dir: Path = Path("/opt/certbot")):
|
||||
PYENV_ROOT.mkdir(parents=True, exist_ok=True)
|
||||
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)
|
||||
if not pyenv_bin:
|
||||
raise RuntimeError("Nie znaleziono 'pyenv' (spróbuj /usr/bin/pyenv lub /usr/lib/pyenv/bin/pyenv).")
|
||||
|
||||
env_pyenv = os.environ.copy()
|
||||
env_pyenv["PYENV_ROOT"] = str(PYENV_ROOT)
|
||||
|
||||
env_pyenv.update({
|
||||
"HOME": "/opt/npm",
|
||||
"PYENV_ROOT": str(PYENV_ROOT),
|
||||
"PATH": "/usr/lib/pyenv/bin:/usr/bin:/bin"
|
||||
})
|
||||
with step(f"Installing Python {PYTHON_VERSION} via pyenv into {PYENV_ROOT}"):
|
||||
run([
|
||||
"sudo", "-u", PYENV_OWNER, "-H",
|
||||
"env", f"PYENV_ROOT={PYENV_ROOT}", pyenv_bin,
|
||||
"install", "-s", PYTHON_VERSION
|
||||
], env=env_pyenv)
|
||||
"sudo", "-u", PYENV_OWNER, "-s", "env",
|
||||
f"HOME={env_pyenv['HOME']}",
|
||||
f"PYENV_ROOT={env_pyenv['PYENV_ROOT']}",
|
||||
f"PATH={env_pyenv['PATH']}",
|
||||
pyenv_bin, "install", "-s", PYTHON_VERSION
|
||||
], env=env_pyenv, cwd="/opt/npm")
|
||||
|
||||
profile_snippet = f"""# Auto-generated by setup_certbot_venv
|
||||
# Ustawienia pyenv dla uzytkownika 'npm'
|
||||
# Ustawienia pyenv dla uzytkownika '{PYENV_OWNER}'
|
||||
if [ -d "{PYENV_ROOT}" ]; then
|
||||
export PYENV_ROOT="{PYENV_ROOT}"
|
||||
export PATH="$PYENV_ROOT/bin:$PATH"
|
||||
# Inicjalizacja tylko dla interaktywnych powlok uzytkownika 'npm'
|
||||
# Dopnij lokalne binarki pyenv (git-install) idempotentnie
|
||||
case ":$PATH:" in *":$PYENV_ROOT/bin:"*) ;; *) PATH="$PYENV_ROOT/bin:$PATH";; esac
|
||||
# Dopnij systemowe binarki pyenv z pakietu Debiana idempotentnie
|
||||
case ":$PATH:" in *":/usr/lib/pyenv/bin:"*) ;; *) PATH="/usr/lib/pyenv/bin:$PATH";; esac
|
||||
export PATH
|
||||
# Inicjalizacja tylko dla interaktywnych powlok uzytkownika '{PYENV_OWNER}'
|
||||
case "$-" in *i*) _interactive=1 ;; *) _interactive=0 ;; esac
|
||||
if [ "${{_interactive}}" = 1 ] && [ "${{USER:-}}" = "{PYENV_OWNER}" -o "${{SUDO_USER:-}}" = "{PYENV_OWNER}" ]; then
|
||||
if [ "$_interactive" = 1 ] && {{ [ "${{USER:-}}" = "{PYENV_OWNER}" ] || [ "${{SUDO_USER:-}}" = "{PYENV_OWNER}" ]; }}; then
|
||||
if command -v pyenv >/dev/null 2>&1; then
|
||||
eval "$(pyenv init -)"
|
||||
elif [ -x "{PYENV_ROOT}/bin/pyenv" ]; then
|
||||
@@ -306,6 +316,7 @@ fi
|
||||
|
||||
run(["chown", "-R", f"{PYENV_OWNER}:{PYENV_OWNER}", str(PYENV_ROOT)], check=False)
|
||||
|
||||
|
||||
def configure_letsencrypt():
|
||||
with step("configure letsencrypt"):
|
||||
run(["chown", "-R", "npm:npm", "/opt/certbot"], check=False)
|
||||
|
||||
Reference in New Issue
Block a user