【openclaw】wsl子系统Ubuntu + 虚拟机centos9安装openclaw 以及对接飞书教程 解决安装期间的报错

目前最简单安装方式就是一行脚本一键安装,如果能安装成功,那自然是万事大吉,而本文恰恰主要讲述使用脚本安装之前遇到的问题,因为博主是在一台全新的虚拟机上面部署 所以遇到的问题会比较典型全面。对接飞书在Ubuntu版,想避免走弯路的同学可以直接参考ubuntu。

需要一提的是,在大模型选择qwen时,认证步骤虚拟机(linux且有可视化界面的环境,在认证时没有唤起浏览器 导致一直卡住流程 无法继续),之所以还保留虚拟机教程,是觉得如果是通过api key方式的大模型(不依赖外部环境的配置) 应该可以通过 需要自行验证

文章目录

centos os9版(vmware linux虚拟机环境) [坑多]

前置必要环境:nodejs >=22

  1. 首先一台新的虚拟机 需要配置资源地址
    (单纯安装openclaw这一步可以跳过)

当前配置查看:

# 先 cd /etc 目录[root@localhost etc]# ls -la /etc/yum.repos.d/

发现都是没用的配置文件 这个配置下载不下来node 当然 你的linux也不一定是这配置 没有则忽略

总用量 32 drwxr-xr-x. 2 root root 111 1月 31 17:12 . drwxr-xr-x. 132 root root 8192 1月 31 17:09 .. -rw-r--r--. 1 root root 4245 7月 11 2025 centos-addons.repo -rw-r--r--. 1 root root 2600 7月 11 2025 centos.repo -rw-r--r--. 1 root root 262 1月 31 16:53 nodesource-nodejs.repo -rw-r--r--. 1 root root 262 1月 31 16:53 nodesource-nsolid.repo 

所以这里选择删除(注意生产环境绝对不能无脑跟着删除 一定要清楚自己在做什么 否则别删)

sudorm -f /etc/yum.repos.d/nodesource-*.repo 
# 安装并启用 EPEL 仓库 (这是关键一步,它提供大量额外软件,且镜像在国内访问顺畅):# 这个命令会从 CentOS 官方镜像(现在应该已自动指向国内镜像)下载并安装 epel-release 包,它会自动配置好可用的 EPEL 源sudo dnf install -y epel-release # 清理缓存并查找sudo dnf clean all &&sudo dnf makecache 
  1. 安装nodejs 【重点
    由于种种原因 现在centos已经不能直接yum install nodejs新版本了 停留在了16版本,所以我们需要用别的方式下载

如果之前通过 dnf/yum 的方式下载过旧版本nodejs 需要删除:

sudo dnf remove -y nodejs npm

如果是你个人测试的服务器/虚拟机,可以手动删干净点:

