标签 snap 下的文章

Snap 是由 Ubuntu 的母公司 Canonical 设计的通用包格式。有些人不喜欢 Snap,但它有一些优势。

通常,某些应用仅以 Snap 格式提供。这为你提供了在 Arch Linux 中启用 Snap 的充分理由。

我知道 AUR 拥有大量应用,但 Snap 应用通常直接来自开发人员。

如果你希望能够在 Arch Linux 中安装 Snap 应用,你需要先启用 Snap 支持。

有两种方法可以做到:

  • 使用 AUR 助手启用 Snap 支持(更简单)
  • 通过从 AUR 获取包,手动启用 Snap 支持

让我们看看怎么做。

方法 1、使用 AUR 助手启用 Snap

Snap 支持在 Arch 用户仓库中以 snapd 包的形式提供。你可以使用 AUR 助手轻松安装它。

许多 AUR 助手,但 yay 是我更喜欢的,因为它的语法类似于 pacman 命令

如果你还没有安装 AUR,请使用以下命令安装 Yay(需要事先安装 git):

git clone https://aur.archlinux.org/yay

cd yay

makepkg -si

安装 yay

现在 yay 已安装,你可以通过以下方式安装 snapd

yay -Sy snapd

使用 yay 从 AUR 安装 snapd

每当你 更新 Arch Linux 系统时,yay 都会启用 snapd 的自动更新。

验证 Snap 支持是否有效

要测试 Snap 支持是否正常工作,请安装并运行 hello-world Snap 包。

sudo snap install hello-world

hello-world
(或者)
sudo snap run hello-world

hello-world Snap 包执行

如果它运行良好,那么你可以轻松安装其他 Snap 包。

方法 2、从 AUR 手动构建 snapd 包

如果你不想使用 AUR 助手,你仍然可以从 AUR 获取 snapd。让我展示详细的过程。

你需要先安装一些构建工具。

sudo pacman -Sy git go go-tools python-docutils

为 Snap 安装依赖项

完成依赖项安装后,现在可以克隆 snapd 的 AUR 目录,如下所示:

git clone https://aur.archlinux.org/snapd

cd snapd

克隆仓库

然后构建 snapd 包:

makepkg -si

当它要求安装其他依赖包时输入 yes

手动构建 snapd

你已安装 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

启动时启用 Snap

手动构建包的主要缺点是每次新更新启动时你都必须手动构建。使用 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 22.04,你可能已收到过此通知。

Notification about pending Firefox app

它会通知你 Firefox 更新正在等待中,并要求你关闭应用以避免中断。

因此,就像一个听话的 Ubuntu 用户一样,你在保存或完成工作后关闭了 Firefox 浏览器。

你认为 Firefox 已在后台更新,重启浏览器将运行较新版本。

只是,并非如此。

即使在你重启浏览器甚至计算机后,它仍可能显示相同的 “pending update of Firefox” 通知

令人沮丧么?我可以告诉你发生了什么。

让我解释一下为什么会发生这种情况,以及你可以做些什么来“修复”它。

修复 “pending update of Firefox snap” 问题

早些时候,Firefox 曾经在后台更新,然后要求你重启浏览器。在你重启浏览器之前 不能 打开任何网站。

Firefox forced restart in the past

在将 Firefox 浏览器切换为默认 Snap 包格式 后,Ubuntu 团队对更新流程进行了一些改动。

此通知是“改进的用户体验”的一部分。现在,Firefox 不再阻止你浏览。你可以在方便时重新启动浏览器以进行更新。

但是为什么即使在你重新启动浏览器或系统后它仍然显示这个通知?

因为这是一条糟糕的通知消息,无法为你提供完整的信息。

Firefox 更新还没有开始

当你看到 “pending Firefox update” 时,你错误地认为应用已在后台更新,重启会将其升级到较新的版本。

而对于现在这种情况,Ubuntu 中的 Snap 包每天会自动刷新(更新)一次或几次。为了避免在重新启动安装更新之前 Firefox 不允许你浏览任何内容而导致工作中断,Ubuntu 甚至不会在后台更新 Firefox Snap 包。

相反,当 Snap 包刷新时,它会显示通知并希望你立即关闭浏览器,以便可以使用其他 Snap 包进行更新。

但像你我这样的用户不能这样做,对吧?看到通知,立即关闭浏览器?并不是很方便。

而当你有时间关闭浏览器时,Snap 刷新却不会马上更新浏览器。

你可以看到更新的 Snap 版本的 Firefox 可用,但只要 Firefox 正在运行,它就不会自动安装。

Firefox snap won’t be updated automatically if the browser is running

更新 Firefox Snap

这是你摆脱每天不断出现的更新通知所需要做的事情。

  • 关闭 Firefox 浏览器
  • 手动运行 Snap 刷新(更新已安装的 Snap 包)

确保你在 Firefox 浏览器中的工作已保存。现在,使用鼠标关闭所有 Firefox 浏览器或在终端中运行以下命令:

