如何解决“等待更新"firefox" snap。关闭应用程序以避免中断"错误?

最近,在打开Firefox时出现了以下警告信息:
待更新"firefox"快照 关闭应用以避免中断
这是什么意思?我应该怎么做?这是一个错误吗?

5或者,将Snap版本的Firefox替换为apt版本,这样你就可以控制Firefox何时更新(而且它不会在你进行重要工作时中断)。 - Archisman Panigrahi
软件精品店中提供了几款浏览器。并非所有浏览器都由snap管理。对于很多人来说,使用Chrome或Brave等浏览器可能是一个解决方案。 - Brent Bradburn
1同样的问题也困扰着我。相关链接:https://www.reddit.com/r/Ubuntu/comments/v3ixag/pending_update_of_chromium_snap_close_the_app_to/ | https://forum.snapcraft.io/t/refresh-app-awareness-call-for-testing/29123/8 - Ciro Santilli OurBigBook.com
35只是一条评论:为什么Firefox / Chromium不能给我们一些提示呢?而不是每天发出一句完全模棱两可的声明,直到我们不得不外出寻找答案。缺乏智能文档真是浪费时间 - 对每个人来说都是如此。 - user1609901
422.04版本中引入的快照通知"正在更新“XYZ快照,请关闭应用以避免中断”",是对旧有行为的巨大改进...在旧版本中,应用程序会在更新时突然终止,看起来像是崩溃。希望改善体验的人应该积极参与,贡献代码和做出其他有意义的贡献。在这里抱怨毫无意义。 - user535733
3我只是想评论一下现在的现状比以前好多了。以前,apt会升级firefox(因为它被认为是一个安全更新),firefox会显示一个提示栏,说必须重新启动,而且在重新启动firefox之前无法打开新标签页。现在,有一个通知让我以为一旦退出firefox就会发生更新,结果并不是这样。对我来说没关系,个人而言,我宁愿让它在希望更新时自行更新,而不是强制更新。 - hwertz
32这个用户体验太糟糕了。因为如果你关闭火狐浏览器,什么都不会发生。应该显示信息:"关闭应用并自行刷新,否则我会再次通知你。" - mathieu
我编写了一个脚本来检测这个问题,并在应用关闭时自动执行snap-update以解决此问题。https://gitlab.com/rahvee/snap-update 不幸的是,由于某种原因,stackexchange有一个愚蠢的登录系统,我用一个新账号登录了,但由于我的新账号声望还不够,所以无法发布回答。 - Edward Ned Harvey
2真是烦死了。我只是想公开表示,这对我来说是最后一根稻草,也是让我彻底放弃Ubuntu的原因。 - Renato Massaro
@hwertz 不,你错了。以前,当通过apt安装Firefox时,你可以决定何时以及是否让apt更新Firefox。只有在你配置它这样做时(是的,这是默认设置,但你可以更改它),它才会自动更新(就像你描述的那样)。而使用snap,没有配置选项来决定何时以及是否安装更新,它们总是自动进行。所以情况变得更糟糕了,而不是更好。那个“待更新”消息只是对此问题的一个不完善的解决办法。 - raj
没错。我已经设置了apt,不下载常规更新,但保持自动安装安全更新;而且Firefox始终被视为安全更新。我不知道为什么我对snap的做法如此乐观,它总是弹出那个消息,然后当你关闭Firefox时发现snap已经清除了更新,必须重新下载。无法控制snap的更新计划真的不好,我越来越想找一个Firefox的ppa或其他方法,就像在20.04中一样,可以移除snap。 - hwertz
9个回答

如果您收到了有关待处理的Firefox更新的通知,它将显示为顶部面板中时钟旁边的一个小铃铛图标。点击铃铛将显示一个如下截图所示的Firefox待处理更新通知。

enter image description here

一旦您看到“firefox”快照的“待更新”通知(这意味着您有13天时间自行升级Firefox,否则Firefox快照包将进行无人值守升级),请关闭Firefox,并在更新Firefox快照包完成后重新打开它。如果尚未开始对Firefox快照包的待更新,可以通过运行“sudo snap refresh”来启动更新。如果在Firefox完成更新后不关闭Firefox,则无法打开任何新标签,直到您关闭并重新打开Firefox。

