Blame view

scripts/setup_env_centos8.sh 5.46 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
44
45
46
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
145
146
147
148
149
150
151
152
  #!/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
  
  # -----------------------------------------------------------------------------
  # 2. 安装 Docker(用于 Milvus)
  # -----------------------------------------------------------------------------
  echo "[2/4] 检查/安装 Docker..."
  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 "下一步:"
  echo "  1. 编辑 .env 配置 OPENAI_API_KEY"
  echo "  2. 下载数据: python scripts/download_dataset.py"
  echo "  3. 启动 Milvus: ./scripts/run_milvus.sh"
  echo "  4. 索引数据: python scripts/index_data.py"
  echo "  5. 启动应用: ./scripts/start.sh"
  echo ""
  echo "激活虚拟环境: source $VENV_DIR/bin/activate"
  echo "=========================================="