如何在 Linux 上使用 Snap 包如何在 Linux 上使用 Snap 包如何在 Linux 上使用 Snap 包如何在 Linux 上使用 Snap 包
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Linux 上使用 Snap 包

当您使用 snap 安装 Linux 软件包时,您可以告别依赖地狱和破坏其他正在运行的应用程序。 Snap 包最初是为 Ubuntu 设计的,但现在可以在各种 Linux 发行版上使用。

什么是快照包?

过去,在 Linux 上安装应用程序可能是一种令人沮丧的体验。您安装某些东西只是为了找到特定的库或其他依赖项丢失或过时。然后你会找到丢失的资源并安装它,结果却发现另一个应用程序取决于你刚刚替换的库的版本。修复一个,打破一个,重复。

这已通过更好的包管理系统(如 apt、dnf 和 pacman)得到改善。但是,如果您需要安装同一应用程序的不同版本,您仍然会面临困难。或者,如果您使用的两个应用程序因为绑定到特定但不同的库版本而发生冲突。

这些问题的一种解决方案是应用程序打包和部署系统。 Snappy 是其中比较流行的一种。它基于名为 Click 的打包和部署系统,可以追溯到 Ubuntu Touch 计划。 AppImage 和 FlatPak 是您可能遇到过的其他工具。

这些系统将应用程序连同任何依赖项和其他要求一起封装在一个压缩文件中。然后应用程序在一种迷你容器中运行。它被沙盒化并与其他应用程序分开。应用程序打包或需要的库和其他资源只能单独使用。

它们不是传统意义上的安装,因此它们不会对需要相同资源的不同版本的其他应用程序造成任何问题。您甚至可以安装和运行需要冲突库版本的应用程序,因为每个应用程序都在自己的沙箱中。

但是,如果它们没有以通常的方式安装,它们将如何处理?好吧,单个包文件被下载、解压缩并挂载为 SquashFS 虚拟文件系统。然后它作为虚拟环境呈现给您。所有这一切都发生在幕后。您所知道的只是您已经安装了一个应用程序,现在您可以访问它了。

当然,因为每个包文件都必须包含应用程序需要的所有资源,所以包文件可能很大。复制通常只安装一次的资源也很容易,例如 MySQL 或 Apache。如果两个不同的 snap 应用程序需要相同的资源,则它们各自带来自己的副本。

不过,这是为了简化安装和消除资源冲突问题而做出的权衡。

安装 snapd

Snappy 是在 Ubuntu 16.04 中引入的,所以如果您正在运行该版本或更高版本,那么您就可以开始使用了。在我们的机器上,Snappy 安装在 Manjaro 18.04 上,但我们必须在 Fedora 31 上安装它。

snap 既是包文件的名称,也是您用来与它们交互的命令。在幕后,snapd 守护程序也是您必须安装的软件包的名称,如果您的计算机上还没有安装 Snappy。

要在 Fedora 上安装 snapd,请键入以下命令:

sudo dnf install snapd

如果需要在 Manjaro 上安装它,请使用以下命令:

sudo pacman -Sy snapd
sudo systemctl enable --now snapd.socket

您可以使用 snap version 命令查看 snap 客户端、snapd 守护程序和软件序列号的版本。还将为您显示 Linux 发行版的名称和发行版以及内核版本。

输入以下内容:

snap version

安装 snap 包

安装 snap 包是一个非常简单的过程。您可以使用 snap 查找 snap 包,然后安装您想要的包。

我们键入以下内容来查找并安装 gimp 图像编辑器:

snap find gimp

snap 搜索与搜索线索“gimp”的匹配项并返回其结果。它会找到任何匹配或提及搜索词的内容。

要安装其中一个包,我们使用 Name 列中的值,如下所示:

sudo snap install gimp

下载时,完成的百分比数字会上升,并且进度条会从终端窗口的左侧爬过。安装完成后,会出现一条消息(如下所示),告诉您软件包已安装。

您可以使用 df 命令检查 Linux 计算机上配置的不同文件系统的容量和使用情况。如果我们将其输出通过管道传输到 grep 命令并搜索“gimp”,我们就会分离出刚刚安装的包的条目。

我们键入以下内容:

df | grep gimp

这向我们展示了 snap 包被挂载,就好像它是一个文件系统一样。挂载点位于 snap 目录中:/snap/gimp/252。 “252”是此版本 gimp 的发布号。

文件系统列为:/dev/loop18。循环设备文件用于使常规文件可作为块设备访问。它们通常用于将文件系统挂载到磁盘映像中。在这种情况下,他们将 SquashFS 文件系统安装在 snap 包中。 “18”表示这是此 Linux 计算机上使用的第 18 个 /dev/loop 设备文件。

