#!/usr/bin/env bash # 창진 에이전트(cjagent) 설치 스크립트 — Linux / macOS # curl -fsSL https://cjsoft.bonzaworld.live/download/install.sh | bash # 다른 서버에서 호스팅 시: CJAGENT_BASE_URL 환경변수로 오버라이드. set -euo pipefail BASE="${CJAGENT_BASE_URL:-https://cjsoft.bonzaworld.live}" BASE="${BASE%/}" echo "" echo " 창진 에이전트(cjagent) 설치" echo " ---------------------------" # ── 1) Python 3.10+ 탐지 ── PY="" for c in python3 python; do if command -v "$c" >/dev/null 2>&1; then if "$c" -c 'import sys; sys.exit(0 if sys.version_info >= (3,10) else 1)' 2>/dev/null; then PY="$c"; break fi fi done if [ -z "$PY" ]; then echo " [오류] Python 3.10+ 가 필요합니다." >&2 echo " https://www.python.org/downloads/ (또는 패키지 매니저)로 설치 후 다시 실행하세요." >&2 exit 1 fi echo " Python : $("$PY" --version 2>&1)" # ── 2) 최신 버전 메타 ── WHEEL="cjagent-0.71.0-py3-none-any.whl" if command -v curl >/dev/null 2>&1; then META="$(curl -fsSL "$BASE/download/latest.json" 2>/dev/null || true)" elif command -v wget >/dev/null 2>&1; then META="$(wget -qO- "$BASE/download/latest.json" 2>/dev/null || true)" else META="" fi if [ -n "$META" ]; then W="$(printf '%s' "$META" | sed -n 's/.*"wheel"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/p' | head -n1)" [ -n "$W" ] && WHEEL="$W" fi URL="$BASE/download/$WHEEL" echo " 패키지 : $WHEEL" # ── 3) 설치 (pipx 우선 → 전용 venv 폴백) ── # pip --user 는 최신 배포판(PEP 668 externally-managed)에서 실패하므로, pipx가 없으면 # 전용 가상환경을 만들고 ~/.local/bin 에 링크한다(어디서나 안전·격리). echo "" if command -v pipx >/dev/null 2>&1; then echo " 방법 : pipx (격리 설치)" echo "" pipx install --force "$URL" else echo " 방법 : 전용 가상환경 (pipx 미설치 · PEP 668 안전)" echo "" VENV="${XDG_DATA_HOME:-$HOME/.local/share}/cjagent/venv" BIN="$HOME/.local/bin" if "$PY" -m venv "$VENV"; then "$VENV/bin/python" -m pip install --upgrade -q pip >/dev/null 2>&1 || true "$VENV/bin/python" -m pip install --upgrade "$URL" mkdir -p "$BIN" ln -sf "$VENV/bin/cjagent" "$BIN/cjagent" echo " 설치 위치: $VENV" echo " 실행 파일: $BIN/cjagent" else echo " [오류] 가상환경 생성 실패 — python3-venv(또는 pipx)가 필요할 수 있습니다:" >&2 echo " Debian/Ubuntu: sudo apt install -y python3-venv pipx" >&2 echo " macOS(Homebrew): brew install pipx" >&2 exit 1 fi fi echo "" echo " 설치 완료!" echo " 다음을 실행해 보세요:" echo " cjagent doctor # 환경 진단(모델 서버·PATH 확인)" echo " cjagent web # 웹 UI 실행" echo "" echo " * 'cjagent' 명령을 못 찾으면 ~/.local/bin 이 PATH에 있는지 확인하세요:" echo " export PATH=\"\$HOME/.local/bin:\$PATH\""