自动更新
默认情况下,sid-code 会在后台检查当前安装的通道(稳定版或 beta)有没有新版本,发现了就下载安装, 下次启动才切过去。正在跑的这次会话不会被替换。
这页讲三件事:怎么选更新模式、怎么手动更新、失败了会怎样。 安装本身(第一次装、指定版本、beta 通道)在安装。
快速上手
三种模式,写在 ~/.sid-code/settings.json:
{
"autoUpdate": "auto"
}| 模式 | 行为 |
|---|---|
auto(默认) | 后台静默下载并安装当前通道的新版本,下次启动生效 |
notify | 发现新版本只提示,不下载。自己跑 sid-code update |
off | 完全不检查。仍可随时 sid-code update |
环境变量 SID_CODE_AUTO_UPDATE 覆盖 settings(取值同样是 off / notify / auto), 适合 CI 或临时关掉:
SID_CODE_AUTO_UPDATE=off sid-code手动更新(任何模式都能用):
sid-code update # 沿用当前通道更新(beta 用户仍在 beta)
SID_CODE_CHANNEL=beta sid-code update # 加入抢先版
SID_CODE_CHANNEL=stable sid-code update # 退出抢先版,回到稳定版
sid-code update --version <版本号> # 装指定版本(回滚也走这条)详细说明
自动更新跟随当前安装的通道
后台检查读的是当前安装的通道的指针:稳定版读 latest.txt,beta 读 beta.txt (判据是安装时写在二进制旁的通道标记)。安装子进程会显式设置同一个通道, 把你环境里继承来的 SID_CODE_CHANNEL 盖掉。
所以自动更新永远不会把一台机器在两个通道之间悄悄切换:稳定版只升稳定版, beta 只升 beta(beta 期发的修复号也会自动装上)。dev 本地开发版不自动更新。 切换通道要显式带 SID_CODE_CHANNEL。完整通道语义见安装 · 抢先版。
检查频率
最多每 24 小时查一次,依据是 ~/.sid-code/updates/state.json 里的 lastCheckAt。 网络失败、版本号非法都算「查过」,不会每开一次会话就打一次服务器。
一次检查就是对 www.sid-code.cc/releases/sid-code/latest.txt(beta 通道读 beta.txt)的裸 GET, 不带会话内容、设备 ID 或任何配置;服务器能看到的只有你的 IP 与请求时间。 不想要这次请求:"autoUpdate": "off",或隐私级别 essential-traffic(见隐私与数据流向)。
装的时候不会动正在跑的进程
下载、SHA256 校验、冒烟测试都在后台子进程里做,通过版本化目录 + 软链接原子切换 (和 install.sh 是同一套)。当前这次会话继续用旧二进制,下次启动才走到新的。
多个 sid-code 同时开着时,只有抢到锁的那个去装,其余静默跳过。 锁在 ~/.sid-code/updates/lock/,超过 30 分钟视为残留并回收。
失败了会怎样
装不上就不动旧入口,当前版本继续可用。两种失败的提示时机不同:
- 查不到新版本(拉
latest.txt失败,多半是网络问题):连续 3 次才提示一次,避免刷屏。 - 下载或安装失败(已经查到新版本,但装的过程出错):下次启动时立即提示一次。
详细过程在:
cat ~/.sid-code/updates/last-update.log常见原因:访问不到 www.sid-code.cc、~/.sid-code/ 没写权限、 已经有另一个实例在装。
回滚
先列出可安装的版本,再指定版本号:
sid-code update --list # 按版本号倒序,标注 stable / beta / 当前
sid-code update --version <版本号>0.1.602 起的每个版本都在归档里,服务器清理旧目录不影响安装。 本机 ~/.local/share/sid-code/versions/ 里还留着的版本(默认保留最近 2 个)直接切换,不联网, 断网时也能回滚;本地二进制跑不起来时才重新下载。 更早的版本已丢失,--list 末尾会如实列出。配置和会话数据不受影响,只换二进制。
两点要注意:
- 停留在旧版本要关自动更新。 默认
auto模式只要服务器上有更新的版本就会升级, 下次启动就把你装的旧版本换掉了。想停留,在 settings 里写"autoUpdate": "off", 或设环境变量SID_CODE_AUTO_UPDATE=off。 - 0.1.599 及更早的版本内置的更新地址已停用。 这批版本自己的
sid-code update和自动更新都会失败。要换版本,请重新运行 install.sh:
curl -fsSL https://www.sid-code.cc/releases/sid-code/install.sh | SID_CODE_VERSION=<版本号> bash无头模式不自动更新
-p / --print 这条路径不跑自动检查——只有交互 TUI 启动时才会。 CI 和脚本不会在跑任务的当口自己改二进制。要更新,显式跑 sid-code update, 或在评测 / CI 的 settings 里写 "autoUpdate": "off"。
企业里怎么统一
团队默认配置可以定默认模式,例如先提示、不自动装:
{
"autoUpdate": "notify"
}它怎么落到每台机器上:首次安装时整份拷贝;升级时由启动迁移把用户缺失的顶层键补进已有的 settings.json——每个键只会被补一次、绝不覆盖已写的值,模板后续新增的键会在之后启动时补进来。 所以自己写过 autoUpdate 的人不受团队默认影响,团队后来改了这个键的取值也不会同步过去。 要强制全员统一,下发环境变量 SID_CODE_AUTO_UPDATE(优先级高于 settings)。 补全的细节见团队默认配置分发。
开 --debug 时,检查 / 抢锁 / 安装的过程会进 ~/.sid-code/debug.log, 分类是 AUTO_UPDATE。
相关
- 安装 —— 第一次装、指定版本、beta 通道、卸载
- settings.json 字段 ——
autoUpdate的类型与缺省值 - 环境变量 ——
SID_CODE_AUTO_UPDATE、SID_CODE_CHANNEL - CLI 参数与子命令 ——
sid-code update的完整选项 - 更新日志 —— 每个版本对用户有什么变化