Files
stt/run.sh
dosangyoon 2caa74ac05 docs: expand libtinfo troubleshooting; add scripts/env-no-ld.sh
- README: deactivate may not clear LD_LIBRARY_PATH; unset, /usr/bin/vi, diagnostics
- scripts/env-no-ld.sh: run commands without LD_LIBRARY_PATH for vi/bash
- run.sh: include in commit if changed (verify diff)

Made-with: Cursor
2026-03-23 13:46:41 +09:00

54 lines
1.9 KiB
Bash
Executable File

#!/bin/sh
# conda가 LD_LIBRARY_PATH에 lib를 넣은 상태에서 bash가 스크립트를 읽으면
# 시스템 bash가 conda의 libtinfo를 물어 경고가 난다. /bin/sh로 한 번 감싼 뒤
# LD_LIBRARY_PATH 없이 bash를 다시 실행한다.
if [ -z "${STT_RUN_WITH_CLEAN_LDLIB:-}" ]; then
export STT_RUN_WITH_CLEAN_LDLIB=1
exec env -u LD_LIBRARY_PATH /bin/bash "$0" "$@"
fi
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$SCRIPT_DIR"
if [[ -z "${CONDA_BASE:-}" || ! -f "${CONDA_BASE}/bin/activate" ]]; then
CONDA_BASE=""
for cand in "${HOME}/workspace/miniconda3" "${HOME}/miniconda3" "${HOME}/anaconda3" "/opt/anaconda3"; do
if [[ -n "$cand" && -f "$cand/bin/activate" ]]; then
CONDA_BASE="$cand"
break
fi
done
fi
if [[ -z "${CONDA_BASE:-}" || ! -f "${CONDA_BASE}/bin/activate" ]]; then
echo "ERROR: conda를 찾을 수 없습니다. 예: export CONDA_BASE=/path/to/miniconda3" >&2
exit 1
fi
# 기본은 ncue (기존 동작). 다른 환경은 CONDA_ENV=stt 등으로 지정.
CONDA_ENV="${CONDA_ENV:-ncue}"
# shellcheck source=/dev/null
source "${CONDA_BASE}/bin/activate" "${CONDA_ENV}"
# 전역 LD_LIBRARY_PATH에 conda lib를 넣지 않음 (bash/libtinfo 경고 방지).
# torch/ctranslate2 등은 uvicorn 자식에만 경로 전달.
PORT="${PORT:-8025}"
RELOAD="${RELOAD:-0}"
if lsof -ti tcp:"${PORT}" >/dev/null 2>&1; then
echo "Stopping existing server on port ${PORT}..."
lsof -ti tcp:"${PORT}" | xargs -r kill -9
sleep 1
fi
UVICORN_ARGS=("--host" "127.0.0.1" "--port" "${PORT}")
if [[ "${RELOAD}" == "1" ]]; then
UVICORN_ARGS+=("--reload")
fi
echo "Starting uvicorn on 127.0.0.1:${PORT} (reload=${RELOAD})"
nohup env LD_LIBRARY_PATH="${CONDA_PREFIX}/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" \
uvicorn app.main:app "${UVICORN_ARGS[@]}" > server.log 2>&1 &
echo "Server started (PID: $!). Logs: server.log"