Valve 对于 Ubuntu 的 Snap 版本的 Steam 并不满意：原因何在
你可能会发现，Snap 版本的 Steam 并不如你期待的那样好，你怎么看？近年来，由于 Wine、Proton 等工具的兴起，在 Linux 上 玩游戏 变得非常容易。甚至，越来越多的游戏开发商为 Linux 提供原生支持，通过为运行 SteamOS 的 Valve 手持设备 Steam Deck 发布游戏。然而，最近的报道显示，一名 Valve 开发者注意到，Steam 客户端的非官方 Snap 版表现并不如预期。事情是这样的： 一位负责 Valve 的 Steam 客户端开发的开发者，Timothée Besset，在 Mastodon 上对 Linux 的 Steam Snap 版本表达了担忧。需要知道的是，该 Snap 版本 是 Canonical 在 2022 年发布的非官方版本，作为他们全力打造 Ubuntu 游戏体验的一部分。该开发者指出，他们发现由 Snap 版本的 Steam 客户端引发的问题报告数量大幅度增加。然而，问题在于，许多用户可能并未意识到他们正在运行的是 Steam 客户端的 Snap 版本，反倒是首先向 Valve 报告问题，而非与 Canonical 取得联系。原因何在呢？主要是因为 Ubuntu（及其官方发行版）在推广 Snap 包的使用。同时，当用户从软件中心安装 Steam 时，系统会默认安装 Snap 应用，许多用户并未觉察。然而，用户并未得到任何关于这个包并非由 Valve 官方维护的信息。虽然有一个标记表明 Canonical 是它的维护者，验证了包的真实性，但是，它并不是 Valve 官方推荐的东西。因此，若在 Ubuntu 上安装 Steam，用户可能会被误导（或是产生困惑）。自然地，用户会希望软件开箱即用。如果做不到，就会有人声称 “Steam 在 Ubuntu 或 Linux 上无法工作”，这会对 Valve 的声誉产生影响。如何应对： 根据 Timothée 的建议，对于 Debian 及其它基于 Debian 的发行版（当然，包括 Ubuntu），你最佳的选择是从他们的 GitHub 仓库 下载并安装官方的 .deb 包。作为替代，你也可以选择 非官方的 Flatpak。有人建议让 Steam 检测 Snap 并禁止其运行，Timothée 进一步补充说：运行报告会检测到 snap/flatpak（或即将检测到）。但考虑到用户的自由等等因素，我们通常不会因此停止服务。如果真的出现严重问题，我们可能会开始发出警告。我觉得发出警告听起来不错。但当然，既然 Valve 的关切已经被公之于众，Canonical 应对这个问题采取行动，与 Valve 合作改善现状。? 你觉得呢？ Canonical 会采取行动，解决他们所开发的基于 Snap 的 Steam 客户端存在的问题吗？参考：GamingOnLinux（题图：DA/13bf0574-9608-4d18-97ef-c136cbd81ef4）via: https://news.itsfoss.com/valve-steam-snap-ubuntu/作者：Sourav Rudra 选题：lujun9972 译者：ChatGPT 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
虽然你可能听到不同的看法，但实际上，它并未像一些批评者所想象的那样完全专有。对 Ubuntu 的 Snap 打包格式最常见的误解之一是它是专有的 —— 但是深入研究其文档后，会发现这个说法并不对。在上周末拉脱维亚的里加举行的 Ubuntu 峰会上，笔者有幸采访到 Ubuntu 的 开发者大使 developer advocate ，Igor Ljubuncic。期间，他们详细探讨了关于 Snap 的各种误区，包括它被视为完全闭源的、受 Canonical 控制、必须使用 Canonical 的 Snap 商店等众多谬论。如果说有什么比糟糕的软件更加厌恶的，那一定是谎言。正如我们在 点评 Fedora 39 时所注意到的，即使在 Linux 诞生之前，各种软件的拥趸们就经常爆发各种 圣战。但我们至少希望能坚守事实的公道。毫无根据的恶意指责是没有必要的：生活本身已经足够糟糕。笔者的立场很明确，我们并不特别偏爱任何 Linux 发行版或其打包工具。像许多资深电脑技术人员一样，在长期和各种软件打交道后，笔者已经对所有的软件厌烦至极。一句广为接受的说法就是：没有一个软件不让人头疼。Linux 就是一个软件，因而它难免让人头疼。承此，所有的 Linux 发行版也都不尽如人意。包管理器也是一个软件，同样也不尽人意。但幸运的是，至少大多数 Linux 发行版都有一个包管理器。这比没有软件包管理器要好，或者更糟糕的是，有不止一个以上的包管理器，这一点 XKCD 927 漫画体现的淋漓尽致。我们并不特别青睐 Snap，也不特别反对 Flatpak。笔者个人更偏好 AppImage 格式，它不需要其他额外的框架。但虽然有个 AppImageHub，但该格式却并没有提供软件更新的工具，这个问题就留给了应用本身来解决。鉴于所有的软件都不完美，那唯一重要的区别就在于其问题严重的程度。一段时间以后，你最关注的就是它是否可运行，能否满足你的需要，以及它的可靠性。我在早年的职业生涯中花了很多时间在技术支持上，修复其他人的软件。因此，我学到了一个经验，那就是降低软件让人厌烦程度的一个重要因素就是它工作的方式是否容易理解。Btrfs 是复杂的，而修复它则更是如此。Git 属于本质复杂，其 名称 就体现出这一点。（没错，“git” 是一个名词，而非缩写或代号，有实际的意思 —— “饭桶”。）OStree 可以说是针对二进制文件的 Git，这使得它比普通 Git 至少复杂两倍。而 Flatpak 则是 OStree 的封装。这意味着增加了两层额外的复杂度：首先，对复杂事物的封装只能隐藏其复杂性，而不能消除其复杂性。其次，你不能使用 Flatpak 构建一个操作系统，因此你还需要 OStree。因此，我们将来逐一揭穿关于 Snap 格式和工具的一些误解。这不是一篇入门指南，而是对那些不那么显而易见，并且对 Snap 有所误解的人的一份快速概览。无需商店进行分发Snap 包其实就是一个 Squashfs，类似于大多数 Linux 安装介质上的系统镜像。Snap 包以两个文件传递：其中一个是命名为 <name>_<revision>.snap，该文件包含了软件本身；另一个则是一个伴随的 声明文件，它为 Snap 提供了数字签名。然后，Canonical 还进一步 详细阐明 了版本修订的工作原则。使用 snap download 的指令（而非 snap install）可以容易获取这些基本文件：# snap download firefox Fetching snap "firefox" Fetching assertions for "firefox" Install the snap with: snap ack firefox_3252.assert snap install firefox_3252.snap 然后，这些文件便可以被复制到另一台设备上进行安装，这种操作不需要访问 Snap 商店，仅需使用输出中的指令即可。如 Igor 所说：“这样，从 Snap 商店中，你可以选择你想要的 Snap 包（如 Firefox），将其放入你的内部仓库中，或是 FTP，或是 NFS 上。接着你可以使用它作为在内部安装 Snap 的来源，而这不需要去访问商店。此外，你还可以将这个操作与你所使用的任何调度或部署机制结合起来，就如配置管理那样。”安装无需声明文件的 Snap 包通常来说，snap ack 命令会首先读取并验证签名，但是你可以选择跳过这个步骤。snap install "downloaded snap" --dangerous 上述指令会安装该 Snap 包，并不会验证其签名。请注意，这样做虽然操作简单，但也有一个重要的限制：使用 --dangerous 选项安装的 Snap 包不会自动从商店中更新。所以，实际上，你可以在你的网络内部分发 Snap 包，避免它们试图连接到 Snap 商店，并自主管理更新。管控 snapd 内置的更新机制另一方面，你可以在不忽略验证机制的前提下，管理和控制操作系统何时以及如何更新 Snap 包。Igor 则曾撰写过关于如何使 Snap 更新暂停 的文章。你可以设置暂停 Snap 的更新一段时间，或永久暂停，甚至只选择暂停特定的 Snap 包，同时也能简单取消此设置。例如：snap refresh --hold Auto-refresh of all snaps held indefinitely. 另外，你也可以通过以下方式设置防火墙拦截 Snap API：sudo iptables -A OUTPUT -d api.snapcraft.io -j DROP 在无 snapd 环境下运行 snaps.snap 文件实际上就是一个压缩的文件系统，它包含着程序文件（以及各种库等），这些都被存放在一个传统的目录结构中，而该目录结构对于打包在 Snap 应用程序内的应用来说，就是它的根目录。Snapd 负责为此设置挂载名空间，并通过 Apparmor 和 seccomp 实现安全隔离。你可以将其内容解压并直接运行：unsquashfs firefox_3252.snap Parallel unsquashfs: Using 20 processors 565 inodes (5428 blocks) to write [=====================/] 5428/5428 100% created 399 files created 149 directories created 166 symlinks created 0 devices created 0 fifos created 0 sockets ll squashfs-root/ total 80 drwxr-xr-x 7 igor igor 4096 lis 10 02:33 ./ drwxr-xr-x 10 igor igor 4096 lis 19 15:32 ../ drwxr-xr-x 5 igor igor 4096 lis 10 02:33 data-dir/ -rw-r--r-- 1 igor igor 32441 lis 10 02:33 default256.png -rw-r--r-- 1 igor igor 9146 lis 10 02:33 firefox.desktop -rwxr-xr-x 1 igor igor 2680 lis 10 02:33 firefox.launcher* drwxr-xr-x 2 igor igor 4096 lis 10 02:33 gnome-platform/ drwxr-xr-x 4 igor igor 4096 lis 10 02:33 meta/ -rwxr-xr-x 1 igor igor 3716 lis 10 02:33 patch-default-profile.py* drwxr-xr-x 4 igor igor 4096 lis 10 02:33 snap/ drwxr-xr-x 4 igor igor 4096 sij 19 2022 usr/ 如果你查看 Snap 内 Firefox 二进制文件的动态依赖，你会注意到它希望从根文件系统中获取文件：ldd usr/lib/firefox/firefox-bin linux-vdso.so.1 (0x00007fff33cc5000) libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f6cf2c00000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f6cf2e40000) libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f6cf2be0000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f6cf2800000) /lib64/ld-linux-x86-64.so.2 (0x00007f6cf300e000) 在 Snap 内部，这个“根”就是你的基础系统（比如 core18 或 core20 等）。但是一旦你解压了这个 Snap，没有 snapd 在安装和运行 Snap 时提供的安全隔离，Firefox 将会尝试直接访问你的根目录的库。这可能会导致执行时的不一致性。举例来说，你的 Snap 内可能包含的是 GNOME 3.38 版的库，但是你的主机上运行的可能是 GNOME 3.32。如果你尝试解压并运行这个应用，它可能会试图从主机中加载库，这可能引起不一致 —— 更甚者，可能会让程序崩溃。为了避免这种情况发生，你需要做的唯一事情就是设置 LD_LIBRARY_PATH 环境变量，以让程序知道其库在何处，确保它首选这些库，而不是使用可能导致其运行失败的操作系统中的库副本。LD_LIBRARY_PATH: ${SNAP_LIBRARY_PATH}${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}:$SNAP/usr/lib:$SNAP/usr/lib/x86_64-linux-gnu 通常，你会希望 LD_LIBRARY_PATH 开始于 /snap/<snap name>/，然后是 /lib、/usr/lib 和其他常用路径。至于其他内容，firefox.launcher 文件负责准备运行环境，剩余的，比如 firefox.desktop，都用于桌面集成：如图标、全名、文件关联等。这些内容虽然使应用看起来效果更好，但它们并非严格的必需品。其实，你甚至不需要解压 Snap 的内容，你可以直接将 Snap 文件本身作为一个 回环设备 挂载 —— 你甚至可以设置为只读 —— 但没有挂载命名空间隔离。并且，如果没有设置环境让 Snap 内部的应用在寻找它的库时首先从 Snap 内部开始，你仍然需要正确地设置库路径。代理和缓存 Snap 包正如 Igor 所说，如果客户并不打算自行运营一家具备完整品牌属性的 Snap 商店，他们可以选择手动设置一个 Snap 代理。对此，Canonical 也提供了相应的 文档，并描述了所需的 网络访问 权限。同时，你也可以 配置 一个缓存 Snap 代理 —— 这项任务稍微简单一些，对于希望降低下载带宽的家庭网络来说，可能是个不错的选择。搭建自己的 Snap 商店就如我们之前所述，你完全可以忽略所有来自 Canonical 的基础设施，直接运行自己的 Snap 商店。去年，我们写过一篇关于 Ubuntu Unity 维护者 Rudra Saraswat 的文章，他就 做到了这一点，这只是他的众多项目中之一。据悉，好几个在生产环境中使用 Ubuntu Core 的组织都采取了此种做法，而所有所需的工具都存放在 Ubuntu 仓库中。Canonical 在这方面发布了大量的文档，包括怎样构建你的 第一个 Snap 包，以及如何用 不同的编程语言 构建。今年的峰会上有多场关于如何构建 Snap 的演讲 － 包括 在平板电脑上构建 Snap 包，以及如何 自动化构建更新的 Snap 包，虽然这对笔者来说有点过于复杂。学习一些新的术语是有必要的，同时也有 官方文档 提供帮助。这段解释我们特别喜欢： 插槽 slots 是指提供方（即 Snap 提供的资源） 插口 plugs 是指消费者（即使用 Snap 提供的资源的用户） 接口 interfaces 是交互的地方（负责将插口和插槽连接起来）从我们与 Canonical 代表的对话中，他们似乎对 Snap 商店被误解，以及 Snap 被视为封闭、专有系统的争论显得尤为不满。大约十五年前，有人曾声称 Canonical 的代码托管和项目管理平台 Launchpad 是专有的，所以 Canonical 在整理代码后在 2009 年 公开发布 了代码库。但如我们交谈的人所言：“没人在意。” 它是 Canonical 的内部工具，对其他人来说并没有太大的用处。他们表示，他们不希望再经历一次这样的情况。我们还注意到，红帽正在朝反方向前进，即从开源的 Bugzilla 迁移 到封闭的、基于云的 Jira —— 这并未引起太大的争议。snapd 自身的代码已经托管在 GitHub 上，作为 Canonical 的 snapcore 仓库的一部分。这个被大多数发行版使用的打包格式是一个已经存在、有文档记录的格式。用于进行隔离的工具，是已经存在并在其他发行版中使用的第三方工具，比如，Debian 和 SUSE 家族也使用了 AppArmor，这与 Arch 维基中的 描述 相符，而它的主要竞品，SELinux，则更复杂，主要在红帽及其衍生产品中使用。尽管 Canonical 自家定制的 Snap 商店 的后端仍然 闭源，但 Snap 格式、snapcore 软件、snapcraft.io 前端，以及更多组件都是开放的。我们再次强调，你完全可以自行搭建 自己的 Snap 商店。请不要受到愤怒的论坛喷子们的误导。最后再说一点...实际上，撰写这篇文章的作者曾经就职于红帽和 SUSE，但他主要还是使用 Ubuntu，从 2004 年 Ubuntu 刚刚发布起就开始一直使用。Ubuntu 不但运行顺畅，使用起来也十分便捷。然而，早在多年前他就已经从他的主要工作电脑上删除了 snapd 和相关的一切工具，取而代之的是 deb-get —— 最初这是 Ubuntu MATE 的创造者 Martin Wimpress 编写的。为了更加迅速，他还选择使用 Nala 包管理器 而不是 Apt。如果可以的话，笔者很希望可以放弃各种形式的 Unix，除了服务器，其他情况下更倾向于使用 RISC OS 或是经典的 MacOS。但是遗憾的是，这两个操作系统在网络浏览器、网络连接，还有多核支持和整体稳定性上有待改进。笔者今年参加 Ubuntu 峰会的费用是由 Canonical 承担的，这一点他愿意公开。类似的，Linux 基金会曾资助他参加 今年 在 Bilbao 的开源峰会，而红帽则资助了他在 2016 年在 Kraków 参加 Flock to Fedora 峰会。这类赞助可以让我们将广告预算分配到其他地方，但并不会对我们的报道产生影响：我们总会积极追踪那些 IT 新闻。（题图：MJ/520ba58f-9e07-4acb-af4a-f4832762311f）via: https://www.theregister.com/2023/11/10/snap_without_ubuntu_tools/作者：Liam Proven 译者：ChatGPT 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
GNU 庆祝成立 40 周年，RMS 患癌本周三，自由软件基金会发布公告，将于 10 月 1 日庆祝 “GNU 操作系统诞生 40 周年暨自由软件运动启动 40 周年”，称其为 “计算机历史上的一个转折点”。1983 年 9 月 27 日，一位名叫 理查德·斯托尔曼 Richard Stallman （RMS）的计算机科学家宣布，计划开发一种类似 Unix 的自由软件操作系统，名为 GNU，意为 “GNU's not Unix”。GNU 是唯一一个专门为用户自由而开发的操作系统。在当天召开的 GNU 黑客会议上，RMS 一改以往的浓密的头发和胡子的形象出席，并发表了演讲。他还顺便 透露，他已经患癌，并已在接受化疗（因而没有了头发）。不过，庆幸的是，他表示，病情是可以控制的，他仍能活很多年。消息来源：FSF老王点评：伟大的 GNU，伟大的 RMS，祝愿 RMS 早日康复！微软解释在云中提供 Python in Excel 的原因之前，我们 报道 过，微软发布了 Python in Excel 的公开预览版，无需任何设置就可以在同一工作簿中结合 Python 和 Excel 分析。有用户表示，表示希望能够在其他环境中运行 Python，而不是被锁定的、价格待定的 Azure 云容器。微软解释了这样做的原因：1、在本地机器上安全运行 Python 是一个难题。我们将工作簿中的所有 Python 代码都视为不可信任的，因此我们在 Azure 上的一个与管理程序隔离的容器中执行这些代码；2、我们希望确保您共享的工作簿中的 Python 代码在您的同事打开它时表现相同，而不需要他们安装和管理 Python。3、通过在 Azure 上运行，用户或其系统管理员无需在其组织中使用该功能的每台机器上维护 Python 的本地安装。消息来源：Reddit老王点评：似乎有道理，但是在本地有一个沙盒化的 Python 环境有多难？Canonical 的 Snap 商店暂停上传一些 Snap 用户报告了最近发布的几个可能是恶意的 Snap 软件包。接到这些报告后，Snap 商店团队立即下架了这些软件包。此外，该团队还对所有新的 Snap 注册提出了临时人工审核要求。这不是 Snap 商店第一次遇到恶意软件包，之前就有带有未披露的隐藏的加密挖掘功能的软件包被上传。消息来源：Snap Craft老王点评：似乎这种审核机制不够啊，原来是事后审核吗？
硬核观察 #1051 Snap 设计者开发用 Flatpak 替换 Snap 的脚本
Snap 设计者开发用 Flatpak 替换 Snap 的脚本已经离开 Canonical 公司的 Alan Pope 是 Snap 软件包格式的共同开发者。Flatpak 和 Snap 都是一种沙盒容器式的软件包格式，旨在提供一种独立于发行版的打包格式，解决包依赖问题，能在不导致依赖地狱的情况下在同一个系统上安装同一个程序的多个版本。Flatpak 是由红帽主导推出的。相比 Snap 只能使用 Canonical 私有的软件包商店，Flatpak 可以支持多个软件仓库。最新的 Ubuntu 23.04 中默认移除了 Flatpak 格式的支持。Alan Pope 开发了一个名为 unsnap 的脚本，如果一个 Snap 软件包存在对应的 Flatpak 包，那么它将会自动用 Flatpak 包替换 Snap 包。消息来源：Linux 杂志老王点评：这个脚本并不复杂，作者也坦诚并不成熟。有趣是，作为 Snap 包格式的共同作者之一，他推出这样的脚本。红帽为 RHEL 7 再增加四年的支持红帽企业 Linux 7（RHEL 7）发布于 2014 年。所有 RHEL 的大版本都遵循标准的十年生命周期，前五年是全面支持，后五年是维护支持。此后，RHEL 进入延长生命周期阶段，红帽为其提供延长生命周期支持。也就是说，从 2024 年 7 月 1 日开始，红帽将为有需要的客户提供 4 年的 RHEL 7 延长支持服务。顺便提一句，RHEL 7 的下一个版本，RHEL 8 及其下游的 CentOS 8 已经在 2021 年 结束支持，原因大家都知道，是为了给 CentOS Stream 让路。消息来源：红帽老王点评：看来当时没有及时迁移到 RHEL 8/CentOS 8 的很多人仍然坚守在 7 上。首个完全由人工智能生成的药物进入临床试验一家总部位于香港的生物技术初创公司利用人工智能创造了一种治疗特发性肺纤维化的药物。这种导致肺部结疤的慢性疾病，如果不加以治疗，可在 2 至 5 年内导致死亡。该公司称，“这是第一个进入人体临床试验的完全生成型人工智能药物，特别是与病人进行的第二阶段试验。……该药物是第一个既有人工智能发现的新目标，又有人工智能生成的新设计的药物”。该药物目前已经在中国开展为期 12 周的随机、双盲、安慰剂对照试验。消息来源：CNBC老王点评：昨天我们报道了由人工智能设计的芯片，今天看到了设计的药物。以后，我们会看到越来越多由人工智能发现、设计和制造的制品。
Ubuntu 21.10 “Impish Indri” 及之后的版本将 Firefox Snap 设为默认浏览器。如果你不喜欢 Snap，可以通过以下方式将其删除并使用库存版本。关于 Snap 是否是 APT 的更好替代品，一直存在争议。而许多用户更喜欢 Snap 系统，也有一些人非常讨厌它。Ubuntu 和 Canonical 认为它是 Linux 的最佳安装仓库和包管理工具之一。 Snap 被讨厌的主要原因是它的启动很慢。然而，这个论点是另一篇文章的内容。从 Ubuntu 中删除 Firefox Snap 版本所以，如果你还没有 听说过这件事，Ubuntu 21.10（和所有后续版本）默认提供 Firefox Snap 包。因此，当你从 Ubuntu 21.10 开始安装时，默认的左侧停靠区的快捷方式是 Firefox 的 Snap 版本。你可以使用以下各种方法对其进行验证。如果你因为 性能 和存储问题而不喜欢 Snap，可以通过以下命令将其删除。如果已经打开，那么关闭所有 Firefox 实例。打开一个终端。然后运行以下命令：sudo snap remove firefox 等待命令完成。这将从你的系统中删除它的 Snap 可执行文件，并断开 Firefox 与各种系统服务的连接。但是主目录下的 Snap 目录仍然存在。你可以使用以下命令手动删除它：cd ~/snap rm -r firefox 安装 Firefox 替代方法现在，当你删除了 Firefox，你可以通过以下方式来使用此浏览器。方法 1 – 使用 PPA（推荐）在使用此方法之前，请确保如上删除了 Firefox 的 Snap 版本。有一个 官方 Firefox PPA，由其开发团队维护。你可以将此 PPA 添加到你的软件源中，并使用它来安装最新的 Firefox。确保使用文本编辑器创建一个首选项文件，以阻止 Ubuntu 在运行 apt update 命令时获取 Firefox 的 Snap 版本：sudo gedit /etc/apt/preferences.d/firefox-no-snap 将以下行添加到上面的文件并保存：Package: firefox* Pin: release o=Ubuntu* Pin-Priority: -1 依次使用以下命令。第一个命令将其从你的系统中完全清除它：sudo apt purge firefox sudo add-apt-repository ppa:mozillateam/firefox sudo apt-get update sudo apt install firefox 安装完成后，请确保使用以下命令启用自动升级：echo 'Unattended-Upgrade::Allowed-Origins:: "LP-PPA-mozillateam:${distro_codename}";' | sudo tee /etc/apt/apt.conf.d/51unattended-upgrades-firefox 重启系统（可选）并使用 deb 版本的 Firefox。方法 2 – 使用 Firefox 的压缩可执行文件你可以从官方网站（链接如下）下载适用于 Ubuntu 和其他 Linux 的 Firefox 可执行文件压缩包。然后解压并双击运行 Firefox 可执行文件。这是最安全的方法。如果你使用此方法，你仍然可以获得更新。下载 Firefox方法 3 – 使用 Flatpak 版本的 Firefox你也可以使用 Flatpak 版本的 Firefox，这在 Ubuntu 中设置 Flatpak 后可用。然后你可以运行以下命令进行安装：flatpak install flathub org.mozilla.firefox 方法 4 – 使用与系统耦合更少的 Snap 版本 Firefox如果你认为你仍然可以继续使用 Snap 版本，但希望在系统中减少沙盒化，那么你可能需要使用以下命令和 classic 开关 重新安装 Firefox：sudo snap install firefox --classic 结束语因此，这是从 Ubuntu 21.10 开始删除 firefox Snap 版本的步骤，以及一些替代方案。我很想知道 Linux Mint 采取了什么措施，因为他们不支持 Snap。此外，这些发行版依赖于 Firefox 的 Ubuntu 上游仓库，看看它们会做什么很有趣。Debian 维护自己的仓库，但主要是 ESR 版本。via: https://www.debugpoint.com/remove-firefox-snap-ubuntu/作者：Arindam 选题：lkxed 译者：geekpi 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
这个带有脚本的快速指南有助于清理旧的 Snap 版本并释放 Ubuntu 系统中的一些磁盘空间。我正在使用的 Ubuntu 测试系统中的磁盘空间不足。因此，我通过 GNOME 的磁盘使用分析器进行调查，以找出哪个包正在消耗宝贵的 SSD 空间。除了通常的缓存和主目录，令我惊讶的是，我发现 Snap 和 Flatpak 消耗了大量的存储空间。尽管如此，我始终坚持一个规则：除非必要，否则不要使用 Snap 或 Flatpak。这主要是因为它们的安装尺寸和其他问题。我更喜欢原生 deb 和 rpm 包。多年来，我在这个测试系统中安装和移除了一定数量的 Snap 包。但卸载后还有问题。Snap 在系统中保留了一些残留文件，一般用户不知道。所以我打开了 Snap 文件夹 /var/lib/snapd/snaps，发现 Snap 保留了以前安装/卸载的软件包的旧版本。例如，在下图中，你可以看到 GNOME 3.28、3.34 和 Wine 都被删除了。但它们还在那里。发生这种情况是因为 Snap 的设计，它在正确卸载后保留已卸载软件包的版本。或者，你可以在终端中使用：snap list --all 对于保留的版本，默认值为 3。这意味着 Snap 会保留每个软件包的三个旧版本，包括活动版本。如果你对磁盘空间没有限制，这是可以的。但是对于服务器和其他情况，这很容易遇到成本问题，它会消耗你的磁盘空间。但是，你可以使用以下命令轻松修改计数。该值可以在 2 到 20 之间。sudo snap set system refresh.retain=2 清理 Snap 版本在 SuperUser 的一篇文章中，Canonical 的前工程经理 Popey 提供了一个简单的脚本，它可以清理旧版本的 Snaps 并保留最新版本。这是我们将用来清理 Snap 的脚本。#!/bin/bash #Removes old revisions of snaps #CLOSE ALL SNAPS BEFORE RUNNING THIS set -eu LANG=en_US.UTF-8 snap list --all | awk '/disabled/{print $1, $3}' | while read snapname revision; do snap remove "$snapname" --revision="$revision" done 将上面的脚本以 .sh 扩展名保存在一个目录中（例如 clean_snap.sh），赋予它可执行权限并运行。chmod +x clean_snap.sh 当我运行脚本后，它减少了很多磁盘空间。该脚本还将显示要删除的包的名称。结束语对于 Snap 的设计效率如何，人们总是争论不休。许多人说，它的设计是坏的，是臃肿的，是消耗系统资源的。这种说法的某些部分是真实的，我不会否认它。如果实施和加强得当，整个沙盒应用的概念是很好的。但我相信，与 Snap 相比，Flatpak 工作做得更好。也就是说，我希望这可以帮助你清理一些磁盘空间。尽管它只在 Ubuntu 中进行了测试，但它应该适用于所有支持 Snap 的 Linux 发行版。此外，请查看我们关于 如何清理 Ubuntu 的指南以及其他步骤。最后，如果你要清理 Flatpak 应用，请参阅 这篇指南。via: https://www.debugpoint.com/clean-up-snap/作者：Arindam 选题：lkxed 译者：geekpi 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
Snap 是由 Ubuntu 的母公司 Canonical 设计的通用包格式。有些人不喜欢 Snap，但它有一些优势。通常，某些应用仅以 Snap 格式提供。这为你提供了在 Arch Linux 中启用 Snap 的充分理由。我知道 AUR 拥有大量应用，但 Snap 应用通常直接来自开发人员。如果你希望能够在 Arch Linux 中安装 Snap 应用，你需要先启用 Snap 支持。有两种方法可以做到：使用 AUR 助手启用 Snap 支持（更简单）通过从 AUR 获取包，手动启用 Snap 支持让我们看看怎么做。方法 1、使用 AUR 助手启用 SnapSnap 支持在 Arch 用户仓库中以 snapd 包的形式提供。你可以使用 AUR 助手轻松安装它。有 许多 AUR 助手，但 yay 是我更喜欢的，因为它的语法类似于 pacman 命令。如果你还没有安装 AUR，请使用以下命令安装 Yay（需要事先安装 git）：git clone https://aur.archlinux.org/yay cd yay makepkg -si 现在 yay 已安装，你可以通过以下方式安装 snapd：yay -Sy snapd 每当你 更新 Arch Linux 系统时，yay 都会启用 snapd 的自动更新。验证 Snap 支持是否有效要测试 Snap 支持是否正常工作，请安装并运行 hello-world Snap 包。sudo snap install hello-world hello-world （或者） sudo snap run hello-world 如果它运行良好，那么你可以轻松安装其他 Snap 包。方法 2、从 AUR 手动构建 snapd 包如果你不想使用 AUR 助手，你仍然可以从 AUR 获取 snapd。让我展示详细的过程。你需要先安装一些构建工具。sudo pacman -Sy git go go-tools python-docutils 完成依赖项安装后，现在可以克隆 snapd 的 AUR 目录，如下所示：git clone https://aur.archlinux.org/snapd cd snapd 然后构建 snapd 包：makepkg -si 当它要求安装其他依赖包时输入 yes。你已安装 snapd 守护程序。但是，需要启用它以在启动时自动启动。sudo systemctl enable snapd --now sudo systemctl enable snapd.apparmor --now #start snap applications sudo ln -s /var/lib/snapd/snap /snap #optional: classic snap support 手动构建包的主要缺点是每次新更新启动时你都必须手动构建。使用 AUR 助手为我们解决了这个问题。总结我更喜欢 Arch Linux 中的 pacman 和 AUR。很少能看到不在 AUR 中但以其他格式提供的应用。尽管如此，在某些你希望直接从源获取它的情况下，使用 Snap 可能是有利的，例如 在 Arch 上安装 Spotify。希望本教程对你有所帮助。如果你有任何问题，请告诉我。via: https://itsfoss.com/install-snap-arch-linux/作者：Pranav Krishna 选题：lkxed 译者：geekpi 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
Canonical 将 Linux 游戏组件 Snap 化Canonical 的工程师正在开发 GameMode Snap。GameMode 是 Feral 的守护程序，能够在游戏启动时自动将 CPU 频率调节器设置为性能模式，并在退出游戏后将其恢复到先前的默认值。GameMode 已经支持在 Flatpak 容器化环境中运行，而现在他们正在将其过渡到 Snap。GameMode 作为一个 Debian 软件包在 Ubuntu 上已经有一段时间了，甚至是默认安装的。消息来源：Phoronix老王点评：Canonical 正在孜孜不倦的将各种重要应用切换到 Snap，但是感觉 Snap 一直没有得到人们的喜爱。尤其是中国没有 Snap 商店的镜像，使用起来更是难受。谷歌悬赏开源供应链安全漏洞谷歌推出了一项新的漏洞奖励计划，向发现其开源软件或其软件所基于的构建模块中的安全漏洞的研究人员支付报酬。它将为 Angular、GoLang 和 Fuchsia 等项目中的漏洞或这些项目代码库中包含的第三方依赖的漏洞的信息支付最高超过三万美元的奖金。消息来源：The Verge老王点评：虽然对谷歌来说，自己的软件安全很重要，但是来自开源供应链上的风险可能会导致意料之外的更大风险。亚马逊和谷歌指责微软云计算的垄断行为亚马逊和谷歌发表声明，指责微软作出的最新软件业务调整将阻碍客户转移到云计算竞争平台，影响市场公平竞争。周一，微软宣布了一系列包括软件授权政策在内的调整，新政策将会在 10 月 1 日开始生效，微软声称，新政策将有利于云计算市场的玩家更好的竞争。然而，微软宣布的软件授权政策调整中，排除了亚马逊、谷歌、阿里巴巴和微软自己的云服务。消息来源：路透社老王点评：说实话没太看明白，微软这不是连自家的云也限制了嘛。另外，现在的公有云挣扎在锁定和避免锁定之间，公有云理应是不锁定的，但是大的云服务商总想能锁定一些比较好。
修复 Ubuntu 中的 “Pending Update of Firefox snap” 错误
如果你使用的是 Ubuntu 22.04，你可能已收到过此通知。它会通知你 Firefox 更新正在等待中，并要求你关闭应用以避免中断。因此，就像一个听话的 Ubuntu 用户一样，你在保存或完成工作后关闭了 Firefox 浏览器。你认为 Firefox 已在后台更新，重启浏览器将运行较新版本。只是，并非如此。即使在你重启浏览器甚至计算机后，它仍可能显示相同的 “pending update of Firefox” 通知。令人沮丧么？我可以告诉你发生了什么。让我解释一下为什么会发生这种情况，以及你可以做些什么来“修复”它。修复 “pending update of Firefox snap” 问题早些时候，Firefox 曾经在后台更新，然后要求你重启浏览器。在你重启浏览器之前 不能 打开任何网站。在将 Firefox 浏览器切换为默认 Snap 包格式 后，Ubuntu 团队对更新流程进行了一些改动。此通知是“改进的用户体验”的一部分。现在，Firefox 不再阻止你浏览。你可以在方便时重新启动浏览器以进行更新。但是为什么即使在你重新启动浏览器或系统后它仍然显示这个通知？因为这是一条糟糕的通知消息，无法为你提供完整的信息。Firefox 更新还没有开始当你看到 “pending Firefox update” 时，你错误地认为应用已在后台更新，重启会将其升级到较新的版本。而对于现在这种情况，Ubuntu 中的 Snap 包每天会自动刷新（更新）一次或几次。为了避免在重新启动安装更新之前 Firefox 不允许你浏览任何内容而导致工作中断，Ubuntu 甚至不会在后台更新 Firefox Snap 包。相反，当 Snap 包刷新时，它会显示通知并希望你立即关闭浏览器，以便可以使用其他 Snap 包进行更新。但像你我这样的用户不能这样做，对吧？看到通知，立即关闭浏览器？并不是很方便。而当你有时间关闭浏览器时，Snap 刷新却不会马上更新浏览器。你可以看到更新的 Snap 版本的 Firefox 可用，但只要 Firefox 正在运行，它就不会自动安装。更新 Firefox Snap这是你摆脱每天不断出现的更新通知所需要做的事情。关闭 Firefox 浏览器手动运行 Snap 刷新（更新已安装的 Snap 包）确保你在 Firefox 浏览器中的工作已保存。现在，使用鼠标关闭所有 Firefox 浏览器或在终端中运行以下命令：sudo killall firefox 现在 Firefox 不再运行，更新 Snap 软件包：sudo snap refresh 你会看到它开始下载更新的 Firefox 包。更新完成后，你将看到 Firefox 已升级到更新版本的摘要信息。总结安装非 Snap 版本的 Firefox 也可能是个解决方案，但不是每个人都可以走这条路。Firefox 和 Snap 的开发人员必须齐心协力改进这个模棱两可的更新过程。他们应该提供更好的机制，不仅显示待处理更新的通知，还提供启动更新的选项。这是我们最近在 Ubuntu 上看到的许多奇怪的事情之一。这必须改变才能使 Ubuntu （再次）成为一个对初学者友好的发行版。via: https://itsfoss.com/pending-update-firefox-ubuntu/作者：Abhishek Prakash 选题：lkxed 译者：geekpi 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
如何清理 Snap 保留的旧软件包以释放磁盘空间
这个带有脚本的快速指南有助于清理旧的 Snap 软件包，并释放 Ubuntu 系统中的一些磁盘空间。我的 Ubuntu 测试系统中出现磁盘空间不足。因此，我通过 GNOME 的磁盘使用分析器进行调查，以找出哪个软件包正在消耗宝贵的 SSD 空间。除了通常的缓存和主目录，令我惊讶的是，我发现 Snap 和 Flatpak 消耗了大量的存储空间。我始终坚持一个规则：除非必要，否则不要使用 Snap 或 Flatpak。这主要是因为它们的安装大小和一些其他问题。我更喜欢原生 deb 和 rpm 包。多年来，我在这个测试系统中安装和移除了一些 Snap 包。问题出现在卸载后。Snap 在系统中保留了一些残留文件，而一般用户不知道。所以我打开了 Snap 文件夹 /var/lib/snapd/snaps，发现 Snap 会保留以前安装/卸载的软件包的旧版本。例如，在下图中，你可以看到 GNOME 3.28、3.34 和 Wine 这些都被删除了。但它们还在那里。这是因为 Snap 设计上在正确卸载后保留已卸载软件包的版本。或者，你可以在终端中使用：snap list --all 对于保留的版本数量，默认值为 3。这意味着 Snap 会保留每个软件包的 3 个旧版本，包括当前安装版本。如果你对磁盘空间没有限制，这是可以的。但是对于服务器和其他场景，这很容易遇到成本问题，消耗你的磁盘空间。不过，你可以使用以下命令轻松修改计数。该值可以在 2 到 20 之间。sudo snap set system refresh.retain=2 清理 Snap 版本在 SuperUser 的一篇文章中，Canonical 的前工程经理 Popey 提供了一个简单的脚本 可以清理旧的 Snap 版本并保留最新版本。这是我们将用来清理 Snap 的脚本。#!/bin/bash #Removes old revisions of snaps #CLOSE ALL SNAPS BEFORE RUNNING THIS set -eu LANG=en_US.UTF-8 snap list --all | awk '/disabled/{print $1, $3}' | while read snapname revision; do snap remove "$snapname" --revision="$revision" done 将上述脚本以 .sh 格式保存在目录中（例如 clean_snap.sh），赋予其可执行权限并运行。chmod +x clean_snap.sh 当我运行脚本时，它减少了很多磁盘空间。该脚本还将显示要删除的包的名称。结束语关于 Snap 的设计效率如何，人们总是争论不休。许多人说，它的设计是糟糕的，是臃肿的，且消耗系统资源。该论点的某些部分是正确的，我不会否认。如果正确实施和增强，沙盒应用的整个概念就很棒。我相信，与 Snap 相比，Flatpak 做得更好。也就是说，我希望这可以帮助你清理一些磁盘空间。尽管它只在 Ubuntu 中进行了测试，但它应该适用于所有支持 Snap 的 Linux 发行版。此外，请查看我们关于 如何清理 Ubuntu 的指南以及其他步骤。最后，如果你正在寻找清理 Flatpak 应用，请参阅 这个指南。via: https://www.debugpoint.com/clean-up-snap/作者：Arindam 选题：lkxed 译者：geekpi 校对：校对者ID本文由 LCTT 原创编译，Linux中国 荣誉推出