在 Linux 上使用 Snap 命令的示例
了解如何使用 snap 命令安装、删除和更新软件包来管理 Ubuntu 和其他 Linux 发行版上的软件。
如果您使用 Ubuntu 或其某些版本,您可能知道 Snap 软件包在某些应用程序的交付方式中发挥着重要作用。 Canonical(Ubuntu 背后的公司)严重依赖这种打包格式。
当然,Snap格式不仅限于Ubuntu;它几乎可以安装在任何其他 Linux 发行版上。尽管如此,由于某些超出本指南范围的原因,它被专门使用,主要用于 Ubuntu 及其版本。
值得注意的是,该发行版提供了出色的图形工具来管理软件,因此用户很少需要使用命令行来处理 Snap。尽管如此,大量的功能和灵活性仍然隐藏在那里。学习使用它对于获得对系统的完全控制的感觉非常重要。本指南正是提供了这一点。
最后,您将充满信心地使用 Snap 管理软件,保持系统高效且最新。然而,在我们进入实际部分之前,我将向您介绍一些完全理解 Snap 数据包格式所需的解释。所以,继续阅读。
Linux 中的 Snap 和 Snapd 是什么?
Snap 是一种通用的、与发行版无关的软件包格式,由 Ubuntu 的制造商 Canonical 开发,用于简化软件分发。
Linux 发行版通常依赖于自己的包管理器和格式,例如适用于 Debian 生态系统的 APT、适用于基于 Fedora/RHEL 的发行版的 DNF、适用于 Arch 及其衍生产品的 Pacman 等。
但让我们面对现实吧——我们(有时)都在某个时候遇到过这些包管理器的兼容性问题,或者发现自己需要发行版存储库中没有的较新版本的软件。这时 Snap 介入了。
与 Flatpak 的概念类似,Snap 通过将应用程序及其所有依赖项捆绑到一个独立的包中来解决这些不便。以下是其主要功能的详细介绍:
- 通用兼容性:Snaps 适用于各种 Linux 发行版,开发人员无需为每个发行版创建单独的软件包。
- 隔离和安全性:每个 Snap 都在封闭的环境中运行,独立于系统上的其他应用程序运行。这通过降低应用程序之间冲突或干扰的风险来增强安全性。
- 自动更新:Snap 应用可以在后台自动更新,确保您始终拥有最新版本,无需手动干预。
- 依赖管理:由于 Snap 捆绑了所有依赖项,因此您不必担心安装额外的库或工具。运行应用程序所需的一切都包含在包中。
- 轻松回滚:如果更新导致问题,Snap 允许轻松回滚到以前的软件版本。
此外,除了 Snap 之外,还有另一个组件实际上可以完成所有工作:snapd。它是一种后台服务,可在系统上启用 Snap 功能并管理 Snap 软件包的安装、更新和删除。
从本质上讲,snapd 是为 Linux 计算机上的 Snap 提供支持的引擎,负责处理幕后的所有繁重工作。它致力于确保您的 Snap 应用程序安全交付、正确更新并与您的系统无缝集成。
为了让事情更清楚,以下是 Snap 和 snapd 的关系:
- Snap 指的是实际的应用程序包本身。 Snap 是一个容器化应用程序,将其所有依赖项捆绑到可安装包格式中,确保它可以在任何支持 Snap 的 Linux 发行版上运行。
- snapd 是处理系统上的 Snap 包的服务或守护程序。它管理 Snap 的安装、更新和删除,并确保它们与系统的其余部分隔离运行,从而防止与其他软件发生冲突。
现在我们已经在概念层面上澄清了一些事情,是时候进入实践部分了——如何使用 Snap 来管理 Ubuntu 系统上的软件。
基本捕捉命令
搜索包
要搜索 Snap 包,您可以使用 snap find
命令。它允许您根据 Snap 商店中的关键字或包名称搜索可用的 Snap 包。
例如,要搜索与“gimp”相关的包,您可以使用以下命令:
snap find gimp
这将显示与 GIMP 相关的软件包列表,以及它们的名称、版本、发布者和简短描述。
您现在可以根据结果列表选择合适的安装包。
查看包裹详情
snap info
命令非常有用 - 它提供有关 Snap 软件包的详细信息,包括其版本、描述、发布者和可用渠道。假设您想要查看有关“gimp”包的详细信息。
snap info gimp
在命令的输出中,您将获得有关该包的详细信息,包括:
- 名称:包的正式名称。
- 发布者:负责发布 Snap 的个人或组织。
- 稳定:最可靠且经过测试的版本。
- 候选:几乎稳定,经过一些测试。
- Beta:不太稳定,功能较新,但可能存在错误。
- Edge:前沿开发版本,通常最不稳定。
渠道:Snap 包通常可以通过不同的渠道获得,例如:
snap info
命令对于在安装之前或在排除任何版本控制或更新相关问题时了解有关软件包的更多信息非常有用。
安装 Snap 包
在 Linux 系统上安装 Snap 包非常简单。找到该软件包后,您可以使用 snap install
命令安装它。例如,要安装 GIMP,请使用:
sudo snap install gimp
安装后,您可以从系统的应用程序菜单启动该应用程序。但是,如果要从特定通道安装软件包,则必须将 --channel=
附加到安装命令。例如,要从“预览/候选”通道安装 GIMP,请输入以下内容:
sudo snap install gimp --channel=preview/candidate
最后,如果您已经从一个频道安装了 Snap 软件包并想要切换到其他频道,则可以在更新期间使用“–channel”标志。
例如,要从“最新/稳定”通道切换到稳定的 GIMP 版本,我们的 Snap 命令将如下所示:
sudo snap refresh gimp --channel=latest/stable
卸载 Snap 包
卸载 Snap 软件包非常简单。只需输入 sudo snap remove
,然后输入要删除的包的名称。例如,如果您想卸载 GIMP,命令为:
sudo snap remove gimp
一次删除多个包
此外,您可以使用单个命令卸载多个 Snap 包。只要一一列出名字即可:
sudo snap remove gimp vlc brave
清除配置文件
虽然snap remove
命令通常会删除所有关联的文件,但有时它可能会留下用户数据或配置文件。如果您还想删除它们,可以使用“-purge”选项。
例如,要删除 GIMP 及其附带数据,请执行以下命令:
sudo snap remove gimp --purge
如果您不确定要删除的 Snap 包的确切名称,请检查下一部分。
管理已安装的 Snap 包
列出已安装的 Snap 包
要列出 Linux 系统上已安装的 Snap 软件包,可以使用以下命令:
snap list
该命令的输出列表列出了系统上安装的所有 Snap 软件包,以及重要的详细信息,例如软件包名称、版本、修订号、跟踪渠道(例如,稳定版、候选版、测试版)和发布者。
刷新(更新)快照包
默认情况下,Snap 包会自动更新,但您可以通过执行刷新命令来手动触发更新。它会检查可用的更新并将所有已安装的快照刷新到最新版本。
sudo snap refresh
此外,如果只想更新特定的包,可以在命令后指定包名称。例如,要更新 GIMP Snap 包:
sudo snap refresh gimp
无需安装即可检查可用更新
您还可以使用以下命令检查已安装的 Snap 软件包是否有可用更新,而无需应用更新:
sudo snap refresh --list
回滚到以前的版本
将 Snap 包回滚到以前的版本是一项有用的功能,特别是当应用程序的最新版本导致问题或无法按预期工作时。鉴于此,Snap 软件包保留了以前的版本,因此您可以轻松恢复到它。
为此,请使用 snap revert
命令,后跟程序包名称,将程序包回滚到其先前的版本:
sudo snap revert gimp
之后,您可以使用snap list
命令来确认该软件包已恢复到早期版本。
高级捕捉用法
设置自动刷新时间
默认情况下,Snap 每天自动更新包四次。您可以通过设置刷新计时器来自定义自动刷新计划。例如,要将更新安排为仅在夜间进行:
sudo snap set system refresh.timer=2:00-4:00
快照别名
Snap 中的别名允许您为已安装的 Snap 应用程序创建快捷方式或备用名称,从而更轻松地运行特定命令。当 snap 命令名称与系统命令冲突或者您想简化较长命令的使用时,这特别有用。
例如,假设您已经安装了“microk8s”snap,它提供了 microk8s.kubectl
命令。要创建别名以便您可以简单地使用 kubectl,请运行:
sudo snap alias microk8s.kubectl kubectl
现在,当您在终端中输入 kubectl
时,它将执行 microk8s.kubectl
。
要删除现有别名,请使用 snap unalias
命令,后跟别名。因此,要删除之前创建的 kubectl 别名,请执行:
sudo snap unalias kubectl
识别快照日志的问题
Snap 日志是诊断 Linux 系统上 Snap 应用程序和服务问题的有用工具。 Snap 日志系统捕获特定于应用程序的日志和 Snap 守护程序 (snapd) 日志,帮助您了解应用程序无法运行或 Snap 行为异常时可能出现的问题。
如果您在使用特定 Snap 应用程序时遇到问题,可以使用 snap logs
命令查看其日志,后跟 Snap 包名称,该名称可检索应用程序的日志。例如,要查看“microk8s”包中的日志,请运行以下命令:
sudo snap logs microk8s
这将向您实时显示 Snap 应用程序生成的输出和错误日志。它有助于识别运行时问题,例如崩溃、缺少依赖项或配置错误。
此外,您可以添加一个“-f”选项,其工作方式与 Linux 中的“tail -f”命令类似,它可以持续监控和实时流式传输日志。
频道切换
snap switch
命令用于更改 Snap 包的跟踪通道。主要用例是当您想要在测试版或边缘版本上测试新功能,但如果遇到错误则恢复到稳定版本。
正如我们已经提到的,“渠道”指的是软件包可用的不同版本或分支,例如“稳定”、“候选”、“beta” ”和“边缘”。使用快速开关
,您可以在这些通道之间移动。
例如,要将 GIMP 切换回“稳定”通道,请执行以下命令:
sudo snap switch --channel=latest/stable gimp
切换频道后,您需要刷新包以应用更改:
sudo snap refresh gimp
跟踪和管理快照更改
snapchanges
命令允许您查看和管理 Snap 在 Linux 系统上所做的更改,例如安装、更新、删除或回滚。要列出所有 Snap 更改,请运行:
snap changes
这将显示更改列表及其 ID、状态和时间戳。现在,要查看有关特定更改的详细信息,请使用上一个命令中的更改 ID:
snap change 30
最后,如果更改被卡住或者您想停止它,您可以使用 snap abort
命令后跟更改 ID 来中止它:
sudo snap abort 30
禁用/启用 Snap 包
snap disable
和 snap enable
命令允许您临时停止(禁用)或重新激活(启用)系统上的 Snap 软件包,而无需卸载它们。例如:
sudo snap disable gimp
相反,snap enable
命令会重新激活之前禁用的 Snap 包,使其能够再次运行。
sudo snap enable gimp
主要用例是您偶尔使用某些 Snap 服务。您可以禁用它们并仅在必要时启用它们。此外,这些命令对于管理系统资源或对特定应用程序进行故障排除特别有用,而无需完全删除并重新安装它们。
底线
Snap 是一个功能强大的工具,可以极大地简化 Linux 上的软件管理,特别是对于 Ubuntu 用户来说,这种技术非常普遍。
通过练习本指南中的示例,您现在应该可以轻松地使用 Snap 直接从命令行处理系统上的各种软件任务。
有关更多信息,请访问 Snap 官方文档。感谢您抽出时间!一如既往,以下部分非常欢迎任何建议和意见。