我们可以使用 df 命令来快速检查这一点。我们将使用 - t(类型)选项将输出限制为仅 SquashFS 文件类型。

我们键入以下内容:

df -t squashfs

列出已安装的 SquashFS 文件系统。 /dev/loop 设备文件处理每一个,共有 18 个。

每个文件系统都安装在 /snap 目录中的一个目录中。但是,这并不意味着这台计算机上安装了 18 个不同的 snap 包。这是一个 Ubuntu 发行版,所以一些 snap 包是开箱即用的,我们刚刚安装了另一个。

此外,当您安装 snapd 时,它会安装一些核心 snap 包来处理其他 snap 包的需要。

我们可以使用 snap list 命令,如下所示,列出已安装的 snap 包:

snap list

输出有点宽,所以清单的结尾如下所示。

这是整个清单:

Name                 Version                    Rev   Tracking  Publisher    Notes
core                 16-2.43.3                  8689  stable    canonical*   core
core18               20200124                   1668  stable    canonical*   base
gimp                 2.10.18                    252   stable    snapcrafters -
gnome-3-26-1604      3.26.0.20191114            98    stable/...  canonical*   -
gnome-3-28-1804      3.28.0-16-g27c9498.27c9498 116   stable    canonical*   -
gnome-calculator     3.34.1+git1.d34dc842       544   stable/...  canonical*   -
gnome-characters     v3.32.1+git3.b9120df       399   stable/...  canonical*   -
gnome-logs           3.34.0                     81    stable/...  canonical*   -
gnome-system-monitor 3.32.1-3-g0ea89b4922       127   stable/...  canonical*   -
gtk-common-themes    0.1-28-g1503258            1440  stable/...  canonical*   -

如您所见,安装了 10 个 snap 包,而不是 18 个。但是,这 10 个包产生了 18 个 SquashFS 文件系统。表列是不言自明的,但这里有一些说明:

  • 名称:已安装的 snap 包的名称。
  • 版本:snap包中软件的版本号。
  • Rev:snap 包的修订号。
  • Tracking:此 snap 包监控更新的渠道。有四个:
    • 稳定:默认频道。顾名思义,此频道包含最稳定的软件包。
    • 候选:此频道不太稳定,但非常接近它,因为它包含代码完整的候选版本级软件。在转移到稳定渠道之前,它会经过最终测试。
    • Beta:此渠道具有后期开发周期质量,但不保证稳定。
    • Edge:适用于早期构建测试人员。您不应将此频道用于重要工作或生产计算机。这里有龙!

    快照频道

    您可以使用 info 选项来获取 snap 包的描述。

    为此,我们键入以下内容:

    snap info gtk-common-themes

    我们可以看到包跟踪的是哪个渠道,以及四个渠道中每个渠道的snap包中的软件版本。在大多数情况下,您应该留在稳定频道上。

    snap 包每天检查四次,以查看是否有更新版本的软件可以从它正在观看或“跟踪”的频道获得。如果要更改 snap 包轨道的频道,可以使用 refresh 和 --channel 选项。

    为此,我们键入以下内容:

    sudo snap refresh gtk-common-themes --channel=beta

    如果有更新版本的软件可用,它会被安装,但这里不是这种情况。但是,snap 包现在正在跟踪 beta 通道。一旦发布新的测试版,就会自动下载和升级。

    您可以使用 --list 选项来检查您计算机上安装的任何 snap 包是否有更新可用。

    为此,我们键入以下内容:

    sudo snap refresh --list

    如果您计算机上的 snap 包正在跟踪的任何频道包含较新的软件版本,您将被告知。

    如果有较新版本的软件可用,您可以使用 refresh 选项(如下所示)手动强制刷新:

    sudo snap refresh gtk-common-themes

    删除 snap 包

    要卸载 snap 包,您可以使用 remove 选项,如下所示:

    sudo snap remove gimp

    快速备忘单

    使用 snap 包非常简单,但我们整理了一些可以帮助您的命令列表:

    • 要搜索包: snap find package_name
    • 安装包: sudo snap install package_name
    • 查看所有已安装的包: 快照列表
    • 获取有关单个包的信息:snap info package_name
    • 更改包跟踪更新的渠道: sudo snap refresh package_name --channel=channel_name
    • 查看是否已为任何已安装的软件包准备好更新: sudo snap refresh --list
    • 手动更新包: sudo snap refresh package_name
    • 要卸载一个包: sudo snap remove package_name

    Linux Commands
    Files tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm · scp · gzip · chattr · cut · find · umask · wc
    Processes alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg · pidof · nohup · pmap
    Networking netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw · arping · firewalld

    RELATED: Best Linux Laptops for Developers and Enthusiasts

©2015-2025 艾丽卡 support@alaica.com