v0.1.8 — aivet update:自己换掉自己
以前升级只有一条路:再跑一遍 install.sh。那是「装」不是「升」,用户得记住那行 curl。
现在 aivet update 就够了 —— 从 GitHub release 下当前平台的二进制,用它换掉正在跑的这个,下载时有进度条。
… aivet_darwin_arm64 ▕████████████░░░░░░░░░░░░▏ 47% 3.5 MB/7.4 MB 627.8 KB/s
✔ 校验和对上了 c5bf1d2c0c2bc1be…
✔ 已更新 v0.1.7 → v0.1.8 · ~/.local/bin/aivet
管道 / CI / 重定向到文件时一个 \r 都不出(那几百行刷屏是垃圾不是动效),只留一行结果;服务器不给 Content-Length 就退化成转圈 + 已下字节;ASCII 终端换成 [####....]。
这是在往你机器上放一个会被直接执行的文件,所以:
- 发布时一起传的
SHA256SUMS是必对的一环。没有它、或者对不上,一律删掉不装。跳过校验的自更新等于给自己开了一条后门。 - 顺序是先判断、再下载、下完先校验、最后才碰目标文件 —— 任何一步失败,你手里那个 aivet 都还是完好的。
- 换的动作是同目录
rename,原子的,不会留下半个文件。Windows 覆盖不了正在跑的 exe,先把旧的挪成.old,放不进去再挪回来。 - aivet 要是个软链(brew、
~/bin里手工链的),换的是它指向的那个,不会把链接本身变成真文件。 - 装在需要 root 的目录里时提示你用
sudo重跑,aivet 不自己提权。
用法
aivet update 有新版就装上
aivet update --check 只看,什么都不动
aivet update --version v0.1.6 退回某个版本
aivet update --force 版本一样也重装
用 brew 之类装的,更新交给它,别用这个。
装:
curl -fsSL https://raw.githubusercontent.com/shiftu/aivet/main/install.sh | bash