第 25 步 · 高效工作 进阶 · 12 分钟
🔄维护与更新
一台长期开机的机器需要在时间的流逝中保持整洁。操作系统、依赖、工具、智能体:哪些可以自动化,哪些需要手动更新,以及如何做到不弄坏任何东西。
一台 24 小时不间断运行、并且可以从外部访问的机器永远不会真正「完工」。它是活的,而正如一切有生命的事物一样,它需要一点点照料。好消息是:90% 的工作可以归结为两个习惯,一个自动完成,一个每月一次。我们来看看是哪两个,尤其是如何在更新时不弄坏任何东西。
操作系统:底层系统
您的 Ubuntu 是地基。维护分为两个层次:
# 日常动作:刷新软件包列表,然后安装更新
sudo apt update && sudo apt upgrade -y
# 清理掉那些已经没用的软件包
sudo apt autoremove --purge
至于安全,您已经在系统设置里用 unattended-upgrades 把一切都自动化好了:机器会自行应用关键修复。这就是我们刚才说的那个自动习惯。
每两年一次,Ubuntu 会发布一个新的 LTS 版本。迁移通过 sudo do-release-upgrade 完成,但请慢慢来:先做好备份(参见 Git、GitHub 与备份),并阅读版本说明。这并不紧急,一个 LTS 版本会被支持好几年。
依赖:您的项目所依靠的东西
这正是意外藏身之处,因为一个升了大版本的依赖可能会弄坏一个项目。
- Node(通过
nvm):nvm install --lts安装最新的 LTS,nvm alias default把它设为默认。先保留旧版本,等确认您的项目都能正常运行之后再说。 - 某个项目的软件包:
npm outdated会显示哪些落后了,npm update会在您的package.json限定的范围内更新。对于大版本,请先读一读 changelog:破坏性变更正是发生在这里。 - 能救命的习惯:锁文件。 把您的
package-lock.json/requirements.txt纳入版本管理。它们能保证您的项目在任何地方都重新安装完全相同的版本,不会在您背后悄悄变动。
工具与智能体
您技术栈里的其余部分都能干净地更新,各有各的方式:
- Docker:跟随系统的
apt更新。记得清理那些堆积起来的东西(见下文)。 - Ollama:重新运行安装脚本即可升到最新版(
curl -fsSL https://ollama.com/install.sh | sh)。至于模型,用ollama pull <模型>就能取到新的版本:本地版本会被替换。 - 您的代码智能体:Claude Code 和 OpenCode 几乎能自己保持最新,否则一句
npm update -g(或它们各自的更新命令)就够了。一个最新的智能体,意味着免费到手的新能力。 - Tailscale 和 cloudflared:通过它们各自的软件源安装,会随系统一起更新。无需做任何特别的事。
磁盘空间:无声的陷阱
模型、Docker 镜像和旧软件包会在不知不觉中把磁盘填满,而一台塞满的机器会开始莫名其妙地崩溃。打扫只需三条命令:
df -h # 还剩多少空间
docker system prune -a # 清除未使用的镜像和容器
ollama rm <模型> # 删除一个您不再使用的模型
sudo apt autoremove --purge # 孤立的软件包
让智能体来帮您
这正是您的智能体最喜欢的那种苦差事。「检查一下这台机器上有什么需要更新的,给我总结一下重要的变更,并提出一个方案」:它会列出落后的软件包,替您读完 changelog,然后建议您一步一步地行动。您的手指始终按在按钮上,调查的活儿由它来干。