$cd ../troubleshooting/
Ubuntu 服务器安装失败:systemctl --user 与 Homebrew
// Ubuntu 24.04 全新服务器安装时常见的两个问题:(1) Linux 上没有 Homebrew → Skill 安装失败;(2) 以 root 运行时 systemctl --user 不可用。
install.log
🔍 您会看到的错误
Install failed: github — brew not installed — Homebrew is not installed.
Install failed: summarize — brew not installed — Homebrew is not installed.
Error: systemctl is-enabled unavailable: Command failed: systemctl --user is-enabled openclaw-gateway.service
fix_1.sh
✅ 修复方法 1 — Homebrew 技能失败(github、summarize)
然后重新运行 openclaw setup
# 方案 A:在 Linux 上安装 Homebrew /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
github + summarize 技能的手动回退方案
# 方案 B:手动安装缺失的技能依赖 pip3 install gitpython pip3 install sumy
fix_2.sh
✅ 修复方法 2 — systemctl --user 不可用(以 root 运行时)
推荐:以专用服务用户运行
# 为 openclaw 创建非 root 用户 useradd -m -s /bin/bash openclaw su - openclaw # 然后以此用户安装 openclaw curl -fsSL https://get.openclaw.com | sh
fix_3.sh
✅ 修复方法 3 — 为 systemctl --user 启用 lingering
在无头服务器上必须以自己的用户运行时需要此操作
# 启用用户 linger(允许无登录会话的 systemd --user) loginctl enable-linger $USER # 验证 loginctl show-user $USER | grep Linger
ℹ 关于以 Root 运行的说明
OpenClaw 官方建议以非 root 用户(专用服务账户)运行。以 root 运行会绕过用户 systemd 会话,导致 --user 标志失败。
❓ 常见问题
Q1. 为什么 systemctl --user 以 root 身份失败?
systemctl --user 需要每用户的 systemd 会话和有效的 XDG_RUNTIME_DIR(通常是 /run/user/UID)。直接以 root 登录时没有用户会话——只有系统会话。--user 标志只在该用户有活跃登录会话时才有效。最干净的解决方案是创建专用的非 root 用户并从该账户运行 OpenClaw。
Q2. 应该以 root 运行 OpenClaw 吗?
不应该。以 root 运行是重大安全风险。如果 AI 代理通过精心设计的消息被诱导执行命令,以 root 运行意味着这些命令拥有完整的系统访问权限。创建专用的非 root 服务用户:'useradd -m -s /bin/bash openclaw && su - openclaw'。然后从该账户安装和运行 OpenClaw。进程仍可绑定 1024 以上的端口而无需 root。
Q3. 可以使用 Docker 代替 systemctl 吗?
可以,实际上 Docker 是 Ubuntu 服务器的推荐部署方式。它完全避免了 systemctl --user 问题和 Homebrew 依赖问题。Docker 管理进程生命周期、崩溃时自动重启并隔离环境。使用 'docker compose up -d' 并设置 'unless-stopped' 重启策略,可获得等同于 systemd 服务的行为。
Q4. 为什么 Ubuntu Server 上没有 Homebrew?
Homebrew 主要是 macOS 的包管理器。虽然在 Linux 上技术上可行(安装到 /home/linuxbrew/.linuxbrew),但 Ubuntu Server 最小安装不包含它,许多 Ubuntu 指南也不提及。一些 OpenClaw 技能使用 Homebrew 安装依赖项。替代方案是通过 apt 或 pip3 手动安装技能依赖项,或使用包含所有依赖项的 Docker。
Q5. loginctl enable-linger 是什么,什么时候需要?
默认情况下,用户的 systemd 会话(以及所有 --user 服务)在用户退出时被销毁。在无头服务器上,这意味着关闭 SSH 会话时 OpenClaw 进程会终止。'loginctl enable-linger <用户名>' 告诉 systemd 即使用户不在线也保持该用户的会话——类似于设置服务账户。运行一次后,重启也会保持。
Q6. 创建新用户后,OpenClaw 二进制文件不在 PATH 中,如何修复?
以一个用户身份安装 OpenClaw 然后切换到另一个用户(通过 su - openclaw)时,新用户的 PATH 不包含原始安装位置。如果 OpenClaw 全局安装(/usr/local/bin 或 /usr/bin),所有用户都可以访问。如果安装在原用户的主目录(~/.local/bin),在 openclaw 用户的配置文件中添加路径,或以 openclaw 用户身份重新安装 OpenClaw。