5我已经完成了这个步骤: 关闭Firefox。 在终端中输入命令:sudo snap refresh。现在一切都正常了。 - Emilio
72Snap 再次想要一些功能,却没有实现适当的 UI 支持。我们想要 Android 风格的权限,但我们不会有 Android 风格的权限提示弹窗,我们会让你在设置中找出问题所在。我们想要强制你关闭应用程序才能进行更新,但我们不会检测到应用程序关闭并自动可见地更新,你得自己去终端操作。 - Jack M
4没错,Google在用户界面方面通常做得非常好。Ubuntu的开发人员可以从Google那里学到很多东西。 - karel
1我也遇到了这个问题,尽管sudo snap refresh似乎可以解决它,但我想知道预期的行为是什么以及为什么它不起作用。我通常会保持更新,并且重新启动Firefox肯定无法解决此问题。 - Evert
25要搞清楚这个问题,sudo snap refresh 在运行 firefox 时显示没有需要更新的 snaps,但在运行 killall firefox 后再运行它就会更新。 - Rqomey
1“X天剩余”警告的意思是什么?过了那么多天后,它会停止通知吗?还是会强制执行某些操作? - user272901
1@user272901 当你看到“剩余X天”警告时(意味着你还有X天时间自行升级Firefox,否则Firefox快照包将会自动升级),立即关闭Firefox,打开终端,运行sudo snap refresh,然后就完成了!Firefox快照包现在已经升级到最新版本。 - karel
31我认为这并不是问题的真正答案,只是一种权宜之计。应用程序应该在不中断用户工作流程的情况下无缝更新。你知道是否存在错误吗? - Ľubomír Mlích
3如果要将此问题报告给Launchpad作为错误,应该注意到“剩余X天”警告通知并不仅限于Firefox的snap软件包。这个通知也可能出现在其他snap软件包的待处理更新中。换句话说,snap软件包的更新应该在全球范围内无缝应用。 - karel
5有没有任何原因,为什么更新不是在后台执行/预先分阶段?这个消息让我以为新版本已经安装完毕,一旦关闭并重新启动Firefox,我将运行新版本。难道这不正是Snap应该允许的吗(在运行时保留旧版本并安装新版本)? - Jan Schejbal
@JanSchejbal 我见过这两种情况。为了确保Firefox已更新到最新版本,你可以运行sudo snap refresh firefox - karel
@JackM 真实到让人心痛的地步 - Yonn Trimoreau
17为什么要强制更新呢?这不是Windows。他们想把微软的更新理念强加到这里,强制更新。我不喜欢重新打开我的程序和重新创建我的环境。太愚蠢了。 - chx101
这主要是一个安全问题。黑客们不断提升自己的技术,网络浏览器需要经常更新以防止零日漏洞被利用。 - karel
1谢谢朋友,这就是正确的答案。我收到了关于VSCode的通知。就个人而言,我讨厌snap软件包,它们启动太慢了。但之前的商店软件确实非常快。在通知中他们必须提到这一点(如何操作)。新来的Ubuntu用户会因此遭受困扰。 - Sudhakar Krishnan
我知道如何解决启动缓慢的快照问题。我的工作站有32GB的内存,当我点击Dock中的Firefox图标时,Ubuntu 22.04上的Firefox快照立即启动。除了Typora之外,所有的快照都以类似的速度启动,但是Typora让我等待30秒才能在“激活Typora输入许可证代码以支持我们的开发”窗口中输入“暂不激活”。 - karel
嘿,我的朋友 @karel,这意味着Ubuntu 22.04需要强大的系统。 - Sudhakar Krishnan
4糟糕的用户体验。我很欣赏他们努力改进Snap Firefox,但这种更新不应该如此频繁地提示用户,整整13天。如果我不想手动更新,那就自动更新,不要打扰我。 - hunzter
什么是“无人值守升级”?这是指强制更新,包括强制关闭Firefox吗?这些操作可以通过命令行触发吗?我找不到关于“无人值守升级”的Snap文档。 - Tim Richardson
@TimRichardson 这是一个未经人工干预的快照升级的示例:我在面板中看到了这个通知:“正在等待更新“Snap Store”快照。关闭应用以避免中断(剩余13天)”,所以我打开终端并运行了“sudo snap refresh”,但没有进行任何升级,因为Snap Store已经通过未经人工干预的升级在后台进行了升级。 - karel
@karel 这听起来像是一次正常的快照期升级尝试,因为在一天中四次后台升级作业之一运行时,应用恰好没有在使用。如果你一直保持着快照商店开启状态,它会自动更新吗?因为 Firefox 并不会这样做。“无人值守升级”更像是一种强制升级,即使应用程序处于打开状态也会发生……否则,通知倒计时结束后什么都不会发生的意义是什么? - Tim Richardson
@TimRichardson 有时候,即使应用程序正在运行,也会发生未经处理的快照升级,此时您会收到通知要求关闭应用程序并重新打开它,然后再进行其他操作。如果您尝试执行新的操作,应用程序将不会响应。关于这个问题,还有更多相关的信息,请参考:Snap Store 的待处理更新 - karel
2同意这是一个糟糕的用户体验。我从2006年开始就一直使用Ubuntu和Firefox,并且总是在提示更新软件时非常认真地进行更新。两天前,我从20.04升级到了22.04(整个过程花费了六个小时,但非常顺利),但自那以后我已经遇到了2次Firefox的“崩溃”。只有在上网搜索之后,我才了解到这是从apt转换为snap的结果。虽然我按照“关闭Firefox / sudo snap refresh / 重新打开Firefox”的顺序操作,但我只恢复了其中一个窗口,而且还必须重新启动所有的扩展程序。 - James E Keenan
Snap也可以只是坏掉了。我收到的snap报告显示,我正在接收通知的软件包(在我的情况下是Linux上的MS Teams)已经是最新版本,因此snap refresh没有任何结果。 - rbaleksandar
1@rbaleksandar 这个snap可能是损坏了,或者通知来自Snap Store并且已经过时了,但它还没有从Snap Store中移除。 - karel

