答案1
有几件事发生了。
第一的, 让我们来谈谈让通知消失的最简单方法:
退出应用程序 — 在本例中为 snap-store(又名 Ubuntu 软件)。由于 snap-store 在登录时自动启动,您可能不记得您已打开它...但您确实打开了它。
运行
sudo snap refresh
。让命令完成。- 如果仍然弹出提示应用程序需要刷新,而不是刷新,则运行
sudo snap refresh <application-name>
。
该命令的输出将返回导致阻塞的 PID。
使用kill <pid>
删除阻塞。再次
运行sudo snap refresh
。这次应该可以正常工作。
- 如果仍然弹出提示应用程序需要刷新,而不是刷新,则运行
现在可以安全地重新启动您的应用程序。
- 如果您之前没有使用该应用程序,或者您不知道如何启动该应用程序,那么您可以放心地忽略此步骤。
第二, 让我们来谈谈为何发生:
Snapd 会检测何时有新版本可用。如果应用程序当前正在运行,则 snapd 将抑制更新该应用程序最多 14 天。
对于大多数应用程序来说,这都很好用。你退出应用程序,几个小时后 snapd 就会更新应用程序(它每天检查几次)。下次打开应用程序时,你甚至不会注意到它已经更新了。太棒了!
但有些应用程序长时间处于打开状态,超过了 14 天的窗口期。例如笔记本电脑上的网络浏览器,它们被关闭/暂停,而不是退出/重新启动。不幸的是,当 14 天的窗口期到期时,snapd 将终止该应用程序以实施升级。对于用户来说,这看起来像是 Firefox 意外崩溃,丢失了他们正在做的一切。
- Snapd 必须刷新 snap。这是原始设计的遗留问题;snap 最初是为手机和物联网设备设计的,它们必须可靠地工作,并且必须在没有用户输入的情况下可靠地更新。如果你知道如何禁用它,你可以禁用它……但对于大多数用户来说,这不是一个好主意——禁用更新意味着没有安全补丁和不安全的应用程序。
第三,让我们来谈谈你为什么突然立即获取这些通知。
Snap 开发人员对这两个选择(终止应用程序以强制升级 - 或完全禁用升级)不满意,因此他们创造了更好的道路:在方便时提醒用户退出应用程序。这就是您看到的通知。它是 Ubuntu 22.04 中的新功能(默认启用)。
- 如果您忽略它,那么当倒计时达到零时,snapd 将终止应用程序并自动刷新该快照。
最后,还有一个显而易见的问题:为什么这不是自动的?也许为什么 snapd 没有下载更新前唠叨你?
嗯,在 Ubuntu 23.04 及更新版本中它是自动的。但对于 22.04 用户来说,该功能太新了。
- 遇到此问题的大多数人只是以前没有使用过长寿命的 Snap 打包桌面应用程序。这是一个已知问题,许多开发人员正在努力解决它。欢迎您帮助他们。
答案2
我遇到了同样的问题,通知显示所涉及的 snap 是 snap-store。
如果你在终端运行此命令,你将获得一个进程 ID (PID):
sudo snap refresh snap-store
error: cannot refresh "snap-store": snap "snap-store" has running apps (ubuntu-software), pids:
2452
然后在终端中终止该进程并再次运行:
kill 2452
sudo snap refresh snap-store
而且它应该会成功。
目前评分最高的答案建议你正在运行或最小化它,但在我看来它只是在没有用户启动它的情况下运行,并且它没有在 Dock 中显示正在运行。在我看来,这看起来像是一个错误。如前所述,它应该在 14 天后通过终止应用程序自行修复,如果你正在使用它,这可能会带来不便。
似乎这项工作仍在进行中,因此可能需要一些耐心,但如果您没有耐心,请按照此处所述提交错误: https://help.ubuntu.com/community/ReportingBugs
答案3
对我有用:
- 在系统监视器上关闭“snap”
-
sudo apt update && sudo apt upgrade
-
sudo snap refresh
答案4
这对我有用:
sudo snap remove snap-store
sudo snap refresh
sudo snap install snap-store
我需要在 snap refresh 前输入 sudo 才能让它工作。这是唯一对我有用的选项。我还必须启动 Ubuntu 软件应用程序两次。
这也清除了 Snap Store 待处理的更新,由于 Snap Store 正在运行,因此无法更新。