工控智汇

工控智汇

Ubuntu Snap软件系统 一 初级使用指南

admin 152 71

Snap软件是把一个或多个应用程序的捆绑起来的程序包,它们自成一体、安装简单、安全、跨平台且无依赖性,能够自动更新,通常是在一个封闭的、基于事务的环境中运行,并且兼容于许多不同的Linux发行版。除了易于安装、易于维护和易于升级之外,安全性和稳健性也是它们的主要特点。Snap软件可从SnapStore(拥有数百万用户的公共应用程序商店)中查找并安装。

本文主要介绍在中如何使用Snap功能,如何安装和更新,以及如何备份和删除Snap软件。

检查Snap是否安装

Snap可通过图形软件包管理器(如Ubuntu软件中心)进行安装和删除,但大多数高级功能只能通过Linux命令行实现。UbuntuLinux系统默认支持snap,运行snap--version命令查看详细情况:

$+22.04+22.04
列出已安装的snap软件

在系统中,Snap与一些Snap应用一起默认安装,使用snaplist命令列出这些Snap软件:

$snaplistNameVersionRevTrackingPublisherNotescore22202311231033latest/stablecanonical✓/stablemozilla✓-/stablecanonical✓snapd

命令输出中,Version和Rev(ersion)列分别显示了Snap软件的版本信息:

Version:开发人员指定的打包软件版本。

Reversion:上传snap文件时商店(store)分配的序列号。

Version是开发人员分配给Snap软件的版本名称或编号,用以标识Snap提供给用户的一些具体功能。Rev是商店自动分配的一个编号,目的是在Snap系统中为Snap软件版本分配唯一标识。

查找Snap软件

目前,Spotify、Slack和Chromium等许多流行应用程序都有snap软件包。如果需要查找最新的Snap软件可以通过SnapStore在线搜索功能进行查找,在关键词一栏中输入如"Spotify"、"音乐"或"数学"搜索。

例如:要搜索名称或描述中包含"媒体播放器"的Snap软件,可以在shell中输入snapfind"mediaplayer"命令:

$snapfind"mediaplayer"✓-Theultimatemediaplayer.

在上述命令输出结果中,videolan旁的✓表示Snap发布者已通过验证。通过验证的发布者(指的是机构、基金会和公司)在制作和维护高质量软件包方面值得信赖。

Snap软件类别

输入不带任何参数的snapfind会返回一批系统推荐的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软件

使用snapinfo命令可以轻松查找特定Snap软件的更多详细信息。这些详细信息包括Snap的作用、发布者、提供的命令等。

snapinfo命令输出的最后部分列出了Snap软件版本分支:

channels:latest/stable:3.0.192023-10-13(3721)336MB-latest/candidate:3.0.192023-10-02(3721)336MB-latest/beta:3.0.20-27-g795b1bc62b2023-12-13(3862)336MB-latest/edge:4.0.0-dev-26928-g9bc7ded0f02023-12-13(3863)692MB-installed:3.0.19(3721)336MB-

版本分支声明了新的snap软件版本动态,默认安装的latest/stable版本号。我们可以选择从不同的分支安装,从而实现测试新功能或安装应用程序的旧版本的目的。

安装Snap软件

输入snapinstall,输入需要安装的Snap软件名称snap-name,开始安装:

sudosnapinstallvlc

首次运行安装时,一个或多个依赖项可能会与Snap软件一起自动安装。通过键盘输入“ctrl+c”可以安全地取消Snap安装操作,Snap系统将很干净地回滚到软件安装之前的状态。

我们还可以使用分支选项指定需要安装的软件版本分支:

sudosnapinstall--channel=edgevlc

安装后,可通过以下方式更改监控版本分支最新动态:

sudosnapswitch--channel=stablevlc
运行Snap应用程序和命令

一般情况下,绝大多数Snap应用程序都能通过命令行或桌面启动器直接运行。如果直接执行命令不起作用,可以使用snap运行命令:

snaprunvlc

已安装的Snap应用程序执行文件存放在/snap/bin目录,它也会被添加到系统的$PATH环境变量中。

更新已安装的Snap软件

Snap软件会自动更新,如果需要手动检查更新,可以使用以下命令:

sudosnaprefreshvlc

