Bug: gateway install fails on fresh Linux servers — execFileUtf8 clobbers systemctl stdout来源: GitHub Issue #32635OpenClaw 版本: 2026.3.2操作系统: Ubuntu 24.04 LTSNode: v22.22.0问题描述在全新的 Linux 服务器Ubuntu 22.04/24.04上openclaw gateway install 命令失败。这些服务器上 systemd user services 已正确配置但 openclaw-gateway service 尚未安装。错误信息Gateway service check failed: Error: systemctl is-enabled unavailable: Command failed: systemctl --user is-enabled openclaw-gateway.service根本原因在dist/systemd-*.js文件中isSystemdServiceEnabled()函数调用execFileUtf8(systemctl, [--user, is-enabled, openclaw-gateway.service])。当服务不存在时systemctl 返回退出码: 4stdout: not-found\nstderr: (空)execFileUtf8函数处理非零退出码时会用 error.message 替换空的 stderrconst stderrText String(stderr ?? ); resolve({ stdout: String(stdout ?? ), stderr: stderrText || (typeof e.message string ? e.message : ...), code: typeof e.code number ? e.code : 1 });这导致stdout: not-foundstderr: Command failed: systemctl --user is-enabled openclaw-gateway.service (被覆盖)然后readSystemctlDetail()优先选择 stderrtruthy而非 stdoutfunction readSystemctlDetail(result) { return (result.stderr || result.stdout || ).trim(); }所以 detail Command failed: systemctl --user is-enabled openclaw-gateway.service — 而不是 not-found。isSystemdUnitNotEnabled(detail)检查 not-found但 detail 字符串是错误消息所以返回 false。代码继续执行并抛出异常。复现步骤全新 Ubuntu 服务器已启用 systemd user services通过 npm 全局安装 openclaw运行openclaw gateway install --port 18789 --force观察错误期望行为gateway install 应识别退出码 4 / not-found 为 服务尚未安装并继续创建服务文件。建议修复三选一execFileUtf8: 不再用 error.message 替换空的 stderr或分开存储两者readSystemctlDetail: 当 stderr 包含 Command failed 时优先使用 stdoutisSystemdServiceEnabled: 也直接检查 stdout 中的 unit-not-found 模式临时解决方案在调用 openclaw gateway start 前手动创建 systemd user service 文件mkdir -p ~/.config/systemd/user cat ~/.config/systemd/user/openclaw-gateway.service EOF [Unit] DescriptionOpenClaw Gateway Afternetwork-online.target Wantsnetwork-online.target [Service] ExecStart$(which node) $(realpath $(which openclaw)) gateway run --port 18789 Restartalways RestartSec5 KillModeprocess WorkingDirectory$HOME/.openclaw [Install] WantedBydefault.target EOF systemctl --user daemon-reload systemctl --user enable openclaw-gateway.service systemctl --user start openclaw-gateway.service备注v2026.3.2 更新日志提到修复了 container systemd checks#26089但那仅覆盖 ENOENT/EACCES 情况 — 不包括这个 systemd 可用但单元尚不存在的退出码 4 场景。 MiniMax 跨年福利来袭邀好友享 Coding Plan 双重好礼助力开发体验好友立享 9折 专属优惠 Builder 权益你赢返利 社区特权 立即参与