我正在使用APT::Install-Recommends "false"
in/etc/apt/apt.conf
来限制我的机器只能运行我特意安装的软件。我以后仍然可以自由地接受此类建议。
这种机制似乎不适用于快照。在无人值守更新期间安装了,openprinting/cups
但brlin/hunspell-dictionaries-1-7-2004
对于任何其他已安装的 snap 来说,这两者都不是必需的,而且这两者都未经授权。
我想防止这种情况再次发生。如果有必要,甚至将无人值守安装限制为 Canonical 支持的软件,当请求的更新在这种政策下无法实现时抛出错误。我有什么选择?
答案1
Snap 保留|刷新|固定|自动移除
由于 snap 没有可以就地升级的软件包系统,所以 snap 会提取软件包的依赖项,并保存 snap 的最新 n 个版本的副本。
(如果您认为 Snap 将您的本地存储用作包含最后 n 个版本的镜像注册表,那么您是对的)
Snap 自动清洁的当前状态:
事实上,自 2022 年(约 3 年)起就有一个功能提案,所以也许可以在那里传播一些选票。
Snap CleanUp/AutoPurge 方法:
您可以获得最接近“自动修剪”的结果:
禁用自动快照,他们的手册说明了一切:
sudo snap set system snapshots.automatic.retention=no
将禁用它自动快照保留时间通过snapshots.automatic.retention系统选项配置,默认值为31天,该值需要大于24小时
...
禁用自动快照不会影响预先存在的、自动生成的快照,而只会影响后续快照删除生成的快照。
清理快照,有一个很好的示例脚本
没有“完全相同”的 apt(-get) 方法来使用 snap 节省更多空间,但最重要的建议包括:
降低 snapd 保留的“旧版本”:
sudo snap set system refresh.retain=2
refresh.retain 值可以是 2 到 20 之间的数字。Ubuntu Core 系统上的默认值为 refresh.retain=3,经典 Ubuntu 系统(例如运行 Ubuntu 18.04 LTS(Bionic Beaver)和 Ubuntu 16.04 LTS(Xenial Xerus)的系统)上的默认值为 refresh.retain=2。
清除缓存:
sudo find /var/lib/snapd/cache/ -exec rm -v {} \; # Remove cache
“危险”的不动部分:使用以下方法锁定更新refresh --hold
前言:您可能会遇到过时的软件并导致安全问题,因此请小心并通过重新安装或解除锁定定期更新。
您最初的问题还包括:
甚至将无人值守安装限制在 Canonical 支持的软件上
目前没有找到任何方法可以做到这一点,除了“固定”(快照术语“刷新保持”)
操作方法:快速固定
- 从 2.58+ 开始,有刷新锁保持(相当于 apt pinning)
- 它可能针对一个或所有包裹发出,有或没有时间限制
snap refresh --hold
“应该”锁定所有更新- 一个具体的例子是
sudo snap refresh --hold=24h firefox
操作方法:更新 snapd“固定”软件
- 要更新的变体 A(Firefox 示例),可以是
sudo snap remove --purge firefox
,sudo snap install
,sudo snap refresh --hold
, - 变体 B 更新
sudo snap refresh --unhold firefox
,sudo snap refresh firefox
,sudo snap refresh --hold