以上只有在你真正关闭火狐浏览器的情况下才有效,否则快照将不会刷新,并且运行快照更新也不会告诉你它已经推迟了更新。
对我有效的公式是:
killall firefox;
sudo snap refresh;

但是用户体验很糟糕。使用apt更加顺畅,而且在旧机器上启动Firefox的速度也慢得多。

2"killall" 元素解决了我的问题。 - havlock
与 Telegram 也一样,这就是我遇到的问题。在刷新之前确保它确实关闭了,而不仅仅是最小化。 - dan-gph
即使重新启动也无法让这个消息消失。正如phm所说:用户体验糟糕透了。 - Gerard Tromp

如何在设置界面上禁用“Snap”通知

这并不理想,因为您将错过最新的安全更新。但是如果这个东西每隔一天就让我烦恼一次,我再也无法忍受了。

  • 打开设置(按下“Windows键”并搜索“设置”)
  • 通知
  • Snapd用户会话代理
  • 向左滑动通知

在Ubuntu 22.04上进行了测试。学习自:https://forum.snapcraft.io/t/how-to-disable-snapd-update-notifications-permanently/31117/2

我并不是每晚都让我的笔记本电脑处于挂起状态,我每天都会关机,关闭浏览器,即使如此,更新也不会自动进行。那个系统实在是太不友好了。开发人员需要实现一个自动下载安全更新并在重新启动程序时生效的系统。只有在过期24小时后才应该显示通知。

参考文献:

enter image description here


4我同意,这真的很烦人。为什么他们不加一个选项来自动下载更新,并在下次应用程序重启时应用更新呢?就像 Expo 更新一样 :) - Obay Abd-Algader

这条消息说...
关闭应用程序以避免中断。
如果它告诉你关闭应用程序,并将其关闭一天左右(保持计算机运行),以便允许后台进行待处理的更新,那将更有帮助。假设这个过程本身不会造成“中断”。
更快的解决方案是,假设您愿意忍受“snap”的花招,可以运行“snap refresh --list”来查找任何待处理的更新,然后在运行“sudo snap refresh”之前关闭相关的应用程序,然后重复此步骤以确保成功。
以下是一个会话日志,进一步证明您不能简单接受“snap”消息的表面价值。希望这里有足够的提示,使“snap”更新更易管理。
$ sudo snap refresh
All snaps up to date.

$ snap refresh --list
Name      Version        Rev   Size   Publisher   Notes
chromium  103.0.5060.53  2020  139MB  canonical✓  -

$ snap refresh --time
timer: 00:00~24:00/4
last: today at 14:55 MDT
next: today at 19:03 MDT

1从好的一面来看(假设您有足够的专业知识来成功处理这个问题),这些弹窗使得当您的浏览器需要修补时更加明显。 - Brent Bradburn
2我收到了关于另一个应用程序的类似通知。然后我执行了命令 sudo snap refresh,结果显示 所有的快照都是最新的。只有在关闭了有问题的应用程序之后,再次尝试刷新命令,才成功更新了该应用程序。非常奇怪。 - Teemu Leisti
3警告信息显然不足,因为它似乎暗示只需关闭应用即可解决问题。SNAP守护程序明确依赖于Firefox被关闭。为什么Snap守护程序在Firefox关闭时不要求发送通知并自动开始刷新?我还没有尝试重新启动。有人知道重新启动是否包括自动的Snap刷新吗?不过APT成功更新了Firefox而无需用户进行如此多的干预。 - James Cobban
开机时,Snap刷新可以提前安排多早? - Tim Richardson
@JamesCobban 是的,我尝试过重新启动了,但是(Ubuntu 22.04)它不会自动进行快照刷新。 - Edward Ned Harvey
[Ubuntu 22.04]我一直忽略这个通知。突然(经过几天的警告),我看到一个通知,类似于“snap现在正在更新”。该应用程序从未停止运行 - 新启动的实例使用更新版本。事实证明,唯一的“中断”是通知本身。或许,最终我想关闭旧版本以便完全修补。 - Brent Bradburn

