AI创想

标题: openclaw [打印本页]

作者: 米落枫    时间: 前天 10:24
标题: openclaw
作者:CSDN博客
openclaw
  1. sudoapt update &&sudoapt upgrade -y
复制代码
(, 下载次数: 0)


这是 Ubuntu 系统更新后弹出的服务重启提示,部分守护进程仍在使用旧版本的库文件,需要重启才能生效。直接选择ok即可

(, 下载次数: 0)

  1. sudoaptinstall -y nodejs npmgit chromium-browser chromium-chromedriver
复制代码
(, 下载次数: 0)

有如下报错:

(, 下载次数: 0)


安装 chromium-browser 时,dpkg 子进程返回了错误代码 (1),导致安装失败。
  1. # 修复损坏的包状态sudo dpkg --configure -a
  2. # 清理并重新更新源sudoapt clean
  3. sudoapt update
  4. # 强制重新安装 chromium-browsersudoaptinstall -f
复制代码
报错:

(, 下载次数: 0)

  1. sudo dpkg -i --force-script-chrootless /var/cache/apt/archives/chromium-browser_1%3a85.0.4183.83-0ubuntu2.22.04.1_amd64.deb
复制代码
报错:

(, 下载次数: 0)


ping api.snapcraft.io 显示正常,那就是包的问题。
先绕开 snap,再彻底放弃 chromium,改用 Chrome
先清理当前失败状态
  1. sudoapt remove --purge chromium-browser chromium-chromedriver
  2. sudoapt autoremove -y
  3. sudo dpkg --configure -a
  4. sudoaptinstall -f
  5. # 禁用 snap 相关依赖(避免再次触发网络超时)sudo apt-mark hold snapd
  6. # 直接安装 Google Chrome 替代 chromium(推荐)# 下载 Chromewget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
  7. sudo dpkg -i google-chrome-stable_current_amd64.deb
复制代码
报错:

(, 下载次数: 0)

  1. sudoaptinstall -f  # 修复依赖
  2. google-chrome --version # 返回版本号成功
复制代码
(, 下载次数: 0)

  1. # 下载对应版本的 ChromeDrivercurl -s https://chromedriver.storage.googleapis.com/LATEST_RELEASE
复制代码
(, 下载次数: 0)

  1. wget https://chromedriver.storage.googleapis.com/114.0.5735.90/chromedriver_linux64.zip
  2. unzip chromedriver_linux64.zip
  3. sudomv chromedriver /usr/local/bin/
  4. sudochmod +x /usr/local/bin/chromedriver
  5. # 继续部署 OpenClawsudoaptinstall -y nodejs npmgitsudonpminstall -g openclaw@latest
复制代码
报错:

(, 下载次数: 0)

  1. git clone https://github.com/whiskeysockets/libsignal-node.git
  2. cd libsignal-node
  3. npminstallnpmlink# 重新安装 OpenClawsudonpminstall -g openclaw@latest
复制代码
报错:

(, 下载次数: 0)


需要 Node.js 20+
  1. # 移除旧版本 Node.jssudoapt remove --purge nodejs npm -y
  2. sudoapt autoremove -y
  3. # 添加 NodeSource 仓库curl -fsSL https://deb.nodesource.com/setup_20.x |sudo -E bash -
  4. # 安装 Node.js 20sudoaptinstall -y nodejs
  5. # 验证版本node -v
  6. # 回显v20.20.0后执行sudonpminstall -g openclaw@latest
  7. # 执行后发现一直不动,于是查询日记tail -f /root/.npm/_logs/$(ls -t /root/.npm/_logs/ |head -1)# 日记也无更新。更换国内源sudonpm config set registry https://registry.npmmirror.com
  8. sudonpminstall -g openclaw@latest
  9. # 依然不行,忽略编译试一下sudonpminstall -g openclaw@latest --ignore-scripts
  10. # 依然不行。手动下载 OpenClaw 源码看看,准备依赖# 开始手动部署sudoaptinstall -y build-essential python3 make g++
  11. # 创建工作目录并克隆源码mkdir -p ~/openclaw &&cd ~/openclaw
  12. git clone https://github.com/whiskeysockets/openclaw.git .# 报404# 从 npm 仓库下载 OpenClaw 源码包(自动匹配最新版本)npm pack openclaw
  13. # 解压下载的 tar 包(文件名会是 openclaw-x.x.x.tgz,* 匹配版本号)tar -zxvf openclaw-*.tgz
  14. # 进入解压后的源码目录cd package
  15. # 安装构建依赖(确保编译环境完整),已安装完成,忽略执行sudoaptinstall -y build-essential python3 make g++
  16. # 安装源码依赖(分步执行,避免卡顿)npm config set registry https://registry.npmmirror.com
  17. npminstall --ignore-scripts
  18. # 手动执行构建npm run build
  19. # 报错(意思是包已经是预编译好的发布版,不需要build了):
