Blame view

scripts/setup_env_centos8.sh 5.38 KB
e7f2b240   tangwang   first commit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
  #!/usr/bin/env bash
  # =============================================================================
  # OmniShopAgent - CentOS 8 环境准备脚本
  # 准备 Python 3.12、Docker、依赖及虚拟环境
  # =============================================================================
  set -euo pipefail
  
  SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
  PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
  VENV_DIR="${VENV_DIR:-$PROJECT_ROOT/venv}"
  PYTHON_VERSION="${PYTHON_VERSION:-3.12}"
  
  echo "=========================================="
  echo "OmniShopAgent - CentOS 8 环境准备"
  echo "=========================================="
  echo "项目目录: $PROJECT_ROOT"
  echo "虚拟环境: $VENV_DIR"
  echo "Python 版本: $PYTHON_VERSION"
  echo "=========================================="
  
  # -----------------------------------------------------------------------------
  # 1. 安装系统依赖
  # -----------------------------------------------------------------------------
  echo "[1/4] 安装系统依赖..."
  sudo dnf install -y \
      gcc \
      gcc-c++ \
      make \
      openssl-devel \
      bzip2-devel \
      libffi-devel \
      sqlite-devel \
      xz-devel \
      zlib-devel \
      readline-devel \
      tk-devel \
      libuuid-devel \
      curl \
      wget \
      git \
      tar
  
  # -----------------------------------------------------------------------------
8810a6fa   tangwang   重构
44
  # 2. 检查 Docker(可选)
e7f2b240   tangwang   first commit
45
  # -----------------------------------------------------------------------------
8810a6fa   tangwang   重构
46
  echo "[2/4] 检查 Docker..."
e7f2b240   tangwang   first commit
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
  if ! command -v docker &>/dev/null; then
      echo "  安装 Docker..."
      sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo 2>/dev/null || {
          sudo dnf install -y dnf-plugins-core
          sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
      }
      sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
      sudo systemctl enable docker
      sudo systemctl start docker
      sudo usermod -aG docker "$USER" 2>/dev/null || true
      echo "  Docker 已安装。请执行 'newgrp docker' 或重新登录以使用 docker 命令。"
  else
      echo "  Docker 已安装: $(docker --version)"
  fi
  
  # -----------------------------------------------------------------------------
  # 3. 安装 Python 3.12
  # -----------------------------------------------------------------------------
  echo "[3/4] 安装 Python $PYTHON_VERSION..."
  
  USE_CONDA=false
  if command -v python3.12 &>/dev/null; then
      echo "  Python 3.12 已安装"
  elif command -v conda &>/dev/null; then
      echo "  使用 conda 创建 Python $PYTHON_VERSION 环境..."
      conda create -n shop_agent "python=$PYTHON_VERSION" -y
      USE_CONDA=true
      echo "  Conda 环境已创建。请执行: conda activate shop_agent"
      echo "  然后手动执行: pip install -r $PROJECT_ROOT/requirements.txt"
      echo "  跳过 venv 创建..."
  else
      echo "  从源码编译 Python $PYTHON_VERSION..."
      sudo dnf groupinstall -y 'Development Tools'
      cd /tmp
      PY_URL="https://www.python.org/ftp/python/${PYTHON_VERSION}/Python-${PYTHON_VERSION}.0.tgz"
      PY_TGZ="Python-${PYTHON_VERSION}.0.tgz"
      [ -f "$PY_TGZ" ] || wget -q "$PY_URL" -O "$PY_TGZ"
      tar xzf "$PY_TGZ"
      cd "Python-${PYTHON_VERSION}.0"
      ./configure --enable-optimizations --prefix=/usr/local
      make -j "$(nproc)"
      sudo make altinstall
      cd /tmp
      rm -rf "Python-${PYTHON_VERSION}.0" "$PY_TGZ"
  fi
  
  # -----------------------------------------------------------------------------
  # 4. 创建虚拟环境并安装依赖(非 conda 时)
  # -----------------------------------------------------------------------------
  if [ "$USE_CONDA" = true ]; then
      echo "[4/4] 已使用 conda,跳过 venv 创建"
  else
      echo "[4/4] 创建虚拟环境与安装 Python 依赖..."
  
      PYTHON_BIN=""
      for p in python3.12 python3.11 python3; do
          if command -v "$p" &>/dev/null; then
              VER=$("$p" -c 'import sys; print(f"{sys.version_info.major}.{sys.version_info.minor}")' 2>/dev/null || echo "0")
              if [[ "$VER" == "3.1"* ]] || [[ "$VER" == "3.12"* ]]; then
                  PYTHON_BIN="$p"
                  break
              fi
          fi
      done
  
      if [ -z "$PYTHON_BIN" ]; then
          echo "  错误: 未找到 Python 3.10+。若使用 conda,请先执行: conda activate shop_agent"
          echo "  然后手动执行: pip install -r $PROJECT_ROOT/requirements.txt"
          exit 1
      fi
  
      if [ ! -d "$VENV_DIR" ]; then
          echo "  创建虚拟环境: $VENV_DIR"
          "$PYTHON_BIN" -m venv "$VENV_DIR"
      fi
  
      echo "  激活虚拟环境并安装依赖..."
      set +u
      source "$VENV_DIR/bin/activate"
      set -u
      pip install -U pip
      pip install -r "$PROJECT_ROOT/requirements.txt"
      echo "  Python 依赖安装完成。"
  fi
  
  # 配置 .env
  if [ ! -f "$PROJECT_ROOT/.env" ]; then
      echo ""
      echo "  创建 .env 配置文件..."
      cp "$PROJECT_ROOT/.env.example" "$PROJECT_ROOT/.env"
      echo "  请编辑 $PROJECT_ROOT/.env 配置 OPENAI_API_KEY 等参数。"
  fi
  
  echo ""
  echo "=========================================="
  echo "环境准备完成!"
  echo "=========================================="
  echo "下一步:"
8810a6fa   tangwang   重构
145
146
147
  echo "  1. 编辑 .env 配置 OPENAI_API_KEY、SEARCH_API_BASE_URL 等"
  echo "  2. (可选)下载数据: python scripts/download_dataset.py"
  echo "  3. 启动应用: ./scripts/start.sh"
e7f2b240   tangwang   first commit
148
149
150
  echo ""
  echo "激活虚拟环境: source $VENV_DIR/bin/activate"
  echo "=========================================="