| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- #!/bin/bash
- # ============================================================
- # codebase-memory-mcp 静默安装脚本
- # 功能:安装并配置 stderr 重定向,避免日志刷屏
- # 用法:curl -fsSL https://raw.githubusercontent.com/.../install.sh | bash
- # 然后执行本脚本
- # ============================================================
- set -e
- BIN_DIR="${HOME}/.local/bin"
- WRAPPER="${BIN_DIR}/cbm-mcp-wrapper"
- REAL_BIN="${BIN_DIR}/codebase-memory-mcp.real"
- DEFAULT_BIN="${BIN_DIR}/codebase-memory-mcp"
- LOG_FILE="/tmp/cbm-error.log"
- GREEN='\033[0;32m'
- YELLOW='\033[1;33m'
- NC='\033[0m'
- info() { echo -e "${GREEN}[cbm]${NC} $1"; }
- warn() { echo -e "${YELLOW}[cbm]${NC} $1"; }
- # ------------------------------------------
- # 1. 安装 codebase-memory-mcp(如未安装)
- # ------------------------------------------
- if [ ! -f "$DEFAULT_BIN" ] && [ ! -f "$REAL_BIN" ]; then
- info "正在安装 codebase-memory-mcp..."
- curl -fsSL https://raw.githubusercontent.com/DeusData/codebase-memory-mcp/main/install.sh | bash
- echo ""
- fi
- # ------------------------------------------
- # 2. 备份原始二进制
- # ------------------------------------------
- if [ -f "$DEFAULT_BIN" ] && [ ! -f "$REAL_BIN" ]; then
- info "备份原始二进制 -> ${REAL_BIN}"
- cp "$DEFAULT_BIN" "$REAL_BIN"
- fi
- # ------------------------------------------
- # 3. 创建独立 wrapper(不会被更新覆盖)
- # ------------------------------------------
- info "创建 stderr 重定向 wrapper -> ${WRAPPER}"
- cat >"$WRAPPER" <<'WRAPPER_EOF'
- #!/bin/bash
- # codebase-memory-mcp wrapper — redirect stderr to log file
- # This file is at a dedicated path and won't be overwritten by reinstall
- BIN_DIR="$(cd "$(dirname "$0")" && pwd)"
- exec -a "codebase-memory-mcp" "${BIN_DIR}/codebase-memory-mcp.real" 2>/tmp/cbm-error.log
- WRAPPER_EOF
- chmod +x "$WRAPPER"
- # ------------------------------------------
- # 4. 恢复原始二进制到默认路径(允许更新覆盖)
- # ------------------------------------------
- if [ -f "$REAL_BIN" ]; then
- info "恢复原始二进制到默认路径"
- cp "$REAL_BIN" "$DEFAULT_BIN"
- fi
- # ------------------------------------------
- # 5. 设置 CBM_MCP_BIN 环境变量
- # ------------------------------------------
- ENV_VAR='CBM_MCP_BIN='"${WRAPPER}"
- # 写入 /etc/environment(需 root)
- if [ "$(id -u)" = "0" ]; then
- if ! grep -q "CBM_MCP_BIN" /etc/environment 2>/dev/null; then
- info "写入 /etc/environment(系统级)"
- echo "$ENV_VAR" >>/etc/environment
- else
- warn "/etc/environment 已存在 CBM_MCP_BIN,跳过"
- fi
- else
- warn "非 root 用户,跳过 /etc/environment"
- fi
- # 写入 ~/.bashrc(用户级,兜底)
- if ! grep -q "CBM_MCP_BIN" "${HOME}/.bashrc" 2>/dev/null; then
- info "写入 ~/.bashrc"
- echo "export ${ENV_VAR}" >>"${HOME}/.bashrc"
- else
- warn "~/.bashrc 已存在 CBM_MCP_BIN,跳过"
- fi
- # ------------------------------------------
- # 6. 输出结果
- # ------------------------------------------
- echo ""
- echo "======================================"
- echo " 安装完成"
- echo "======================================"
- echo ""
- echo " 二进制: ${DEFAULT_BIN}"
- echo " 原始备份: ${REAL_BIN}"
- echo " Wrapper: ${WRAPPER}"
- echo " 日志文件: ${LOG_FILE}"
- echo " 环境变量: CBM_MCP_BIN=${WRAPPER}"
- echo ""
- echo " 使用方式:"
- echo " 1. 重启 pi 后自动生效"
- echo " 2. 或立即生效: export CBM_MCP_BIN=${WRAPPER}"
- echo " 3. 查看日志: tail -f ${LOG_FILE}"
- echo ""
- echo "======================================"
|