如何在 Ubuntu 中禁用单个快照的自动更新?

mah*_*nya 19 snap

在系统范围内安装 Intellij idea 的推荐方法是使用 snap。当我这样做时,snap 会更新 IDE 安装,这对我来说是一个大问题,因为更新开发环境会给我带来问题,作为开发人员,我希望严格控制我的开发环境。

如果我禁用 snap,那么我什至无法启动 IDE。谷歌搜索只返回毫无意义的长长的火焰战争或完全暂停/禁用快照。

有什么方法可以简单地告诉 snap 在保持所有其他软件更新的同时不要更新某个软件?我正在使用 Ubuntu 18.04

Rin*_*ind 9

你不能。你唯一能做的就是延迟更新。

从手册:

自动刷新

按照设计,从商店安装的非开发模式快照会定期自动更新。默认情况下,snapd 守护程序每天检查更新 4 次。

控制刷新频率

有时用户希望在已知时间刷新快照,而不是默认值。这可以通过 snap set system refresh.timer 命令来实现。用户可以指定他们希望发生刷新的日期或时间范围。以下示例将 snapd 守护程序设置为仅在凌晨 4 点到早上 7 点之间以及晚上 7 点到晚上 10 点 10 分之间刷新快照。

snap set system refresh.timer=4:00-7:00,19:00-22:10
Run Code Online (Sandbox Code Playgroud)

从理论上讲,您可以每天更改刷新频率,不断将更新时刻移到未来,但这不起作用。快照将在某个时候更新(并且忽略您的刷新频率)。

请参阅此讨论和 niemeyer 的主题。

在来自 mwinter (2017) 的同一链接帖子 #9 中,会建议两件事:

我(个人)可以做到这一点。但是我更不喜欢在路由器上做任何[额外的]过滤,因为这可能会在未来引起问题......它还会阻止其他快照和潜在更多(不确定所有将在同一位置)另一个(在我看来更简单)解决方案是下载 snap 并在本地安装 - 而不是从商店。

  1. 使用防火墙规则阻止。这将杀死所有快照更新。一个都没有。
  2. 从商店中删除安装的快照并使用本地安装的快照。

  • 我接受了你的回答,因为它是我问题的明确答案,但这种设计很荒谬。我看到了你提到的讨论,似乎没有人考虑用户可能想要绝对控制更新的情况。特别是对于开发环境组件,根据公司政策等,相同的工具集使用多年是很常见的。我想我将不得不停止使用 snap for intellij idea 并留下不便以换取控制权。 (4认同)
  • 你并不孤单。一个用锤子打死苍蝇的解决方案:创建防火墙规则来阻止快照的更新。 (2认同)

Wil*_*Wil 7

有两种选择:

选项 1:--devmode

尽管所有快照--devmode都会定期更新,但安装的快照 不会更新,因为这可能会消除您表面上正在快照中进行的更改。

例如,如果您想安装Package并在您和您的团队正在进行的项目期间继续运行相同的版本,从而消除任何回归风险(如插件损坏),请使用以下命令:

snap install package
snap list package
snap refresh --devmode --channel 2019.3/stable package
Run Code Online (Sandbox Code Playgroud)

第一个将它放入您的系统。第二个列出了可用的版本。第三个将其设置为您想要的特定版本,并启用--devmode以便它不会自动刷新。

选项 2:refresh.hold

您还可以配置snap将刷新活动保持到特定日期:

sudo snap set system refresh.hold="2030-01-01T01:00:00-01:00"
Run Code Online (Sandbox Code Playgroud)

然后还有:

sudo crontab -e
Run Code Online (Sandbox Code Playgroud)

并添加以下内容:

# prevent snap updates entirely:
1 1 1 * * /usr/bin/snap set system refresh.hold="2030-01-01T01:00:00-01:00"  
Run Code Online (Sandbox Code Playgroud)

这将阻止自动快照更新直到格林威治标准时间 2030 开始

这种方法的优点是您可以使用限制。缺点是您需要手动刷新所有快照。

  • TY @lcnittl,我将修改建议将命令添加到 cron 作业中。 (4认同)
  • 不幸的是,“refresh.hold”不能以这种方式工作。最大延迟为 60 天,如 [文档](https://snapcraft.io/docs/keeping-snaps-up-to-date#heading--refresh-hold) 中所述:“刷新后,下一次刷新最多可以延迟 60 天,之后无论刷新保持值如何,都将执行刷新。” (2认同)
  • 请注意,“--devmode”会自动“禁用安全限制”,并且“--devmode”也意味着“--dangerous”。 (2认同)

Bel*_*sim 7

使用最新版本的 snap(到目前为止在边缘通道),您可以禁用 snap 更新

\n

新的保留功能允许系统管理员和最终用户根据需要停止或推迟快照更新。保留可以在有限的时间内应用于单个快照或整组已安装的快照,或者在必要时无限期地应用于 \xe2\x80\x93。

\n

例如,要暂停 VLC 的快照更新 3 天,您可以运行以下命令:

\n
snap refresh --hold=72h vlc\n
Run Code Online (Sandbox Code Playgroud)\n

“vlc”的一般刷新持续到 2022-11-17T12:04:59Z

\n

同样,要暂停所有快照的快照刷新 48 小时:

\n
snap refresh --hold=48h\n
Run Code Online (Sandbox Code Playgroud)\n

自动刷新所有快照直至 2022-11-16T12:27:25Z

\n

要完全停止自动刷新并且不使用计时器:

\n
snap refresh --hold\n
Run Code Online (Sandbox Code Playgroud)\n

自动刷新无限期保留的所有快照。

\n

来源:https://snapcraft.io/blog/hold-your-horses-i-mean-snaps-new-feature-lets-you-stop-snap-updates-for-as-long-as-you-need

\n

  • 哇,在阅读了 300 页来自开发者的居高临下的帖子后,他们告诉我这是永远不可能完成的……它完成了。也许我最终能够坚持使用 Ubuntu。 (2认同)