简介
Snap 是一种通用的包管理系统和软件部署方案,由Canonical公司(Ubuntu的母公司)开发。使用Snap Package Manager有以下好处:
- 跨发行版兼容性:Snap包可以在任何支持Snap的Linux发行版上运行,无需担心依赖关系或系统库的版本差异。
- 自包含性:Snap包是自包含的,意味着它们包含了运行应用程序所需的所有依赖项。这减少了依赖冲突的可能性。
- 易于安装和更新:安装和更新Snap包非常简单,只需使用snap install和snap refresh命令即可。
- 安全性和隔离性:Snap包运行在沙箱环境中,与其他应用程序隔离开来,这增强了系统的安全性。
- 事务性更新:Snap支持事务性更新,这意味着如果更新过程中出现问题,可以回滚到上一个稳定状态。
- 版本控制:Snap允许用户选择特定的应用程序版本,并且可以轻松地在不同版本之间切换。
- 渠道(Channels):Snap支持不同的更新渠道,如稳定版(stable)、测试版(beta)和开发版(edge),用户可以根据自己的需求选择合适的更新渠道。
- 中央存储库:Snap提供了一个中央的Snap Store,用户可以在这里找到和安装软件,类似于移动设备的应用商店。
- 桌面集成:Snap包通常与桌面环境紧密集成,包括桌面图标、菜单项和通知。
- 开发者友好:对于开发者来说,Snap简化了软件分发过程,可以更容易地将应用程序提供给广泛的Linux用户。
尽管Snap带来了许多好处,但也存在一些争议和缺点,比如包的大小通常比传统包大,因为它们包含了所有依赖项,以及一些用户对Snap的沙箱安全模型有所担忧。然而,对于需要跨平台兼容性和简化软件管理的用户和开发者来说,Snap是一个非常有用的工具。
安装
Note: 如果是基于 Ubuntu 的 Linuxmint 则需要先移除 /etc/apt/preferences.d/nosnap.pref 文件。
使用 apt 直接安装 snap 即可
~$ sudo apt install snapd
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成
下列【新】软件包将被安装:
snapd
升级了 0 个软件包,新安装了 1 个软件包,要卸载 0 个软件包,有 340 个软件包未被升级。
需要下载 27.6 MB 的归档。
解压缩后会消耗 109 MB 的额外空间。
获取:1 http://ftp.sjtu.edu.cn/ubuntu jammy-updates/main amd64 snapd amd64 2.66.1+22.04 [27.6 MB]
已下载 27.6 MB,耗时 26秒 (1,062 kB/s)
正在选中未选择的软件包 snapd。
(正在读取数据库 ... 系统当前共安装有 535704 个文件和目录。)
准备解压 .../snapd_2.66.1+22.04_amd64.deb ...
正在解压 snapd (2.66.1+22.04) ...
正在设置 snapd (2.66.1+22.04) ...
Created symlink /etc/systemd/system/multi-user.target.wants/snapd.apparmor.service → /lib/systemd/system/snapd.apparmor.service.
Created symlink /etc/systemd/system/multi-user.target.wants/snapd.autoimport.service → /lib/systemd/system/snapd.autoimport.service.
Created symlink /etc/systemd/system/multi-user.target.wants/snapd.core-fixup.service → /lib/systemd/system/snapd.core-fixup.service.
Created symlink /etc/systemd/system/multi-user.target.wants/snapd.recovery-chooser-trigger.service → /lib/systemd/system/snapd.recovery-chooser-trigger.service.
Created symlink /etc/systemd/system/multi-user.target.wants/snapd.seeded.service → /lib/systemd/system/snapd.seeded.service.
Created symlink /etc/systemd/system/cloud-final.service.wants/snapd.seeded.service → /lib/systemd/system/snapd.seeded.service.
Unit /lib/systemd/system/snapd.seeded.service is added as a dependency to a non-existent unit cloud-final.service.
Created symlink /etc/systemd/system/multi-user.target.wants/snapd.service → /lib/systemd/system/snapd.service.
Created symlink /etc/systemd/system/timers.target.wants/snapd.snap-repair.timer → /lib/systemd/system/snapd.snap-repair.timer.
Created symlink /etc/systemd/system/sockets.target.wants/snapd.socket → /lib/systemd/system/snapd.socket.
Created symlink /etc/systemd/system/final.target.wants/snapd.system-shutdown.service → /lib/systemd/system/snapd.system-shutdown.service.
snapd.failure.service is a disabled or a static unit, not starting it.
snapd.mounts.target is a disabled or a static unit, not starting it.
snapd.snap-repair.service is a disabled or a static unit, not starting it.
正在处理用于 gnome-menus (3.36.0-1ubuntu3) 的触发器 ...
正在处理用于 man-db (2.10.2-1) 的触发器 ...
正在处理用于 dbus (1.12.20-2ubuntu4.1) 的触发器 ...
正在处理用于 mailcap (3.70+nmu1ubuntu1) 的触发器 ...
正在处理用于 desktop-file-utils (0.26+mint3+victoria) 的触发器 ...
安装完成后可查看版本
~$ snap version
snap 2.66.1+22.04
snapd 2.66.1+22.04
series 16
linuxmint 21.3
kernel 5.15.0-91-generic
使用
查询软件包
列出 Snap 包,已 docker 为样例
~$ snap find docker
名称 版本 发布者 注记 摘要
docker 27.2.0 canonical✓ - Docker container runtime
docker-image-save 1.6.19 jadolg - Download zip compressed Docker images.
docker-credential-pass v0.6.0 mvc-aaa - Keep Docker credentials safe.
mace 0.2.0 dockerr - Minimal Assembly Code Editor
hello-william 2.11 dockerpdyayy - GNU Hello, the "hello world" snap
hello-moose 2.10 dockerpdyayy - GNU Hello, the "hello world" snap
kata-containers 2.4.2 katacontainers✓ classic Build lightweight VMs that seamlessly plug into the containers ecosystem
etcd 3.4.22 canonical✓ - Resilient key-value store by CoreOS
stubb 0.4.0 circleci✓ - A Docker utility by CircleCI.
******
安装软件包
使用 Snap 安装包: snap install
~$ sudo snap install docker
******
docker 27.2.0 from Canonical✓ installed
查看软件信息: snap info
~$ sudo snap info docker
name: docker
summary: Docker container runtime
publisher: Canonical✓
store-url: https://snapcraft.io/docker
license: (Apache-2.0 AND MIT AND GPL-2.0)
description: |
Build and run container images with Docker.
**Usage**
* This build can only access files in the home directory. So Dockerfiles and all other files used
in commands like `docker build`, `docker save` and `docke
显示所有已安装信息
指令: snap list
~$ sudo snap list
名称 版本 修订版本 追踪 发布者 注记
core22 20241119 1722 latest/stable canonical✓ base
docker 27.2.0 2963 latest/stable canonical✓ -
snapd 2.66.1 23258 latest/stable canonical✓ snapd
显示最近的变更
指令: snap changes
~$ snap changes
ID 状态 生成 就绪 摘要
1 Done 今天 15:38 今天 15:38 Initialize system state
2 Error 今天 15:47 今天 15:47 安装 "docker" snap
3 Done 今天 15:47 今天 15:47 初始化设备
4 Error 今天 15:47 今天 15:47 安装 "docker" snap
5 Done 今天 15:48 今天 15:49 安装 "docker" snap
删除已安装软件
指令: snap remove
$ sudo snap remove docker
停止 snap "docker" 服务
停止 snap "docker" 服务
******
从系统中移除 snap "docker" (2963) 已删除 docker
以上便是本文的全部内容,感谢您的阅读。