Ubuntu Snap软件系统 一 初级使用指南
bigegpt 2024-10-11 10:57 10 浏览
Snap软件是把一个或多个应用程序的捆绑起来的程序包,它们自成一体、安装简单、安全、跨平台且无依赖性,能够自动更新,通常是在一个封闭的、基于事务的环境中运行,并且兼容于许多不同的Linux发行版。除了易于安装、易于维护和易于升级之外,安全性和稳健性也是它们的主要特点。Snap软件可从 Snap Store(拥有数百万用户的公共应用程序商店)中查找并安装。
本文主要介绍在Ubuntu22.04中如何使用Snap功能,如何安装和更新,以及如何备份和删除Snap软件。
检查Snap是否安装
Snap可通过图形软件包管理器(如 Ubuntu 软件中心)进行安装和删除,但大多数高级功能只能通过 Linux 命令行实现。Ubuntu Linux系统默认支持 snap,运行 snap --version命令查看详细情况:
$ snap --version
snap 2.61.3+22.04
snapd 2.61.3+22.04
series 16
ubuntu 22.04
kernel 6.5.0-26-generic
列出已安装的snap软件
在Ubuntu22.04 系统中,Snap与一些 Snap应用一起默认安装,使用 snap list 命令列出这些 Snap软件:
$ snap list
Name Version Rev Tracking Publisher Notes
core22 20231123 1033 latest/stable canonical? base
firefox 120.0.1-1 3504 latest/stable mozilla? -
snapd 2.60.4 20290 latest/stable canonical? snapd
命令输出中,Version和Rev(ersion)列分别显示了Snap软件的版本信息:
- Version:开发人员指定的打包软件版本。
- Reversion:上传snap文件时商店(store)分配的序列号。
Version是开发人员分配给Snap软件的版本名称或编号,用以标识Snap提供给用户的一些具体功能。Rev是商店自动分配的一个编号,目的是在Snap系统中为Snap软件版本分配唯一标识。
查找Snap软件
目前,Spotify 、Slack 和 Chromium等许多流行应用程序都有snap软件包。如果需要查找最新的Snap软件可以通过Snap Store在线搜索功能进行查找,在关键词一栏中输入如 "Spotify"、"音乐 "或 "数学"搜索。
例如:要搜索名称或描述中包含 "媒体播放器 "的 Snap软件,可以在shell中输入 snap find "media player"命令:
$ snap find "media player"
Name Version Developer Notes Summary
vlc 3.0.4 videolan? - The ultimate media player.
在上述命令输出结果中,videolan 旁的?表示Snap发布者已通过验证。通过验证的发布者(指的是机构、基金会和公司)在制作和维护高质量软件包方面值得信赖。
Snap软件类别
输入不带任何参数的 snap find 会返回一批系统推荐的Snap软件,可以通过增加“ --section= 参数” 来明确列出某一种类别的Snap软件。以下是一些常见类别参数:
art-and-design | books-and-reference | development | devices-and-iot |
education | entertainment | featured | finance |
games | health-and-fitness | music-and-audio | news-and-weather |
personalisation | photo-and-video | productivity | science |
security | server-and-cloud | social | utilities |
全面了解Snap软件
使用 snap info 命令可以轻松查找特定Snap软件的更多详细信息。这些详细信息包括Snap的作用、发布者、提供的命令等。
snap info 命令输出的最后部分列出了Snap软件版本分支:
channels:
latest/stable: 3.0.19 2023-10-13 (3721) 336MB -
latest/candidate: 3.0.19 2023-10-02 (3721) 336MB -
latest/beta: 3.0.20-27-g795b1bc62b 2023-12-13 (3862) 336MB -
latest/edge: 4.0.0-dev-26928-g9bc7ded0f0 2023-12-13 (3863) 692MB -
installed: 3.0.19 (3721) 336MB -
版本分支声明了新的 snap 软件版本动态,默认安装的latest/stable版本号。我们可以选择从不同的分支安装,从而实现测试新功能或安装应用程序的旧版本的目的。
安装Snap软件
- 输入 snap install ,输入需要安装的Snap软件名称<snap-name>,开始安装:
sudo snap install vlc
首次运行安装时,一个或多个依赖项可能会与Snap软件一起自动安装。通过键盘输入“ ctrl+c” 可以安全地取消Snap安装操作,Snap系统将很干净地回滚到软件安装之前的状态。
- 我们还可以使用分支选项指定需要安装的软件版本分支:
sudo snap install --channel=edge vlc
安装后,可通过以下方式更改监控版本分支最新动态:
sudo snap switch --channel=stable vlc
运行Snap应用程序和命令
一般情况下,绝大多数Snap应用程序都能通过命令行或桌面启动器直接运行。如果直接执行命令不起作用,可以使用snap运行命令:
snap run vlc
已安装的Snap应用程序执行文件存放在 /snap/bin目录,它也会被添加到系统的 $PATH环境变量中。
更新已安装的Snap软件
- Snap软件会自动更新,如果需要手动检查更新,可以使用以下命令:
sudo snap refresh vlc
上述操作将检查Snap跟踪的默认版本分支,如果存在更新版本的软件,会立即下载安装。
- 改变系统默认跟踪的版本分支同时安装最新版本的软件:
sudo snap refresh --channel=beta vlc
默认情况下,在系统监测的版本分支中上线的新软件版本将在6小时以内自动安装。当然该配置选项可以手动调整,也可以使用 --hold 选项禁用。
暂停或停止自动更新
使用 snap refresh --hold 命令可无限期或在指定时间内暂停或推迟系统中单个或所有Snap软件的更新。
snap refresh --hold=<duration> <snap1> <snap2>...
时间长度单位可以是秒 (s)、分 (m) 或小时 (h),也可以是这些单位的组合。如果要无限期推迟更新,也可以使用 "forever" 参数。如果未指定持续时间,则默认为永久。
$ snap refresh --hold=24h firefox
General refreshes of "firefox" held until 2023-10-26T14:10:53+01:00
恢复到较早版本
- 使用 snap revert 命令可以将Snap软件还原到以前较早的版本。默认情况下,它会尝试恢复到前一个版本:
$ sudo snap revert vlc
vlc reverted to 3.0.5-1
- 可以指定可选的 --revision 参数来限定恢复到某一个特定版本:
snap revert vlc --revision 500
此操作将还原Snap软件旧版本(Rev. 500)和与软件相关的配置数据。如果先前使用的版本来自不同的分支,则将安装该分支版本,但系统默认监测的版本分支不会改变。用户数据(如由Snap软件生成并存储在数据库中的数据)通常存储在公共目录中,不会被还原。
- Snap软件不会自动更新到恢复之前的版本,snap refresh 命令的输出将继续显示 "所有Snap均为最新"。当发布者提供新的软件版本时,已还原的Snap软件将自动更新。此外,无论软件版本之前是否已被还原,如果在snap refresh命令中指定了Snap名称<snap-name>,那么该Snap会立即更新:
$ snap list --all vlc
Name Version Rev Tracking Publisher Notes
vlc 3.0.5-1 768 stable videolan? -
vlc 3.0.6 770 stable videolan? disabled
$ sudo snap refresh
All snaps up to date.
$ sudo snap refresh vlc
vlc 3.0.6 from VideoLAN? refreshed
上述命令输出的备注栏中显示Snap软件被还原之后,之前使用的最新软件版本属于“禁用”状态。
连接各类功能接口
Snap通过功能接口控制Snap软件访问系统资源权限,从而控制Snap应用程序在系统中能做什么和不能做什么。功能接口常用于设定Snap软件访问网络摄像头、录音和网络设备或读写 $HOME 目录和远程存储设备的权限,而Snap软件需要或能够提供哪些接口功能,取决于Snap软件的类型和自身需求。
- 要查看某个Snap软件正在使用哪些功能接口,以及它可以使用但没有使用哪些接口,可以输入命令 snap connections <snap-name> 进行查看:
$ snap connections vlc
Interface Plug Slot Notes
audio-playback vlc:audio-playback :audio-playback -
audio-record vlc:audio-record - -
camera vlc:camera - -
desktop vlc:desktop :desktop -
home vlc:home :home -
(...)
Slot是接口功能的提供者,而Plug是接口功能使用者,一个Slot可支持多个Plug连接。在上述命令输出中,我们发现摄像机接口没有连接,因为其Slot是空的。这意味着VLC无法访问任何已连接的摄像机。<snap-name>:<interface-name> 语法表示某Snap软件的某个功能接口。如果没有<snap-name>,例如 :audio-playback,则该组件将直接连接到系统接口。
如果要让VLC软件可以访问摄像机,可以使用 snap connect 命令连接:
snap connect vlc:camera
从上图中 snap connections vlc 命令的输出内容可以看到,VLC可以访问用户的/home目录,因为 vlc:home 接口连接到了系统的 $HOME 目录。这是一种自动连接,当某个Snap软件需要一些基本存储功能(如 VLC 访问个人视频和音频文件)时,Snap软件就会自动建立这种连接。
Snap软件存储数据的位置
Linux系统对大多数 Snap软件的使用环境进行严格限制,它们的执行环境和用户数据都与系统隔开。如果Snap软件需要用户访问文件,可以通过自动保存和加载用户主目录中的文件来实现。
可以通过 snap connections <snap-name> 命令的输出中看到是否使用了home功能接口:
$ snap connections nethack
Interface Plug Slot Notes
home nethack:home :home -
当然无论Snap软件是否自动连接了hom功能接口,Snap软件都可以在 $HOME/snap/<snap-name>目录中存储用户数据,如数据库或配置文件。目前,Snap软件在自己目录中的存储数据的方式有两种:
- 用户数据只保存于某一特定版本中。Snap软件的数据存储在以软件修订版名称命名的数字目录中,如 55 或 56等。该软件版本更新后,用户数据通常会从旧版本目录复制到新版本目录里,因此如果软件从一个版本还原到另一个版本,就能全部恢复前一个版本的用户数据。$HOME/snap/<snap-name>目录中还包含一个 “current” 的符号链接,它用于指向当前激活的Snap 软件版本目录。
- 用户数据可以在多个软件版本共享使用。在不同的软件版本之间实现用户数据共享,用户数据存储在名为 “common” 的目录中,目录中包含图像、音频缓存和数据库,这些数据不会在不同软件版本间复制。
创建和恢复Snap软件快照
Snapshot(软件快照)是snapd服务程序为系统中一个或多个Snap软件存储的用户、系统和配置数据副本,Snap软件存放在 $HOME/snap/<snap-name> 和 /var/snap/<snap-name> 目录中的数据文件的快照一般都存储在 /var/lib/snapd/snapshots/目录中。
软件快照可通过 snap save 命令手动生成,也可在软件卸载时自动生成。软件快照可用于备份Snap软件的状态、将Snap软件恢复到先前的某一状态,以及将更新后的snapd软件恢复到先前的状态。
- snap save 命令为所有已安装的Snap创建快照,如果单独指定某一软件,则单独为其创建软件快照:
$ sudo snap save
Set Snap Age Version Rev Size Notes
30 core 1.00s 16-2.37~pre1 6229 250B -
30 core18 886ms 18 543 123B -
30 go 483ms 1.10.7 3092 387B -
30 vlc 529ms 3.0.6 770 882kB -
- restore 命令就是用指定快照中的相应数据替换当前的用户、系统和配置数据:
$ sudo snap restore 30
Restored snapshot #30.
默认情况下,该命令会还原快照中的所有用户数据。如果只需还原某几个Snap软件数据,可以在命令行后边的一一列出<snap-name1><snap-name2> ...;还可以使用 --users=<usernames> 参数,还原特定用户的数据。目前,还不能通过snap restore 命令排除某一特定snap软件的系统和配置数据。
移除Snap软件
- 要从系统中删除Snap软件及其内部用户、系统和配置数据,可以使用以下删除命令:
$ sudo snap remove vlc
vlc removed
添加 --no-wait 选项可立即返回命令提示符,移除程序将在后台运行。
默认情况下,Snap软件的所有版本都将移除。要移除特定软件版本,在移除命令中添加 --revision=<revision-number> 参数。
在Snap软件被移除之前(Ubuntu Core 系统软件除外),程序的内部用户、系统和配置数据会自动保存为软件快照(需要snapd 2.39+),保留期限为31天。
- 要在不生成快照的情况下移除Snap软件,可以使用 --purge 参数:
$ sudo snap remove vlc --purge
vlc removed
相关推荐
- 当Frida来“敲”门(frida是什么)
-
0x1渗透测试瓶颈目前,碰到越来越多的大客户都会将核心资产业务集中在统一的APP上,或者对自己比较重要的APP,如自己的主业务,办公APP进行加壳,流量加密,投入了很多精力在移动端的防护上。而现在挖...
- 服务端性能测试实战3-性能测试脚本开发
-
前言在前面的两篇文章中,我们分别介绍了性能测试的理论知识以及性能测试计划制定,本篇文章将重点介绍性能测试脚本开发。脚本开发将分为两个阶段:阶段一:了解各个接口的入参、出参,使用Python代码模拟前端...
- Springboot整合Apache Ftpserver拓展功能及业务讲解(三)
-
今日分享每天分享技术实战干货,技术在于积累和收藏,希望可以帮助到您,同时也希望获得您的支持和关注。架构开源地址:https://gitee.com/msxyspringboot整合Ftpserver参...
- Linux和Windows下:Python Crypto模块安装方式区别
-
一、Linux环境下:fromCrypto.SignatureimportPKCS1_v1_5如果导包报错:ImportError:Nomodulenamed'Crypt...
- Python 3 加密简介(python des加密解密)
-
Python3的标准库中是没多少用来解决加密的,不过却有用于处理哈希的库。在这里我们会对其进行一个简单的介绍,但重点会放在两个第三方的软件包:PyCrypto和cryptography上,我...
- 怎样从零开始编译一个魔兽世界开源服务端Windows
-
第二章:编译和安装我是艾西,上期我们讲述到编译一个魔兽世界开源服务端环境准备,那么今天跟大家聊聊怎么编译和安装我们直接进入正题(上一章没有看到的小伙伴可以点我主页查看)编译服务端:在D盘新建一个文件夹...
- 附1-Conda部署安装及基本使用(conda安装教程)
-
Windows环境安装安装介质下载下载地址:https://www.anaconda.com/products/individual安装Anaconda安装时,选择自定义安装,选择自定义安装路径:配置...
- 如何配置全世界最小的 MySQL 服务器
-
配置全世界最小的MySQL服务器——如何在一块IntelEdison为控制板上安装一个MySQL服务器。介绍在我最近的一篇博文中,物联网,消息以及MySQL,我展示了如果Partic...
- 如何使用Github Action来自动化编译PolarDB-PG数据库
-
随着PolarDB在国产数据库领域荣膺桂冠并持续获得广泛认可,越来越多的学生和技术爱好者开始关注并涉足这款由阿里巴巴集团倾力打造且性能卓越的关系型云原生数据库。有很多同学想要上手尝试,却卡在了编译数据...
- 面向NDK开发者的Android 7.0变更(ndk android.mk)
-
订阅Google官方微信公众号:谷歌开发者。与谷歌一起创造未来!受Android平台其他改进的影响,为了方便加载本机代码,AndroidM和N中的动态链接器对编写整洁且跨平台兼容的本机...
- 信创改造--人大金仓(Kingbase)数据库安装、备份恢复的问题纪要
-
问题一:在安装KingbaseES时,安装用户对于安装路径需有“读”、“写”、“执行”的权限。在Linux系统中,需要以非root用户执行安装程序,且该用户要有标准的home目录,您可...
- OpenSSH 安全漏洞,修补操作一手掌握
-
1.漏洞概述近日,国家信息安全漏洞库(CNNVD)收到关于OpenSSH安全漏洞(CNNVD-202407-017、CVE-2024-6387)情况的报送。攻击者可以利用该漏洞在无需认证的情况下,通...
- Linux:lsof命令详解(linux lsof命令详解)
-
介绍欢迎来到这篇博客。在这篇博客中,我们将学习Unix/Linux系统上的lsof命令行工具。命令行工具是您使用CLI(命令行界面)而不是GUI(图形用户界面)运行的程序或工具。lsoflsof代表&...
- 幻隐说固态第一期:固态硬盘接口类别
-
前排声明所有信息来源于网络收集,如有错误请评论区指出更正。废话不多说,目前固态硬盘接口按速度由慢到快分有这几类:SATA、mSATA、SATAExpress、PCI-E、m.2、u.2。下面我们来...
- 新品轰炸 影驰SSD多款产品登Computex
-
分享泡泡网SSD固态硬盘频道6月6日台北电脑展作为全球第二、亚洲最大的3C/IT产业链专业展,吸引了众多IT厂商和全球各地媒体的热烈关注,全球存储新势力—影驰,也积极参与其中,为广大玩家朋友带来了...
- 一周热门
- 最近发表
-
- 当Frida来“敲”门(frida是什么)
- 服务端性能测试实战3-性能测试脚本开发
- Springboot整合Apache Ftpserver拓展功能及业务讲解(三)
- Linux和Windows下:Python Crypto模块安装方式区别
- Python 3 加密简介(python des加密解密)
- 怎样从零开始编译一个魔兽世界开源服务端Windows
- 附1-Conda部署安装及基本使用(conda安装教程)
- 如何配置全世界最小的 MySQL 服务器
- 如何使用Github Action来自动化编译PolarDB-PG数据库
- 面向NDK开发者的Android 7.0变更(ndk android.mk)
- 标签列表
-
- mybatiscollection (79)
- mqtt服务器 (88)
- keyerror (78)
- c#map (65)
- resize函数 (64)
- xftp6 (83)
- bt搜索 (75)
- c#var (76)
- mybatis大于等于 (64)
- xcode-select (66)
- mysql授权 (74)
- 下载测试 (70)
- linuxlink (65)
- pythonwget (67)
- androidinclude (65)
- libcrypto.so (74)
- logstashinput (65)
- hadoop端口 (65)
- vue阻止冒泡 (67)
- jquery跨域 (68)
- php写入文件 (73)
- kafkatools (66)
- mysql导出数据库 (66)
- jquery鼠标移入移出 (71)
- 取小数点后两位的函数 (73)