共计 1948 个字符,预计需要花费 5 分钟才能阅读完成。
场景痛点
企业内网部署 AI 工具链时最常遇到两个拦路虎:

- 网络隔离:生产服务器通常禁止连接外网,pip/apt 等在线安装方式直接失效
- 依赖黑洞:机器学习框架的依赖动辄上百个,手动搬运容易漏包或版本冲突
我们曾耗时 3 天为一个客户调试内网安装,最终发现是某个隐藏的 CUDA 动态库缺失。这种问题必须通过标准化离线方案根治。
目录架构设计
经过 20+ 企业项目验证,推荐以下目录结构(以 /opt/openclaw 为例):
openclaw_offline/
├── dependencies/ # 所有系统级依赖
│ ├── linux/ # .deb/.rpm 包分 OS 存放
│ └── windows/
├── runtime/ # Python 解释器
│ ├── bin/
│ └── lib/
├── models/ # 预训练模型
│ ├── text/
│ └── vision/
└── install.sh # 智能安装入口
关键设计原则:
- 隔离性:系统依赖与 Python 环境物理分离,避免污染宿主环境
- 可移植性:整个目录可打包成 tar.gz,支持 scp 到目标机器
- 版本冻结:所有依赖包带版本号存放,如
libopenblas-0.3.18.deb
实现方案
依赖收集脚本(Python 示例)
# 生成 requirements.txt 的离线包(注意保留原始 URL)pip download -r requirements.txt -d ./dependencies \
--platform manylinux2014_x86_64 \
--python-version 3.8 \
--only-binary=:all:
安装脚本核心逻辑(Bash 示例)
#!/bin/bash
# 错误立即退出 + 打印行号
trap 'echo"Error at $LINENO"; exit 1' ERR
# 检查 glibc 版本(常见坑点)LIBC_VERSION=$(ldd --version | head -1 | awk '{print $NF}')
if ["$(printf'%s\n'"2.28" "$LIBC_VERSION" | sort -V | head -n1)"!="2.28" ]; then
echo "[ERROR] glibc>=2.28 required"
exit 1
fi
# 自动识别系统类型
case "$(uname -s)" in
Linux*) OS=linux;;
Darwin*) OS=mac;;
CYGWIN*) OS=win;;
esac
# 安装系统依赖
for pkg in dependencies/$OS/*.deb; do
dpkg -x "$pkg" /usr/local # 非 root 可用 --prefix 指定目录
多环境适配
Linux vs Windows 关键差异
| 维度 | Linux 方案 | Windows 方案 |
|---|---|---|
| 依赖管理 | apt/yum 本地仓库 | Chocolatey 离线包 |
| 权限控制 | sudo 提权 | 管理员 PowerShell |
| 路径处理 | /opt 软链接 | 注册表环境变量 |
特别提醒 :Windows 路径包含空格时,所有python setup.py install 必须加引号:
Start-Process -FilePath "python.exe" -ArgumentList \
'"setup.py" "install" "--prefix=C:\Program Files\openclaw"' \
-Wait -NoNewWindow
生产验证
三步验证法
-
完整性检查
find . -type f -exec sha256sum {} + > manifest.sha256 sha256sum -c manifest.sha256 -
隔离测试
docker run --rm -v /opt/openclaw:/mnt \ alpine sh -c "ls /mnt/runtime/bin/python" -
回滚方案
# 安装前快照 lvm snapshot create /dev/vg01/openclaw_bak
避坑指南
- 动态库地狱 :用
patchelf修改 rpath 指向离线目录patchelf --set-rpath '$ORIGIN/../lib' bin/openclaw - Python 路径:在入口脚本强制设置
import sys sys.path.insert(0, '/opt/openclaw/runtime/lib') - 企业代理:某些内网仍需配置代理
[install] proxy=http://corp-proxy:3128
企业级部署 Checklist
- [] 所有依赖包带版本号存档
- [] 测试过最小化安装的 CentOS/Docker
- [] 安装脚本包含
--dry-run模式 - [] 日志统一输出到
/var/log/openclaw_install.log - [] 提供
uninstall.sh清理脚本
经过某金融客户生产环境验证,该方案使部署时间从 8 小时缩短到 30 分钟。建议首次部署时用 Vagrant 建立本地测试环境,完善后再推广到生产。
正文完
