Henry
发布于 2024-12-28 / 12 阅读
0
0

Ubuntu - 安装和使用 Snap Package Manager

简介

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

以上便是本文的全部内容,感谢您的阅读。



评论