sudo killall firefox

现在 Firefox 不再运行,更新 Snap 软件包:

sudo snap refresh

你会看到它开始下载更新的 Firefox 包。

Firefox is being updated with Snap

更新完成后,你将看到 Firefox 已升级到更新版本的摘要信息。

Updated Firefox snap version

总结

安装非 Snap 版本的 Firefox 也可能是个解决方案,但不是每个人都可以走这条路。

Firefox 和 Snap 的开发人员必须齐心协力改进这个模棱两可的更新过程。他们应该提供更好的机制,不仅显示待处理更新的通知,还提供启动更新的选项。

这是我们最近在 Ubuntu 上看到的许多奇怪的事情之一。这必须改变才能使 Ubuntu (再次)成为一个对初学者友好的发行版。


via: https://itsfoss.com/pending-update-firefox-ubuntu/

作者:Abhishek Prakash 选题:lkxed 译者:geekpi 校对:wxy

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

这个带有脚本的快速指南有助于清理旧的 Snap 软件包,并释放 Ubuntu 系统中的一些磁盘空间。

我的 Ubuntu 测试系统中出现磁盘空间不足。因此,我通过 GNOME 的磁盘使用分析器进行调查,以找出哪个软件包正在消耗宝贵的 SSD 空间。除了通常的缓存和主目录,令我惊讶的是,我发现 Snap 和 Flatpak 消耗了大量的存储空间。

Snap size – before cleanup

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

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

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

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

Files under snaps directory

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

snap list --all

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

当我运行脚本时,它减少了很多磁盘空间。该脚本还将显示要删除的包的名称。

Executing the script

Snaps size after cleanup

结束语

关于 Snap 的设计效率如何,人们总是争论不休。许多人说,它的设计是糟糕的,是臃肿的,且消耗系统资源。该论点的某些部分是正确的,我不会否认。如果正确实施和增强,沙盒应用的整个概念就很棒。我相信,与 Snap 相比,Flatpak 做得更好。

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

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

最后,如果你正在寻找清理 Flatpak 应用,请参阅 这个指南


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

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

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

前几天我试图安装 massCode 应用。对于安装,它提供了一个 Snap 文件以供下载。

当我尝试从 Snap 文件安装应用程序时:

sudo snap install snap_file

它给了我以下错误:

error: cannot find signatures with metadata for snap "masscode_2.6.1_amd64.snap"

cannot find signature with metadata for snap

这很奇怪。在 Ubuntu 中添加外部仓库 时,你必须添加 GPG 密钥。但是这里的开发人员没有提供这样的东西。

“修复”简单易行。让我给你解释一下。

处理 “cannot find signatures with metadata for snap” 错误

这里其实不涉及签名。

发生的情况是你从第三方下载了 Snap 安装程序。 Ubuntu 中的 Snap 机制希望你从官方 Snap 商店获取 Snap 包。

由于它不是来自 Snap 商店,因此你会看到 “cannot find signatures with metadata for snap” 的错误消息。与大多数错误消息一样,这个错误消息不是描述性的。

那么,这里的解决方案是什么?

任何未通过 Snap 商店分发的 Snap 包都必须使用 --dangerous 选项进行安装。这就是规则。

sudo snap install --dangerous path_to_snap_file

这样,你告诉 Snap 包管理器显式安装 Snap 包。

在这里,我使用了这个选项并且能够成功地从它的 Snap 包中安装 massCode。

installing third party snap packages

以这种方式安装 Snap 包有多“危险”?几乎和下载并 安装 deb 格式安装包 相同。

在我看来,如果你是从项目开发者的网站上下载 Snap 包,你已经在信任该项目了。在这种情况下,你可以使用 --dangerous 选项安装它。

当然,你应该首先搜索该软件包是否在 Snap 商店中可用:

snap find package_name

我希望这个快速的小技巧可以帮助你修复 Snap 错误。如果你有任何问题或建议,请告诉我。如果你想了解更多信息,请参阅 这个使用 Snap 命令指南


via: https://itsfoss.com/snap-metadata-signature-error/

作者:Abhishek Prakash 选题:lkxed 译者:geekpi 校对:wxy

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

这是一篇关于在 Ubuntu Linux 系统中如何删除 Snap,以得到一个无 Snap 系统的教程。

由 Canonical 开发的 Snap 软件包在一些场景下是有益的。它为终端用户直接提供了轻便且快速的程序更新。不仅如此,它还有其他的好处,比如它打包了所有依赖包,并允许安装同一个应用的多个版本。此外,它运行在沙盒模式,提供了安全和其他方面的好处。

在这些好处中, Snap 技术也有一些地方备受争论。举个例子,几乎所有使用 Snap 软件包的用户都说它的性能较差,包括它的启动时间要比本地 deb 或者 RPM 软件包时间要长。另外,由于它的设计,程序安装的体积巨大,浪费磁盘空间,因为它打包了所有用到的依赖包。