复制代码
(, 下载次数: 0)

  1. sudonpmlink
复制代码
(, 下载次数: 0)

  1. # openclaw 命令找不到# 包的 package.json 里没有配置 bin 字段,或者,openclaw 的入口脚本没有执行权限cat package.json |grep -A 5"bin"# 发现无回显# 如果 bin 字段缺失,我们可以手动创建一个软链接,指向包的入口文件:# 先找到入口文件(通常是 index.js 或 cli.js):ls -la ~/openclaw/package
  2. # 假设入口文件是 index.js,创建软链接:sudoln -s ~/openclaw/package/index.js /usr/local/bin/openclaw
  3. sudochmod +x /usr/local/bin/openclaw
  4. # 验证:
  5. openclaw --version
复制代码
(, 下载次数: 0)

  1. # 如果 index.js 是一个 Node.js 脚本,需要在脚本顶部添加 Shebang:nano ~/openclaw/package/index.js
  2. # 在第一行添加:#!/usr/bin/env node# 保存后,重新执行 chmod +x:sudochmod +x /usr/local/bin/openclaw
  3. openclaw --version
  4. # 依然无回显# 检查 package.json 里的 main 和 bin 字段cat ~/openclaw/package/package.json |grep -E '("main"|"bin")' -A 2
复制代码
(, 下载次数: 0)


main:包的主入口文件
bin:定义的可执行命令和对应的脚本
从截图来看,node ~/openclaw/package/index.js --version 没有输出,说明这个入口文件本身可能不是 CLI 入口,或者缺少必要的参数 / 配置,导致它静默退出了。
检查 package.json 里的 main 和 bin 字段
  1. cat ~/openclaw/package/package.json |grep -E '("main"|"bin")' -A 2
复制代码
这会告诉你:
main:包的主入口文件
bin:定义的可执行命令和对应的脚本
如果 bin 字段存在
比如 package.json 里有:
  1. json
  2. "bin":{"openclaw":"./dist/cli.js"}
复制代码
CLI 入口是 ./dist/cli.js,将该文件软连接到openclaw,然后加x权限启动即可
如果 bin 字段不存在,说明这个包本身就不是 CLI 工具,或者 CLI 入口在别的地方。你可以:
查看 package.json 的 scripts 字段,看看有没有 start 或 cli 脚本:
  1. cat ~/openclaw/package/package.json |grep -A 10"scripts"
复制代码
如果有 start 脚本,直接用 npm start 启动:
  1. cd ~/openclaw/package
  2. npm start -- --version
复制代码
如果还是没有,手动创建 CLI 包装脚本
  1. cat> ~/openclaw/package/cli.js <<'EOF'
  2. #!/usr/bin/env node
  3. const openclaw = require('./index.js');
  4. // 解析命令行参数
  5. const args = process.argv.slice(2);
  6. if (args.includes('--version') || args.includes('-v')) {
  7.   console.log('OpenClaw v0.1.0 (手动包装)');
  8.   process.exit(0);
  9. }
  10. if (args.includes('onboard')) {
  11.   openclaw.onboard().then(() => {
  12.     console.log('Onboard completed.');
  13.   }).catch(console.error);
  14. } else if (args.includes('gateway') && args.includes('start')) {
  15.   openclaw.startGateway({ daemon: true }).then(() => {
  16.     console.log('Gateway started in daemon mode.');
  17.   }).catch(console.error);
  18. } else {
  19.   console.log('Usage: openclaw [onboard|gateway start] [--version]');
  20.   process.exit(1);
  21. }
  22. EOF# 赋予执行权限chmod +x ~/openclaw/package/cli.js
  23. # 创建软链接到 /usr/local/binsudoln -sf ~/openclaw/package/cli.js /usr/local/bin/openclaw
  24. openclaw --version
复制代码
(, 下载次数: 0)


初始化配置
  1. openclaw onboard
复制代码
(, 下载次数: 0)


openclaw.onboard() 方法并不存在,查看 index.js 导出的内容
  1. node -e "const oc = require('./index.js'); console.log('导出的内容:', oc); console.log('导出的方法/属性:', Object.keys(oc));"
复制代码
(, 下载次数: 0)


说明index.js 导出的是一个空对象 {},没有任何可调用的方法或属性。
到此手动部署的方式宣告失败。

原文地址:https://blog.csdn.net/qq_45029110/article/details/158007623




欢迎光临 AI创想 (https://llms-ai.com/) Powered by Discuz! X3.4