Snap,这套由 Canonical 推出的软件打包与部署体系,天生为 Linux 内核和 systemd init 系统而生。它借助 snapd 工具运行,让上游开发者可以绕开发行版,直接向用户分发应用,覆盖绝大多数主流 Linux 发行版。对用户来说,安装软件确实变得简单了——默认情况下,snapd 每天自动检查四次更新,一旦发现新版本就会静默安装,虽然省心省力,但无法关闭自动更新的机制,让许多用户感到困扰。
初衷无可厚非,可实际体验如何?不少开发者被它折腾得苦不堪言。日常使用的开发工具说更新就更新,冷不防插件崩溃、依赖不兼容,还得手动回滚。正因如此,很多人装完 Ubuntu 后的第一件事就是卸载 snap,宁可自己动手配置,也不愿被“强制更新”绑架。
不过,Canonical 如今终于松口了——允许用户对 snap 格式软件包执行临时或永久禁用自动更新操作。 以前是强制更新保平安,现在总算把选择权交还给了用户。但别高兴太早,目前还没有图形界面支持,所有操作都必须在终端里敲命令来完成。

举个例子,你只想让 VLC 播放器暂时歇一天,不让它自动升级,可以输入:
snap refresh --hold=72h vlc
系统会返回类似这样的提示:
General refreshes of "vlc" held until 2022-11-17T12:04:59Z
如果想给所有 snap 应用统一“暂停”48 小时,命令也很直接:
snap refresh --hold=48h
如果你受够了自动更新,想要一劳永逸地永久禁用,只需执行:
snap refresh --hold
想要解除限制?使用 --unhold 参数即可,例如重新开启 Firefox 的自动更新:
snap refresh --unhold firefox
需要注意的是,这项功能目前尚未进入 Ubuntu 正式版。如果你想提前尝鲜,需要先将 snapd 切换到 edge 通道:
snap refresh snapd --edge
测试完毕后,想返回稳定版就执行:
snap refresh snapd --stable
天下苦 snap 久矣,如今 Canonical 终于补上了这块短板。自动更新可关可开,主动权终于回到了用户手中——那么,大家还愿意给 snap 一次机会吗?
