Repository navigation
feat: 一键安装全自动/小白模式、国内镜像修复与常用工具安装 - #123
Merged
Merged
Conversation
仓库没有 .gitattributes,core.autocrlf 也是默认的 false, git 直接存盘上的字节。Windows 上编辑器保存一次就会把文件改成 CRLF, `git status` 于是把整个仓库标成已修改——实测一次 37 个文件、5608 行增删, 而 `git diff --ignore-all-space` 是空的,一行真实内容都没变。 真正的改动会被淹没在里面,评审也没法看。 加上 `* text=auto eol=lf` 之后,git 在计算对象时归一化换行符, 工作区即使是 CRLF 也不再算差异。 顺带修正 docs/_sidebar.md:它是仓库里唯一一个存成 CRLF 的文件, 本次归一化为 LF,内容没有变化。 对 install 这个文件尤其重要——它是用户 source 执行的 shell 脚本, 跑在 Linux 上,CRLF 会导致 bad interpreter 之类的报错。
社区和 issue 里大量反馈 Ubuntu 20.04/18.04 一键安装 foxy/galactic 失败、
满屏 404,以及「导入密钥失败」。2026-10 逐个镜像实测后定位到以下原因:
1. 清华/中科大/华为/MirrorZ 的 ROS2 源里 bionic/focal/buster/xenial 的
索引停在 2024~2025 年,对应 deb 包却已被删除:apt update 正常,
一安装就 404。阿里云与官方源同步正常(2026-09)。
- 这几个系统的 ROS2 只保留阿里云 + 官方源,并新增阿里云选项
(阿里云 ROS1 源停在 2021 年,只用于 ROS2)
- jammy/noble/resolute/bullseye/bookworm 的国内源实测正常,
resolute 补上国内源
- 新增运行时检测:换源后对每个 ROS 版本抽一个 ros-base 包发
HEAD 请求,确认 404 就自动排除该镜像换下一个,以后镜像再过期
也能自己绕开
2. gitee 的 raw 地址现在会 302 跳到 raw.giteeusercontent.com,原来的
`curl -s` 不跟随跳转,拿到一段 HTML,gpg 报 no valid OpenPGP data。
改为 `curl -fsSL` 下载并校验是 PGP 公钥后,用 gpg --dearmor 写入
/etc/apt/trusted.gpg.d/ros.gpg(不再依赖已弃用的 apt-key);
密钥服务器兜底改走 hkp://keyserver.ubuntu.com:80 + 完整指纹。
3. 换源重试逻辑:原来只有一个 ROS 版本时(len(ros_pkg) > 1)会被
误判为失败;用户重选同一个源时提示「四次换源都失败」并退出。
改为最多 6 次、自动排除失败镜像。
4. 安装遇到 --fix-broken 时用 "foxy(ROS2)" 当包名/字典键,必然
KeyError;改为用真实包名。下载中断时刷新索引后 --fix-missing
重试一次;出现 404 时提示换镜像源。
5. MirrorZ 选项误标为「中山大学开源软件镜像站」,更正。
测试用例里 ROS 官方源的序号随之从 5 变为 6。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Debian 的镜像不区分架构,arm64 也用同一套地址(原来 arm64 拿到空 列表,测速后 fast_source[0] 抛 IndexError,见 issue fishros#118) - Debian 11 起安全源路径改为 <code>-security,Debian 12 起增加 non-free-firmware,按代号选模板;修掉镜像地址带尾部 / 时安全源 拼成 .../debian/-security 的问题 - Ubuntu 24.04+ 系统源在 sources.list.d/ubuntu.sources(deb822), 原来只删 sources.list 再新写一份,官方源仍然留着。现在检测到 ubuntu.sources 就直接改写它,原文件备份到 /etc/apt/ubuntu.sources.fishros.bak - 一个源都没找到时 result 未赋值导致 UnboundLocalError(社区 #4764) - 删掉 get_source_by_system 里 return 之后不可达的死代码, ubuntu-ports 列表去重并补中科大 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Docker 容器里通常是 root 且没装 sudo,所有 "sudo xxx" 都会 command not found(issue fishros#120)。以 root 运行且找不到 sudo 时自动 去掉命令里的 sudo 前缀 - python3-distro 装不上时(apt 源坏了/conda 环境)不再直接 ModuleNotFoundError 崩溃,改为读取 /etc/os-release 兜底 - Debian 11/12/13 版本号没有小数点,代号一律返回空串,导致 「暂不支持 debian12/13」(issue fishros#88 fishros#118),改为取 os-release 代号 - check_result 原来要求正则恰好匹配 1 次,而输出被拼成一整段,同一 错误出现多次就检测不到,改为匹配到即可 - install:上次运行被中断时 /tmp/fishinstall 残留且属主是 root,普通 用户再次下载会因权限不足静默失败,表现为「没有出现菜单直接退出」 或跑的是旧脚本(issue fishros#74 fishros#113)。每次先清理,下载失败给出明确提示; $UID 换成 $(id -u),在 sh 下也能用 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
服务器把 http 301 到 https 时,老系统(证书库过旧)和树莓派/Jetson 等开机时钟 不准的设备在第一步下载 install.py 就会因证书校验失败而出不来菜单。 install.py 下载其余脚本本来就带 --no-check-certificate,这里保持一致。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
社区反馈一键安装选项太多:换不换源、怎么清理、怎么测速、选哪个镜像、 装哪个版本、桌面版还是基础版,新手一路要做 6~7 次选择,选错一步就失败。 新增菜单 21「一键安装(新手推荐):全自动安装ROS」,只需确认一次: - 自动识别系统/架构,列出将要执行的步骤和要装的版本,确认后全程不再提问 - 系统源:自动测速选最快镜像;第三方源先保留,apt update 失败时才挪走重试 - ROS 源:国内按测速顺序尝试各镜像(过期/失败自动换下一个),国外直接用官方源 - 版本:按系统挑推荐版本(18.04 melodic、20.04 foxy、22.04 humble、 24.04 jazzy、26.04 lyrical),推荐版本不可用时自动退到可用版本 - 磁盘不足 6GB 自动改装基础版,不足 2GB 直接提示扩容 - 装完给出小乌龟等验证命令 - 选「我要自己选」回到原来的自定义流程 菜单 1 改名为「高手自定义」,流程不变,已有的 fish_install.yaml / Dockerfile 自动化配置不受影响。21 放在 ROS 分类第一位(菜单改为按 install.py 书写顺序展示)。 其他改动: - 换源清理第三方源从 rm -rf 改为改名备份(*.fishros-bak-时间),可手动恢复 - tool_install_ros 拆出 install_ros_packages 供两种模式复用;add_source 支持 auto - 引导脚本用 `sudo env FISHROS_URL=...` 启动 install.py。原来 sudo 会清掉该变量, 自建服务器测试时只有 install.py 来自测试服务器,其余工具仍从官方地址下载旧版 - 检测到不在国内时只有使用官方镜像站才切到 GitHub,自建服务器地址保持不变 - README 补充新手入口和自建服务器测试方法;CI 增加 focal/jammy 全自动用例 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
getlog 原来先把 stdout 读到进程结束,再去读 stderr。子进程往 stderr 写满管道缓冲(64KB)后会阻塞在 write 上不退出,stdout 也就一直不结束, 两边互相等待,表现为一键安装「卡住不动」。 容器实测:apt 一次装 ros-foxy-desktop(958 个包)下载完成后卡住 35 分钟, dpkg 始终没启动,python 读线程停在 anon_pipe_read。最小复现:子进程写 20000 行到 stderr 再打印一行到 stdout,旧代码卡死(timeout 杀掉), 新代码正常返回并拿到全部 stderr。 改为单独起线程同时读 stderr,读完 stdout 后 wait 取返回码。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
测速只看首个请求的延迟,选出的系统镜像在连续下载近千个包时可能限流或 断连(实测中科大多次 Unable to connect)。全自动模式下如果安装失败且报错 里是当前系统镜像下载失败,自动换下一个最快的镜像、apt update 后继续安装 (已下载的包会复用),最多换两次。另外全自动模式下不再提示「使用[1]安装」。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
容器实测:系统镜像中途断连 → gnupg2 装不上 → gpg 不存在(code 127) → 公钥导入失败 → 所有 ROS 源都 NO_PUBKEY,换哪个镜像都没用。 - gpg 不可用时把 ASCII 公钥直接放到 /etc/apt/trusted.gpg.d/ros.asc (apt>=1.4,即 Ubuntu 18.04 起支持),最后再退到 apt-key - Ubuntu 22.04/24.04 桌面版默认没有 curl:下载公钥和过期镜像检测在没有 curl 时改用 wget(用户就是用 wget 下载的一键安装,一定有) 在没有 curl/gpg、且禁止安装二者的 focal 容器中验证:公钥经 wget 下载后以 .asc 导入、apt update 通过;wget --spider 检出清华 ROS2 包 404 并自动换到阿里云。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
22.04 容器实测:中科大 http 下载中途断连后,"换下一个最快镜像"选中的是 https://mirrors.ustc.edu.cn,只是换了协议、还是同一台服务器。这次碰巧能用, 但服务器真不可用时等于没换。改为把失败地址的 http/https 两种写法一起排除。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
原来的分组比较乱:NodeJs、科学上网工具归在「AI板块」,MicroROS 开发环境 归在「常用软件」,同组内编号跳来跳去。 - 分为 ROS安装 / ROS开发工具 / 换源与网络 / 开发工具 / 日常软件 五组, 组内按常用程度排列 - 菜单编号全部保持不变(fish_install.yaml、Dockerfile 按编号自动选择), 已核对新旧 tools 字典的 编号→工具文件/依赖 完全一致 - 统一菜单文字格式(全角/半角冒号、PlateformIO 拼写),Cartographer 注明仅支持 ROS1 - 编号右对齐显示;补齐所有分组和菜单项的英文翻译 - README 工具列表按新分组重写,补上原来缺的 11/12/13/14/15/16/17/18 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
中文 Ubuntu 的 ~/桌面 等目录下 colcon build 编译 msg 包会报 "rosidl_generate_interfaces ... list index: 1 out of range" 和 "Target dependency '/xxx/build/.../msg/Xxx.idl' does not exist"。 根因:rosidl_adapter 生成的接口列表本身是对的,但 rosidl_adapt_interfaces.cmake 用 file(STRINGS ...) 读回时没加 ENCODING UTF-8,CMake 只保留 ASCII 字符串, "桌面" 被当成分隔符丢掉,一行路径被切成两段。humble/jazzy/rolling 上游都没修。 一键配置 ROS 环境(菜单 4,装完 ROS 后也会自动调用)时给已装的 ROS2 补上 ENCODING UTF-8(原文件备份为 *.fishros-bak),ROS 升级覆盖后再运行一次即可。 ros:humble 容器验证:FishBot 工作空间放在 /root/桌面,修复前 fishbot_msgs 失败, 修复后 9 个包全部编译通过。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ROS 桌面版不带导航、建图功能包,新手装完 ROS 编译 FishBot 等工作空间时 最常见的报错就是找不到 nav2_bringup 之类的包。 - 菜单 22:为已装的 ROS 一次装好导航 Nav2、建图 slam_toolbox / Cartographer、 键盘遥控、xacro / 关节调试界面、robot_localization、pyserial; 逐个检查软件源,没有的跳过(如 noetic 没有 cartographer-ros),装完逐个核对 - 全自动模式确认时新增「全自动安装 + 常用功能包」,仍然只需确认一次 - 菜单 4 的说明里注明会修复中文路径编译报错;README / CI 用例同步 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
社区帖 24:中文系统但终端编码不是 UTF-8 时,一键安装装完中文语言包就提示
「Finish! Please Try Again!」退出,语言包没生效时重跑永远停在这一步。
两个原因,分别修复:
1. base.py 判断编码用的是区分大小写的 encoding.find("UTF")。Python 3.11+ 在
LANG 未设置(C/POSIX)时会自动切到 UTF-8 并返回小写 "utf-8",被误判为不支持,
Ubuntu 24.04 / Debian 12 上 SSH、Docker 里运行都会中招。改为忽略大小写。
2. 真正非 UTF-8 的终端(GBK/GB18030,或 18.04 的 Python 3.6 在 C 区域设置下):
install.py 启动时直接用系统自带的 C.UTF-8 重新启动自己;重启后仍不是 UTF-8
才走原来装语言包的流程。
容器验证:24.04 不设 LANG、LC_ALL=C、以及 22.04 终端设为 zh_CN.GB18030 三种情况
都能直接进入菜单(GB18030 时打印 restarting with C.UTF-8)。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
新手最常见的两种 apt 报错,在装 ROS(菜单 1/21) 和装功能包(菜单 22) 前先处理: - 刚开机时系统自动更新占着 apt 锁:Could not get lock /var/lib/dpkg/lock-frontend → 检测到锁被占用就等待,最多 5 分钟 - 上次安装中途 Ctrl+C(比如自定义模式选到一半放弃、改用全自动重来): dpkg was interrupted, you must manually run 'dpkg --configure -a' → 自动执行 dpkg --configure -a 容器验证:人为制造「dpkg 中断 + 另一进程占锁 20 秒」,修复前 apt 报 dpkg was interrupted;修复后等待 23 秒、自动修复,随后 apt 正常安装。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
公司机器人普遍用 USB 接收器的手柄遥控。菜单 22 增加 ros-<版本>-joy、 ros-<版本>-teleop-twist-joy 和系统包 joystick(jstest 测试手柄),四个 ROS 版本 (humble/jazzy/foxy/noetic)都已核对包名存在;装完提示怎么测试和用手柄控制机器人。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
在全新安装的 Ubuntu 22.04 虚拟机上实测,三条获取公钥的途径同时失败, 导致所有 ROS 源都 NO_PUBKEY: 1. gitee 下载中途 TLS 连接被重置(curl 56),而 curl --retry 不重试这类错误; 2. GitHub raw 在国内连不上; 3. 密钥服务器兜底在全新系统上必然失败:root 没用过 gpg,/root/.gnupg 不存在, gpg 起不来 dirmngr(「缺少 dirmngr」)。原版用 apt-key adv 会自建临时目录所以没这问题。 修复: - 公钥随一键安装一起发布(tools/keys/ros.asc,取自 ros/rosdistro,指纹 C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654,有效期至 2030-06-01),作为第一个下载地址: 能下载到一键安装就一定能下载到它;其后是 gitee、GitHub - 每个地址最多试 3 次;下载到的公钥校验指纹,不是 ROS 官方公钥一律不用 - 所有 gpg 操作都用临时 GNUPGHOME;密钥服务器 80 和 11371 端口都试, 失败时清理 tee 留下的空文件 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
新装的 Ubuntu 22.04 虚拟机恢复快照后 DNS 失效,按 IP 查国家的请求失败, 一键安装整个界面变成了英文,而系统语言是 zh_CN.UTF-8。 查询失败(断网、DNS 故障、接口不可用)时原来固定返回 en_US。以前看不出来,是因为 sudo 清掉了 FISHROS_URL,语言包根本没下载,界面始终是中文;FISHROS_URL 透传后 语言包能下载了,这个问题才暴露出来。 改为查询失败时按系统语言:英文系统用英文,其它(中文、C/POSIX 等)用中文。 直接读 LC_ALL/LC_MESSAGES/LANG,因为 locale.getdefaultlocale() 会把 C.UTF-8 规范化成 en_US。查询成功时逻辑不变。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
中科大镜像对 wget 默认 UA 一律返回 403。全新的 22.04 桌面版没有 curl, 若 curl 又没装上,http_status 走 wget 兜底,会把正常的中科大源当成过期源排除。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
系统源(菜单 5): - 只用 http 镜像(老系统证书、设备时钟不准时 https 会失败); 去掉国内不可用的 kernel.org, 加入北外、南大、华为云, 列表带镜像名 - 测速改为下载 dists/<代号>/Release: 测真实速度并确认镜像有该系统版本, 只测一次, 失败换下一个不再重测; 已停止支持的 Ubuntu 版本自动改用旧版本归档源(old-releases) - 修复手动选源时选 0 退出不了: 原来会把 "quit" 写进 sources.list 后反复要求重选; 现在退出会恢复换源前的源配置, 前两个问题选 0 也不会再继续换源 - get_fast_url 按地址协议连接(原来一律 https) 菜单 1: 进入后先选 小白模式(推荐)/高手模式, 网上教程里的"输入 1"继续有效; 菜单 21 不再单独展示. 小白模式装完列出帮用户选了什么(系统源、ROS 源、公钥、版本及原因、功能包、环境变量、中文路径修复). 推广: 内容从服务器 ads.json 读取(读不到用内置内容), 按场景展示(开始安装/装好 ROS/装好功能包/结束), 支持终端二维码; 安装失败后不展示商品推广; 淘宝链接更新. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- 所有选择里的 [0] 由 quit 改为"返回上一步": 多步流程退回前一个问题, 第一个问题退回上一级, 工具因此退出时回到主菜单; 只有主菜单的 [0] 是退出一键安装 - 菜单 1: 选模式 <- 小白确认 / 高手: 系统源 -> ROS镜像源 -> ROS版本 -> 桌面/基础版, 每步都能退回 - 菜单 5: 换源方式 -> 选择方式 -> 手动选镜像(退回时撤销本次换源) -> 是否添加ROS源 - 菜单 16 同样支持退回 - 修复高手模式"是否更换系统源"选 0 会当成"不更换"继续安装 - 高手模式和菜单 16 换源前检测当前系统源: 国外源建议选 1 换源, 国内源建议选 2 不换, 识别不了建议换 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- AdUtils 改读 {FISHROS_API_URL 默认 http://fishros.com/api}/install/ads, 读不到仍用内置内容
- 新增 AdUtils.report_run(): 后台线程请求 /api/install/stat, 3 秒超时、失败忽略, GITHUB_ACTIONS=true 时不发
- 论坛 1733 帖子的访问保留
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- 新增 StatUtils: run 启动、menu:<编号> 主菜单选择、菜单 [1] 小白/高手的 pick/start/ok/fail(失败带系统代号), 后台线程 3 秒超时、失败忽略, 退出前最多等 2 秒; GitHub Actions 和 FISH_INSTALL_CONFIG 自动测试不上报 - 推广内容读官网 /api/install/ads(支持 gzip), 不再显示二维码; 推广文字里的链接改淡蓝色加下划线 - 安装成功提示「恭喜你,安装成功了…」改为淡黄色(PrintUtils.print_highlight) - 下载脚本文件的 wget 加 -T 15 -t 3(原来无超时, 网络一卡要等 900 秒) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- 官方 Linux 版: 按 uname -m 选 x86_64/arm64/LoongArch 安装包; dpkg 报文件冲突(如社区帖 4843 的旧版 wechat-beta)时说明是哪个旧包、确认后卸载重装; dpkg-query 确认装上才提示成功, 不再假成功 - 下线 [2] 桌面版 v2.1.1: gitee 源已失效, 且该包会把 /etc/lsb-release 换成麒麟、卸载脚本会出错; 编号 3、4 不变 - [4] 改名「一键清理微信」: 先检查再清理, 安全卸载旧桌面版并恢复 lsb-release, 列出清理了什么, 提醒聊天记录未删除; 清理完回到微信菜单 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- CmdTask 去掉每条命令固定的 sleep(0.5), 子进程创建好就开始轮询 - 语言文件合并成一条命令下载, 查 IP 所在国家改为后台并行 - 论坛 1733 计数改后台进程, 不再等待返回 - 引导脚本已能导入 distro/yaml 时跳过 apt install - base.py/translator.py 静默下载, 失败才提示 - 打字机效果按时间点补齐, 总时长减半(PrintUtils.delay_scale) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- 打字机效果恢复原来的实现和速度, 用户要先对比效果 - 基础检查后打印「当前系统: 名称 版本 (代号) 架构」, 原来 dpkg 查到的架构会被进度行盖掉 - 运行结束写的 /tmp/fish_install.yaml 只在 FISH_INSTALL_CONFIG 明确指定时才读, 避免在 /tmp 目录下运行时按上次的选项自动执行; 读到配置文件时提示一行 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- 公钥依次从清华/中科大/阿里云镜像下载(带重试和超时), 校验是 PGP 公钥再用, 源和公钥用同一个镜像 - 上次失败留下的无公钥 docker.list 会让 apt update 一直报错、重跑直接退出, 安装前先清理 - 软件源更新失败时撤掉刚加的源, 不影响之后的 apt 操作 - 装完用 docker --version 确认再报成功, 失败返回 False; 不支持的架构直接提示 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- VSCode: 改为下载微软最新稳定版, apt 装本地包, 装完确认版本 - Node.js: 可选 18/20(已停止维护)/22/24(推荐)/26, 默认改 24; 下载加超时 - OpenCode: 去掉已停用的 registry.npm.taobao.org, 改用 npmmirror - Docker 代理: 只保留可用的华为云加速, 回车直接用; 写 daemon.json 保留原有配置 - ROS Docker: 补 kilted, 修正各版本维护状态; 国内未配加速时自动配华为云; 拉镜像最多 5 次并确认镜像存在, Docker 或镜像失败时明确报错 - Cartographer: 22.04 及以后提示只支持 ROS1, ROS2 用菜单 22 - 系统自带 ROS: 源里没有 ros-base-dev(24.04 起)直接提示; 按实际结果提示 - QQ: 官网下载链接是带签名的临时链接, 改为安装用户在 ~/下载 或 ~/Downloads 里下好的 deb, 跳过没下完/架构不符的包, 找不到就提示去官网下载 - base.py 新增 DockerUtils(加速地址与 daemon.json 读写) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- GitHub 桌面版: github.fishros.org 中转已失效, 改为读 mirror.mwt.me(shiftkey 官方 apt 镜像) 的软件包索引下载最新版, 不加成 apt 源; 装完确认; 镜像只有 amd64, 其它架构提示手动下载 - Docker: 从 /etc/os-release 判断软件源路径和代号(UBUNTU_CODENAME 走 ubuntu, raspbian/debian 各走各的), 架构用 dpkg 的真实值(32 位树莓派是 armhf); Debian 12、Mint 22 容器实测通过 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
刚装完 Docker 时加入 docker 组要重新登录才生效, 当前终端执行 wechat 等控制命令会报 permission denied. 在微信和 ROS Docker 生成的控制脚本开头检查 docker.sock 是否可写, 不可写时提示注销重新登录(或先执行 newgrp docker)并退出, 不改动权限本身 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- 菜单改为 FlClash 0.9.2(推荐)/Clash Verge Rev 2.5.8, 去掉 mihomo-party - 下载按 ghfast.top -> gh-proxy.com -> repo.trojan-cdn.com 依次尝试, 每个先试 15 秒, 平均速度达到 200KB/s 就用它下完, 都达不到时用测到最快的那个下完; 下完校验 deb - 下载时显示进度条、实时速度和剩余时间, 输出重定向时降低刷新频率 - proxy_add 按客户端默认端口写入(Clash Verge Rev 是 7897, 原来写死 7890 用不了) - 选 0 返回上一步, run 返回安装结果 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- npm 安装: OpenCode / Codex / Claude Code / DeepSeek Harness(dsh, 预览版) / Pi, 复用原 OpenCode 的 npm 目录修复、国内源切换、重试和命令链接修复; 按各工具要求检查 Node.js 版本(Claude Code 要 22+, Pi 要 22.19+), 不够就装 Node.js 24 - deb 安装: CC Switch / Cockpit Tools, 读 GitHub releases/latest 跳转自动取最新版, 取不到时用已知版本; 装完用 dpkg-query 确认; 支持卸载 - base.py 新增 DownloadUtils: GitHub 加速站依次尝试、进度条和实时速度, [14] 代理工具改用它 - 先选工具再选安装/卸载, 两步都能选 0 返回; 文件名沿用 tool_install_opencode.py Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- 菜单 18 各工具装完显示「怎么启动 + 第一次用怎么配置」, 命令行工具统一提醒要先接入模型账号或 API Key; dsh 写明必须用 dsh web、要打开带 token 的地址、浏览器太老报 Intl.Segmenter 时改用 Chrome - 新增菜单 23(日常软件): 从 Google 官方下载 Chrome deb 安装(只有 amd64), 已安装则提示版本. 国内连不上 snap 商店, Ubuntu 22.04 的 snap 版 Firefox 停在旧版无法更新, 打不开一些新网页 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- dsh web 会自动用默认浏览器打开, 没打开再复制带 token 的地址 - 打开后要点「请选择模型」配置 DeepSeek API Key; 工作区是运行 dsh web 时的目录 - 默认浏览器是旧 Firefox 时报 Intl.Segmenter, 提示装 Chrome 并设为默认浏览器 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- base.py DownloadUtils 旁新增 AdUtils.links + AdUtils.link(name, default), 从 /api/install/ads 的 links 段读可配置链接
- [14] 装完提示的订阅注册链接改为 AdUtils.link("proxy_subscribe", 默认); 官网后台留空则不推荐
- 默认值从已删的论坛帖 topic/668 换成 portal.shadowsocks.nz 注册链接
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- 虚拟机(VMware/VirtualBox)显卡上 Clash Verge(WebKitGTK)白屏: 装完给它的 .desktop Exec 前加 WEBKIT_DISABLE_DMABUF_RENDERER=1(幂等), 点图标启动即正常; 真机加上无副作用 - FlClash(Flutter)在这类虚拟机显卡上白屏且无可靠开关, 故推荐默认改为 Clash Verge Rev (编号不变, 只改推荐标记和默认提示); FlClash 保留作备选并注明虚拟机可能白屏 - 136 VMware 实测: Clash Verge 加该变量后界面正常; .desktop 注入幂等 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- 移除 [18] 菜单里的 Cockpit Tools, 现为 6 个 AI 编程工具 - CC Switch 装完提示的中转模型供应商链接从官网后台 /admin/install/aff 读取(键 cc_switch_relay), 读不到用默认链接, 后台留空则不提示 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
概述
在现有一键安装基础上,修复国内镜像失效、若干安装项不可用的问题,并新增全自动/小白模式、常用功能包、AI 编程工具、Chrome 等安装项。已在 Ubuntu 22.04 / 24.04、Debian、容器环境实测。
主要改动
ROS 安装与换源
rosidl_adapt_interfaces.cmake的file(STRINGS)缺少ENCODING UTF-8)新模式与新菜单
[0]改为「返回上一步」,主菜单 0 为退出修复失效或会误报成功的安装项
/etc/os-release选 ubuntu/debian/raspbian 源;容器控制命令在没有 Docker 权限时给出提示wechat-beta冲突,按 dpkg 真实结果提示;下线已失效的桌面版 2.1.1;一键清理补充CmdTask读 stdout/stderr 互相等待导致卡死;兼容无 sudo 容器、缺 distro 模块;终端非 UTF-8 时不再一直提示Finish! Please Try Again!启动速度
其它
.gitattributes,统一换行符为 LF🤖 Generated with Claude Code