Firefox deb packages 可以从 mozillateam PPA 获取。
安装说明:
sudo add-apt-repository ppa:mozillateam/ppa
# raise firefox PPA priority
echo -e 'Package: firefox*\nPin: release o=LP-PPA-mozillateam\nPin-Priority: 501' | sudo tee -a /etc/apt/preferences.d/mozillateamppa
sudo apt remove firefox
sudo apt install firefox

备注

PPA仓库的Pin-Priority较高,但两天后,snap软件包再次被安装。

我已经完成了以下操作:

apt list --all-versions firefox
sudo apt install firefox=105.0+build2-0ubuntu0.22.04.1~mt1
sudo apt-mark hold firefox

更新 Firefox

sudo apt upgrade firefox

更新或更新消息系统似乎存在一个错误(可能与FireFox有关)。
我一直在系统消息通知区域看到警告消息。

firefox update message

然而,目前并没有可用的Firefox实际更新。
我正在运行从Snap获取的当前版本。

firefox version

如果我在Snap商店中查看,实际上没有任何更新显示出来。

snap store no updates

然而,当我在Snap Store中查看版本时,它显示了[安装]按钮(好像它还没有安装)。
不过,你可以看到这两个版本(107.0.1)是相同的。

firefox 107.0.1

每天都会弹出这个消息,而且总是显示还剩下13天。

1越来越好了,真是越来越好。/讽刺 - pierrely
嘿,我在22.04上使用Firefox也遇到了完全相同的问题,你找到解决办法了吗? - Cool124
@Cool124 看起来是一个错误,因为我看到最新版本的FireFox已经发布了,并且它再次显示了这个消息——尽管我已经安装了最新版本。目前我还没有找到任何解决方案。 - raddevus
@raddevus 哎呀,你不是唯一一个有这个 Bug 的人。嘿,你应该把它报告给 Canonical,作为一个 Bug。你可以向 Ubuntu 报告 Bug:https://help.ubuntu.com/stable/ubuntu-help/report-ubuntu-bug.html.en - Cool124

这是一个全GUI、应用程序特定的解决方案:
1. 关闭需要更新的应用程序 2. 打开Ubuntu软件应用程序 3. 点击“已安装”(只列出已经在您的计算机上的软件) 4. 点击要更新的应用程序 5. 点击“更新”

2某些应用程序在应用程序窗口关闭时仍保持运行状态(snap-store是一个例子)。用户必须主动退出这些应用程序。 - user535733

如果在建议的killall offending_process_name之后通知仍然弹出,请尝试运行:
sudo snap refresh [offending_process_name]

替换[offending_process_name]为您要更新的名称。如果您不知道名称,可以使用sudo snap refresh --list来获取它。
为什么这样做?因为那个也会失败,但它会告诉您为什么对于该特定软件包而言会失败。它将生成类似于以下内容的输出:
Cannot update [offending_process] because it has associated apps running.

而且最重要的是,它会在下一行告诉你相关进程的PIDs。一旦你知道了这些PIDs,你只需运行以下命令:
sudo kill 44332
sudo kill 55434

那些数字是一些随机的PID。请用真实的替换。
然后重试:
sudo snap refresh [offending_app]

或者使用sudo snap refresh,这次应该能正常工作。
现实生活中的例子:Visual Studio Code似乎会生成像Android的ADB、omnisharp等进程。在某些情况下,它们在退出时不会关闭。这导致了一种奇特的情况。你运行killall codecode是启动Visual Studio Code的命令名称,然后你发现该进程根本没有在运行。然后你重试sudo snap refresh,它不会更新code,并只弹出一个窗口显示"你还有XX天..."。
看起来snap会跟踪由snap启动的进程,即使它们本身不是snap(对此进行评论)。你传递给kill命令的PIDs可能不是snap。如果是这种情况,那么从内置终端启动的东西也可能阻止更新,即使code不在内存中。
另外,如果由于某种原因kill无法结束这些进程,你必须强制使用SIGKILL信号,默认是SIGTERM,并且不能杀死有bug的进程。参见man kill

只需关闭Firefox,然后运行以下命令:

sudo snap refresh
sudo snap refresh firefox

1如果你“只是关闭Firefox”,你仍然需要明确告诉SNAP刷新。由于某种原因,当Firefox关闭时,这个操作不会自动触发。我尝试过了。最后,当你重新启动Firefox时,你会失去当前的工作环境。可能花费了几个小时才能打开特定的窗口集合。相反,这条消息没有警告你需要终止Firefox任务,例如通过重新启动来实现。 - James Cobban
"snap refresh --list" 命令会列出所有需要更新的 Snaps。 - Muhammad Taha
无论我多么频繁地刷新、升级和更新,这个消息总是不断出现。唯一的解决办法就是拥有某种自动更新机制。 - Paul A.