不仅如此,由于沙盒的天然属性,Snap 程序可能无法访问你的 Linux 桌面的几个部分,除非提供了适当的权限。

这个指南阐述了你如何从 Ubuntu 系统中完全移除 Snap。

这些步骤在 Ubuntu 22.04 LTS Jammy Jellyfish 中进行了测试。然而,它应该也适用于所有的 Ubuntu 系统版本。

警告:这些步骤将会移除 Ubuntu 系统中两个关键的程序:软件商店和 Firefox。尝试这些步骤之前确认你已经对书签和 Firefox 的其它设置做了备份。

在 Ubuntu Linux 移除 Snap 软件包

1、在你的系统中打开一个终端,使用以下命令查看已经安装的 Snap 软件包的列表。它显示了 Snap 软件包,比如 Firefox,软件商店,主题以及其它默认已经安装的核心软件包。

snap list

 Ubuntu Snap 包列表

2、按照以下的顺序移除 Snap 软件包。首先移除 Firefox。然后是软件商店,和用以上命令看到的你的系统中的其它软件包。

sudo snap remove --purge firefox
sudo snap remove --purge snap-store
sudo snap remove --purge gnome-3-38-2004
sudo snap remove --purge gtk-common-themes
sudo snap remove --purge snapd-desktop-integration
sudo snap remove --purge bare
sudo snap remove --purge core20
sudo snap remove --purge snapd

3、最后,通过 apt 命令移除 Snap 服务。

sudo apt remove --autoremove snapd

移除 Snap 包和其它

这还没完,即使你用以上命令移除了 Snap 软件包,但是如果你没有关闭 apt 触发器,sudo apt update 命令会再一次将 Snap 安装回来。

4、所以,要关闭它,我们需要在 /etc/apt/preferences.d/ 目录下创建一个 apt 设置文件 nosnap.pref 来关闭 Snap 服务。

sudo gedit /etc/apt/preferences.d/nosnap.pref

5、添加以下的命令行,并保存该文件。

Package: snapd
Pin: release a=*
Pin-Priority: -10

创建设置文件

如果你知道如何使用它,那么这个 apt 设置文件是一个潜在的工具。举个例子,在以上的状态中,Pin-Priority -10 意思就是阻止 Snap 软件包的安装。

与这个教程不相关的,举个例子,如果你想给所有发行版代号为 “bulleye” 的软件包超高优先权的话,那么就可以查看这些设置文件。如果你想了解更多,你可以访问 apt 手册页

Package: *
Pin: release n=bullseye
Pin-Priority: 900

6、回到我们的主题,一旦你已经保存和关闭以上文件,从终端中再次运行以下命令。

sudo apt update

7、最后,从 Ubuntu 中移除 Snap 的步骤全部完成。

从 Ubuntu 移除 Snap 后使用 deb 文件安装软件商店和 Firefox

你已经移除了 Firefox 和软件商店,但是你的工作还需要它们。

要安装 apt 版的 GNOME 软件商店,你可以使用以下命令。确保使用 --install-suggests 参数。否则,将会再次安装上 Snap 版本的软件包管理器!

sudo apt install --install-suggests gnome-software

要安装 Firefox,通过以下命令使用官方 PPA 仓库。

sudo add-apt-repository ppa:mozillateam/ppa
sudo apt update
sudo apt install -t 'o=LP-PPA-mozillateam' firefox

添加 PPA 仓库

从 PPA 仓库以 deb 文件形式安装 Firefox

一旦你已经安装完 Firefox,使用以下命令开启自动更新。要了解更多,访问此页

echo 'Unattended-Upgrade::Allowed-Origins:: "LP-PPA-mozillateam:${distro_codename}";' | sudo tee /etc/apt/apt.conf.d/51unattended-upgrades-firefox

最后但同样重要,当运行 apt 时,为 Firefox 创建另一个设置文件给予以上 PPA 仓库超高优先权。如果你不这么做,apt update 命令会再次安装 Snap 版本 Firefox,并把它的“ Snap 朋友们”带回来 ???。

sudo gedit /etc/apt/preferences.d/mozillateamppa

最后,添加这些命令行并保存文件。

Package: firefox*
Pin: release o=LP-PPA-mozillateam
Pin-Priority: 501

完成。

在 Ubuntu 系统恢复到 Snap 软件包

如果你改变想法,移除该设置文件,并通过以下命令再次启动安装程序。

sudo rm /etc/apt/preferences.d/nosnap.pref
sudo apt update && sudo apt upgrade
sudo snap install snap-store
sudo apt install firefox

总结

关于在 Ubuntu 下移除 Snap 软件包做个总结,我想说的是这些处理 Snap 软件包的方法实属无奈。主要是这对新用户来说很困难。我希望这个指南能帮助你处理好 Snap 软件包。完结撒花。


via: https://www.debugpoint.com/2022/04/remove-snap-ubuntu/

作者:Arindam 选题:lujun9972 译者:hwlife 校对:turbokernel, wxy

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