标签 snap 下的文章

你可能会发现,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 负责为此设置挂载名空间,并通过 Apparmorseccomp 实现安全隔离。

你可以将其内容解压并直接运行:

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
老王点评:似乎这种审核机制不够啊,原来是事后审核吗?

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

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

下载 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 大小 - 清理前

尽管如此,我始终坚持一个规则:除非必要,否则不要使用 Snap 或 Flatpak。这主要是因为它们的安装尺寸和其他问题。我更喜欢原生 deb 和 rpm 包。多年来,我在这个测试系统中安装和移除了一定数量的 Snap 包。

但卸载后还有问题。Snap 在系统中保留了一些残留文件,一般用户不知道。

所以我打开了 Snap 文件夹 /var/lib/snapd/snaps,发现 Snap 保留了以前安装/卸载的软件包的旧版本。

例如,在下图中,你可以看到 GNOME 3.28、3.34 和 Wine 都被删除了。但它们还在那里。发生这种情况是因为 Snap 的设计,它在正确卸载后保留已卸载软件包的版本。

snaps 目录下的文件

或者,你可以在终端中使用:

snap list --all

snap 列出全部

对于保留的版本,默认值为 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 的设计效率如何,人们总是争论不休。许多人说,它的设计是坏的,是臃肿的,是消耗系统资源的。这种说法的某些部分是真实的,我不会否认它。如果实施和加强得当,整个沙盒应用的概念是很好的。但我相信,与 Snap 相比,Flatpak 工作做得更好。

也就是说,我希望这可以帮助你清理一些磁盘空间。尽管它只在 Ubuntu 中进行了测试,但它应该适用于所有支持 Snap 的 Linux 发行版。

此外,请查看我们关于 如何清理 Ubuntu 的指南以及其他步骤。

最后,如果你要清理 Flatpak 应用,请参阅 这篇指南


via: https://www.debugpoint.com/clean-up-snap/

作者:Arindam 选题:lkxed 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出