上述操作将检查Snap跟踪的默认版本分支,如果存在更新版本的软件,会立即下载安装。

改变系统默认跟踪的版本分支同时安装最新版本的软件:

sudosnaprefresh--channel=betavlc

默认情况下,在系统监测的版本分支中上线的新软件版本将在6小时以内自动安装。当然该配置选项可以手动调整,也可以使用--hold选项禁用。

暂停或停止自动更新

使用snaprefresh--hold命令可无限期或在指定时间内暂停或推迟系统中单个或所有Snap软件的更新。

snaprefresh--hold=durationsnap1snap2

时间长度单位可以是秒(s)、分(m)或小时(h),也可以是这些单位的组合。如果要无限期推迟更新,也可以使用"forever"参数。如果未指定持续时间,则默认为永久。

$snaprefresh--hold=24hfirefoxGeneralrefreshesof"firefox"helduntil2023-10-26T14:10:53+01:00
恢复到较早版本

使用snaprevert命令可以将Snap软件还原到以前较早的版本。默认情况下,它会尝试恢复到前一个版本:

$

可以指定可选的--revision参数来限定恢复到某一个特定版本:

snaprevertvlc--revision500

此操作将还原Snap软件旧版本()和与软件相关的配置数据。如果先前使用的版本来自不同的分支,则将安装该分支版本,但系统默认监测的版本分支不会改变。用户数据(如由Snap软件生成并存储在数据库中的数据)通常存储在公共目录中,不会被还原。

Snap软件不会自动更新到恢复之前的版本,snaprefresh命令的输出将继续显示"所有Snap均为最新"。当发布者提供新的软件版本时,已还原的Snap软件将自动更新。此外,无论软件版本之前是否已被还原,如果在snaprefresh命令中指定了Snap名称snap-name,那么该Snap会立即更新:

$✓-✓disabled$sudosnaprefreshAllsnapsuptodate.$✓refreshed

上述命令输出的备注栏中显示Snap软件被还原之后,之前使用的最新软件版本属于“禁用”状态。

连接各类功能接口

Snap通过功能接口控制Snap软件访问系统资源权限,从而控制Snap应用程序在系统中能做什么和不能做什么。功能接口常用于设定Snap软件访问网络摄像头、录音和网络设备或读写$HOME目录和远程存储设备的权限,而Snap软件需要或能够提供哪些接口功能,取决于Snap软件的类型和自身需求。

要查看某个Snap软件正在使用哪些功能接口,以及它可以使用但没有使用哪些接口,可以输入命令snapconnectionssnap-name进行查看:

$snapconnectionsvlcInterfacePlugSlotNotesaudio-playbackvlc:audio-playback:audio-playback-audio-recordvlc:audio-record--cameravlc:camera--desktopvlc:desktop:desktop-homevlc:home:home-()

Slot是接口功能的提供者,而Plug是接口功能使用者,一个Slot可支持多个Plug连接。在上述命令输出中,我们发现摄像机接口没有连接,因为其Slot是空的。这意味着VLC无法访问任何已连接的摄像机。snap-name:interface-name语法表示某Snap软件的某个功能接口。如果没有snap-name,例如:audio-playback,则该组件将直接连接到系统接口。

如果要让VLC软件可以访问摄像机,可以使用snapconnect命令连接:

snapconnectvlc:camera
Snap软件存储数据的位置

Linux系统对大多数Snap软件的使用环境进行严格限制,它们的执行环境和用户数据都与系统隔开。如果Snap软件需要用户访问文件,可以通过自动保存和加载用户主目录中的文件来实现。

可以通过snapconnectionssnap-name命令的输出中看到是否使用了home功能接口:

$snapconnectionsnethackInterfacePlugSlotNoteshomenethack: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/目录中。

软件快照可通过snapsave命令手动生成,也可在软件卸载时自动生成。软件快照可用于备份Snap软件的状态、将Snap软件恢复到先前的某一状态,以及将更新后的snapd软件恢复到先前的状态。

snapsave命令为所有已安装的Snap创建快照,如果单独指定某一软件,则单独为其创建软件快照:

$~

restore命令就是用指定快照中的相应数据替换当前的用户、系统和配置数据:

$sudosnaprestore30Restoredsnapshotubuntulinuxsnap#