Ubuntu安装OpenClaw报错Gateway service check failed解决方法

Ubuntu安装OpenClaw报错Gateway service check failed解决方法

来源: GitHub Issue #32635

OpenClaw 版本: 2026.3.2
操作系统: Ubuntu 24.04 LTS
Node: v22.22.0





在全新的 Linux 服务器(Ubuntu 22.04/24.04)上,openclaw gateway install 命令失败。这些服务器上 systemd user services 已正确配置,但 openclaw-gateway service 尚未安装。


在 文件中, 函数调用 。

当服务不存在时,systemctl 返回:

  • 退出码: 4
  • stdout: “not-found “
  • stderr: “” (空)openclaw 安装

函数处理非零退出码时,会用 error.message 替换空的 stderr:


这导致:

  • stdout: “not-found”
  • stderr: “Command failed: systemctl –user is-enabled openclaw-gateway.service” (被覆盖)

然后 优先选择 stderr(truthy)而非 stdout:


所以 detail = “Command failed: systemctl –user is-enabled openclaw-gateway.service” — 而不是 “not-found”。

检查 “not-found”,但 detail 字符串是错误消息,所以返回 false。代码继续执行并抛出异常。

  1. 全新 Ubuntu 服务器,已启用 systemd user services
  2. 通过 npm 全局安装 openclaw
  3. 运行
  4. 观察错误

gateway install 应识别退出码 4 / “not-found” 为 “服务尚未安装”,并继续创建服务文件。

三选一:

  1. execFileUtf8: 不再用 error.message 替换空的 stderr(或分开存储两者)
  2. readSystemctlDetail: 当 stderr 包含 “Command failed” 时,优先使用 stdout
  3. isSystemdServiceEnabled: 也直接检查 stdout 中的 unit-not-found 模式

在调用 openclaw gateway start 前手动创建 systemd user service 文件:


v2026.3.2 更新日志提到修复了 “container systemd checks”(#26089),但那仅覆盖 ENOENT/EACCES 情况 — 不包括这个 systemd 可用但单元尚不存在的退出码 4 场景。


🎁 MiniMax 跨年福利来袭!邀好友享 Coding Plan 双重好礼,助力开发体验!好友立享 9折 专属优惠 + Builder 权益,你赢返利 + 社区特权!👉 立即参与

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:Ai探索者,转载请注明出处:https://javaforall.net/286828.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午2:28
下一篇 2026年3月16日 下午2:29


相关推荐

关注全栈程序员社区公众号