主页:https://gitee.com/futurelei
脚本仓库:https://gitee.com/futurelei/dora-rs-install
适用系统:Ubuntu / Debian / 其它 Linux(macOS 部分支持)| 需要 bash
前言
dora-rs 是一个 100% Rust 编写的机器人与 AI 应用数据流框架,官方号称比 ROS2 Python 快 10-17 倍,对 >4KB 的消息走零拷贝共享内存 IPC,还原生支持 Apache Arrow。最近想在机器人项目里试试它,结果安装过程差点把我劝退:
- 官网安装文档默认你在 GitHub 下载 release 安装器------国内直连基本超时;
- 用
cargo install dora-cli从 crates.io 装?首先要 Rust 工具链,而 dora 最新版要求 Rust 1.95,Ubuntu 22.04 自带的是 1.75,直接编译报错; - 好不容易装 rustup,
sh.rustup.rs和static.rust-lang.org在国内时通时断,一个工具链下载 10 分钟没动静; - crates.io 全量拉依赖,不走镜像慢到怀疑人生;
- pip 装 Python API 默认源同样龟速。
于是我把自己踩过的坑浓缩成了一个交互式一键安装脚本,体验对标 fishros,但启动秒开不卡顿。开源在 Gitee 上,欢迎大家白嫖 + Star。
一键安装(推荐方式)
方式一:一行命令(fishros 同款体验)
bash
source <(wget -qO- https://gitee.com/futurelei/dora-rs-install/raw/main/dora-install)
回车进入交互菜单,选 1 一键安装,全程自动。
小知识:为什么用
source <(...)而不是wget ... | bash?
source <(进程替换)执行时脚本内容走独立的文件描述符,你的终端 stdin 仍然连着脚本,交互菜单才能正常接收按键。fishros 也是这么设计的。
方式二:管道模式(懒人专用)
bash
wget -qO- https://gitee.com/futurelei/dora-rs-install/raw/main/dora-install | bash
脚本检测到自己在管道里执行(stdin 不是终端),会自动跳过菜单直接开始安装,打印提示告诉你怎么进交互菜单。不用记任何参数。
方式三:克隆仓库
bash
git clone https://gitee.com/futurelei/dora-rs-install.git
cd dora-rs-install
bash dora-install # 交互菜单
bash dora-install install # 非交互直接装
交互菜单功能一览
直接运行脚本(在终端里)看到的菜单长这样:
____ _
| _ \ ___ __ _| | ___ _ __
| | | |/ _ \ / _` | |/ _ \ '__|
| |_| | (_) | (_| | __/ |
|____/ \___/ \__, |_|\___|_|
|___/ 一键安装工具
[1] 一键安装 dora-rs (推荐)
[2] 更新 dora-rs
[3] 运行示例数据流
[4] 环境诊断 (dora doctor)
[5] 卸载 dora-rs
[6] 切换语言 / Switch Language
[0] 退出
请输入编号 [默认1]:
- 1 一键安装:系统依赖 → Rust 工具链 → cargo 镜像 → 拉源码 → 编译 CLI → Python API → 自动验证,一条龙;
- 3 运行示例 :自动发现官方示例数据流(如
rust-dataflow),dora up启动协调器和守护进程,dora build编译节点,dora run运行,Ctrl+C停止,新手第一次体验零门槛; - 4 环境诊断:执行前会先打印说明------它检查 dora CLI/协调器/守护进程状态、数据流节点健康度、端口占用与系统资源,并汇总诊断报告,看不懂某项 failed 也没关系;
- 5 卸载 :
dora down→ 移除 CLI → 移除 Python API,源码目录删不删让你确认,不会误删; - 6 切换语言:中文 / English 双语,脚本会按系统 locale 和时区自动选择,菜单里随时手动切换,选择会被记住。
- 0 退出后 别忘了
source ~/.cargo/env,或者重开一个终端。
它是怎么做到不卡的
fishros 的体验很好,但启动时同步探测网络环境,网络差的时候菜单要等好几秒才弹出来。我做了一个小优化:
- 后台异步探测 :菜单渲染的同时,探测任务(
curl官方 Rust 源,3 秒超时)已经丢到后台& disown跑了,菜单立刻显示; - 惰性等待 :只有你真的选了安装/更新,才会去
wait探测结果------而那时候你本来就要等下载,3 秒探测完全无感; - 结果缓存 :探测结果写入
~/.dora-install/cache,24 小时内重复运行直接读缓存,零等待; - 依赖前置检查 :apt 依赖先
dpkg -s查一遍,已经装过就完全不碰apt update。
出问题不用慌:日志自动留存
每个菜单动作的完整输出(包括编译、下载、诊断报告)都会自动保存到:
~/.dora-install/logs/dora-install-<时间戳>.log
动作开始前会打印本次日志路径,结束后告诉你成功还是失败(带退出码)。退出脚本时,只要全程没报错,日志目录会自动清掉,不在用户主目录留任何垃圾;一旦有报错则保留日志。给我反馈问题时直接把这个文件发过来就行,我拿着日志能直接定位到是哪一步、哪个镜像、哪个依赖出了岔子------不用你费劲复述"就是装的时候报了什么错来着"。
中英双语:自动检测 + 手动切换
脚本内置了完整的 i18n 消息目录(约 80 条文案),首次运行时按「用户上次选择 > 系统 locale(zh_CN)> 时区兜底(Asia/Shanghai 等)> 英文」的优先级自动选择语言,菜单 [6] 随时手动切换,选择持久化保存在 ~/.dora-install/lang。管道模式下提示信息也跟随语言。
踩坑实录(dora 官网安装的 4 个坑)
坑 1:系统 Rust 太旧
dora v1.0.0-rc 的 Cargo.toml 里写着 rust-version = "1.95.0",而 Ubuntu 22.04 apt 装的是 1.75。脚本会检测 rustup 是否存在、目标工具链是否安装,缺什么补什么,并且动态读取仓库的 MSRV------以后 dora 升级要求新版本,脚本不用改。
坑 2:rustup 官方源国内不可达
脚本启动时探测 static.rust-lang.org 连通性,不通就自动切换 rsproxy 镜像(RUSTUP_DIST_SERVER / RUSTUP_UPDATE_ROOT),工具链下载从 10 分钟卡死变成 40 秒。
坑 3:crates.io 拉依赖慢
国内环境下自动往 ~/.cargo/config.toml 写入 rsproxy sparse 镜像配置(已配置则跳过,不重复写)。dora 依赖树里有 zenoh 全家桶,不挂镜像编译等半小时起步,挂上之后 6 分钟出头。
坑 4:GitHub 不可达
dora 源码走 Gitee 官方镜像 https://gitee.com/dora-rs/dora 克隆,--depth 1 浅克隆省时间。
无硬编码路径,人人可用
脚本里没有任何 /root、/home/xxx 这类写死的路径:
- 工具链装在
~/.cargo; - 源码默认装在
~/dora-rs(可通过REPO_DIR=/your/path环境变量覆盖); - 一切运行时文件集中在
~/.dora-install/(日志/缓存/语言偏好),无报错退出自动清空; - 非 root 用户自动走
sudo装系统依赖。
常见问题
Q:装完 dora 命令找不到?
A:新开终端,或先执行 source ~/.cargo/env。
Q:编译要多久?
A:国内镜像下首次约 5-10 分钟(机器性能有差异),增量重装命中缓存 2 分钟内。
Q:只想装 Python API 不编译 Rust?
A:直接 pip install dora-rs,脚本里的 Python API 步骤就是这么做的;但 CLI 必须本地编译,因为官方 release 下载在国内不稳。
Q:支持 macOS / ARM 吗?
A:脚本会检测 uname -s / uname -m,macOS(需要 Homebrew)和 aarch64 架构都能识别;主要测试环境是 Ubuntu x86_64,其它平台欢迎反馈 issue。
Q:退出脚本后终端狂报 unbound variable(SCM/GEM_HOME 之类)?
A:那是你的终端残留了 set -u 状态(可能被之前运行的旧版脚本或 fishros 泄漏),oh-my-bash 主题重绘提示符时就会报。执行一次 set +u 或重开终端即可;新版脚本已在子 shell 中隔离运行,不会再造成这个问题。
Q:卸载干净吗?
A:菜单选 5,会停掉 dora 进程、卸载 CLI 和 Python API;源码目录和 ~/.cargo 里的工具链是否删除由你确认。
链接汇总
- 脚本仓库(求 Star):https://gitee.com/futurelei/dora-rs-install
- 我的主页:https://gitee.com/futurelei
- dora 源码 Gitee 官方镜像:https://gitee.com/dora-rs/dora
- dora 官方文档:https://dora-rs.ai
写在最后
这个脚本本质上是把「读文档 → 试错 → 换镜像 → 重试」这套重复劳动固化成了代码。如果你也在搞机器人中间件、AI Agent 数据流,或者单纯想找个比 ROS2 轻的框架玩玩,希望它能帮你省下半小时。