YouDuck.ai

sudo robotctl update apply

最后更新

sudo robotctl update apply daemon
sudo robotctl update apply --ref main daemon
sudo robotctl update apply --staging daemon

安装更新。每一次都经过签名校验、产物哈希校验、健康门禁和自动回滚——一个起不来的构建会被撤销,板子回到它之前跑的版本。

开发板上的陷阱

不带 --refapply daemon 会安装最新的稳定发布版,这在开发板上通常是降级。

它的语义不是「装最新的东西」,而是「装稳定通道提供的东西」。分支刚合并之后,那个稳定版仍然比你一直在测的所有东西都旧。

更麻烦的是:如果它早于某个现在已经在板子上有 unit 文件的守护进程,那个 unit 的 ExecStart 会指向旧发布版里不存在的二进制,重启失败,更新回滚。这是门禁在正常工作,但触发它的命令看起来才是最显然的那条。

already_current 不是「什么都不做」

请求板子已有的版本时它报 already_current 并且不安装任何东西——但它不是惰性的

它会检查哪些守护进程在跑那个发布版,并重启那些没在跑的,在 stale 里点名。

所以当一个修复看起来不生效时,它正是该用的命令:要么它把问题修好,要么 stale 是空的——说明那个修复从来就不在这个发布版里。

相关