sudorm -rf /usr/lib/node_modules sudorm -rf /usr/local/lib/node_modules sudorm -rf /var/cache/yum/*node* # 删除Node.js和npm的符号链接(如果存在)sudorm -f /usr/local/bin/node sudorm -f /usr/local/bin/npm sudorm -f /usr/bin/node sudorm -f /usr/bin/npm 

如果通过其它方式安装的 在以下目录可能有残留 也需要删除

# 检查并删除用户本地目录下的Node相关文件rm -rf ~/.npm rm -rf ~/.node-gyp # 如果你之前装过NVM但失败了,也清理掉rm -rf ~/.nvm 

nvm方式安装nodejs 22

# 1. 安装NVM(一个独立的管理器,不干扰系统)curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh |bash# 2. 关闭并重新打开终端,或立即加载NVMsource ~/.bashrc # 3. 使用NVM安装Node.js v22 nvm install22 --lts # 4. 验证安装node -v # 应输出 v22.x.x

安装openclaw

执行命令:

curl -fsSL https://openclaw.ai/install.sh |bash -s -- --install-method git

(有可能你在某些地方看到的是下面命令 其实就是域名区别 现在官方最新域名是上面的↑)

# 不用再执行这条了curl -fsSL https://molt.bot/install.sh |bash -s -- --install-method git

执行命令等待安装,路径默认位于/root/openclaw

(如果不是centos,例如博主在kali上面 执行就会遇到各种各样的问题 看起来是pnpm有东西下载不下来 博主不是前端 看到这些问题实在头大)

安装完成之后 执行:

pnpm install pnpm run build 

接下来执行:

openclaw onboard --install-daemon 

这里可能报错(具体会不会报错 取决于官方有没有修复 目前博主写文章的时间,正处于openclaw快速迭代版本的时候)
Error: Cannot find module '/root/openclaw/dist/entry.js'

如果报错了 则是官方的脚本有个bug,这对本就不是很懂前端的博主来说雪上加霜,不过好在问题排查出来了:
假设当前位于openclaw目录下,cd ./dist 看到只有entry.mjs文件,并没有entry.js 所以导致了报错

# 1. (可选但推荐)备份原始脚本 sudo cp $(which openclaw) $(which openclaw).backup # 2. 使用sed命令直接修改脚本,将 entry.js 替换为 entry.mjs sudo sed -i 's|/dist/entry.js|/dist/entry.mjs|g' $(which openclaw) # 3. 确认修改是否成功 cat $(which openclaw) # 4. 再次执行 openclaw onboard --install-daemon 

(2026.1.31存在bug 2026.2.1当博主换环境验证时 发现官方已修复)

接下来按照指引即可

在这里插入图片描述

Ubuntu版 (windows wsl子系统环境) [本文建议]

(wsl子系统安装方式如果不熟悉 自行在博主博客主页搜索wsl 在docker的文章里面有提到,本文仅假设已有wsl的Ubuntu系统)

  1. apt升级:
apt-get update 
  1. 添加资源路径:
curl -fsSL https://deb.nodesource.com/setup_22.x |sudo -E bash - 
  1. 下载nodejs 22 (上一步骤指定了22版本)
sudoapt-getinstall -y nodejs 
  1. (若没)安装pnpm
    先验证环境是否有pnpm
pnpm -v 

如果没有则安装:

curl -fsSL https://get.pnpm.io/install.sh | sh - 

安装之后再次验证

pnpm -v 

刷新 xxx是路径 博主这边是自动提示了全路径

source /xxx/xxx/.bashrc 
在这里插入图片描述
  1. 执行openclaw官方提供的脚本:
    【注:openclaw迭代实在太快了 以下命令可能随时会变化 务必关注官网变更】
curl -fsSL https://openclaw.ai/install.sh |bash -s -- --install-method git

  1. 刷新配置文件 使得环境变量等配置生效 (主要是因为第7步出现了openclaw command not found时需要刷新)
source ~/.bashrc 
  1. 支持安装board命令
openclaw onboard --install-daemon 
  1. 安装完毕之后 启动gateway:
openclaw gateway --port 18789 --verbose 

这时候我们访问127.0.0.1:18789 即可进入控制台(在linux命令行界面 会打印出token是什么 给出具体网址)

在这里插入图片描述
  1. 安装飞书插件
 openclaw plugins install @m1heng-clawd/feishu 

进入飞书 https://open.feishu.cn/ 后台

在这里插入图片描述


在这里插入图片描述


记住这个appId和secret

在这里插入图片描述
在这里插入图片描述
  1. 回到linux命令行
openclaw config set channels.feishu.appId "xxx上面截图中的appId" openclaw config set channels.feishu.appSecret "xxxx上面截图中的appSecret"# 推荐使用websocket (以下命令是参考前人的 使用websocket连接) openclaw config set channels.feishu.connectionMode websocket openclaw config set channels.feishu.dmPolicy pairing openclaw config set channels.feishu.groupPolicy allowlist openclaw config set channels.feishu.requireMention true

回到飞书配置权限:

在这里插入图片描述


在这里插入图片描述
在这里插入图片描述


在这里插入图片描述

并且分别搜搜

im:message 
contact:user.base:readonly 

开通群消息权限

在这里插入图片描述


在这里插入图片描述
在这里插入图片描述
  1. 重启gateway
    (在子系统的话就是先按ctrl+ c结束再启动一遍)
openclaw gateway --port 18789 --verbose 

(在正常服务器可以使用重启命令)

openclaw gateway restart 

回到飞书客户端 此时开发小助手会发消息 点打开应用即可

在这里插入图片描述

重要命令

openclaw的核心配置文件

vim ~/.openclaw/openclaw.json 

Read more

SkyWalking - .NET / C++ / Lua 探针现状与社区支持

SkyWalking - .NET / C++ / Lua 探针现状与社区支持

👋 大家好,欢迎来到我的技术博客! 📚 在这里,我会分享学习笔记、实战经验与技术思考,力求用简单的方式讲清楚复杂的问题。 🎯 本文将围绕SkyWalking这个话题展开,希望能为你带来一些启发或实用的参考。 🌱 无论你是刚入门的新手,还是正在进阶的开发者,希望你都能有所收获! 文章目录 * SkyWalking - .NET / C++ / Lua 探针现状与社区支持 🌐 * 一、SkyWalking 多语言探针架构概览 🧩 * 二、Java 探针:成熟稳定,功能最全 ☕️ * 示例:Spring Boot 应用接入 SkyWalking * Java 探针高级特性 * 三、.NET 探针现状:渐趋成熟,生产可用 🖥️ * 技术原理 * 使用方式 * 当前支持的功能 * 局限性 * 四、C++ 探针现状:SDK 形式,适合嵌入式场景 ⚙️ * cpp2sky SDK

By Ne0inhk
《C++:从代码到机器》:面试官:“说说 list 怎么模拟实现?” 我掏出这份代码,他点头了

《C++:从代码到机器》:面试官:“说说 list 怎么模拟实现?” 我掏出这份代码,他点头了

✨ 孤廖:个人主页 🎯 个人专栏:《C++:从代码到机器》 🎯 个人专栏:《Linux系统探幽:从入门到内核》 🎯 个人专栏:《算法磨剑:用C++思考的艺术》 折而不挠,中不为下 文章目录 * 正文: * 1.list的介绍与使用 * 1.1 list的介绍 list的介绍 * 1.2 list的使用 * 1.2.1 list的构造 * 1.2.2 list iterator的使用 * 1.2.3 list capacity * 1.2.4 list element access * 1.2.5 list modifiers

By Ne0inhk
深入解剖STL map/multimap:接口使用与核心特性详解

深入解剖STL map/multimap:接口使用与核心特性详解

❤️@燃于AC之乐 来自重庆 计算机专业的一枚大学生 ✨专注 C/C++ Linux 数据结构 算法竞赛 AI 🏞️志同道合的人会看见同一片风景! 👇点击进入作者专栏: 《算法画解》 ✅ 《linux系统编程》✅ 《C++》 ✅ 🌟《算法画解》算法相关题目点击即可进入实操🌟 感兴趣的可以先收藏起来,请多多支持,还有大家有相关问题都可以给我留言咨询,希望希望共同交流心得,一起进步,你我陪伴,学习路上不孤单! 文章目录 * 前言(map系列容器概述) * 一、map类介绍 * 1.1 map的类模板声明 * 二、pair类型介绍 * 2.1 pair的结构定义 * 2.2 pair的使用要点 * 三、map的构造与迭代器 * 3.1 构造接口 * 3.2 迭代器接口 * 四、map的增删查操作

By Ne0inhk
【C++藏宝阁】C++入门:命名空间(namespace)详解

【C++藏宝阁】C++入门:命名空间(namespace)详解

🌈个人主页:聆风吟 🔥系列专栏:C++藏宝阁 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 * 📚专栏订阅推荐 * 📋前言:为什么需要命名空间? * 一、命名空间的定义 * 二、命名空间的使用 * 三、命名空间的特性 * 3.1 命名空间的嵌套定义 * 3.2 命名空间的定义可以不连续 * 四、命名空间的本质:独立的作用域 * 4.1 命名空间是C++的一种作用域类型 * 4.2 命名空间作用域的特点 * 4.3 域作用限定符 `::` 的作用 * 4.4 编译器的查找规则 * 五、命名空间的价值 * 5.1 解决命名冲突 * 5.2 模块化组织代码 * 5.3

By Ne0inhk