当您使用snap安装Linux软件包时,您可以告别依赖地狱和破坏其他工作应用程序。Snap包最初是为Ubuntu设计的,但是现在它们可以在各种Linux发行版上使用。
在过去,在Linux上安装应用程序可能是一种令人沮丧的经历。你会安装一些东西,却发现某个特定的库或其他依赖项丢失或过时。然后查找丢失的资源并安装它,结果发现另一个应用程序依赖于刚刚替换的库的版本。修复一个,破坏一个,重复。
通过更好的包管理系统,如apt、dnf和pacman,这一点得到了改进。但是,如果您需要安装同一个应用程序的不同版本,您仍然面临困难。或者,如果您使用的两个应用程序由于绑定到特定但不同版本的库而发生冲突。
解决这些问题的一个方法是应用程序打包和部署系统。时髦是其中比较流行的一种。它基于一个名为Click的打包和部署系统,这一点可以追溯到ubuntutouch计划。AppImage和FlatPack是您可能遇到的其他产品。
这些系统将应用程序以及任何依赖项和其他需求封装在一个压缩文件中。然后应用程序在一种小型容器中运行。它是沙盒,并与其他应用程序分离。与应用程序一起打包或需要的库和其他资源仅对其可用。
它们不是传统意义上的安装,因此它们不会对需要相同资源的不同版本的其他应用程序造成任何问题。您甚至可以安装和运行需要冲突库版本的应用程序,因为每个应用程序都在自己的沙盒中。
如果它们不是以通常的方式安装的,那么它们是如何处理的呢?嗯,单个包文件被下载、解压缩,并作为一个SquashFSvirtual文件系统装载。然后将它作为一个虚拟环境呈现给您。所有这些都发生在幕后。你所知道的只是你已经安装了一个应用程序,现在,你可以访问它了。
当然,因为每个包文件必须包含应用程序所需的所有资源,所以包文件可能很大。复制通常只安装一次的资源也很容易,比如MySQL或Apache。如果两个不同的snap应用程序需要相同的资源,那么它们各自会带来自己的拷贝。
不过,这是对安装简单性和消除资源冲突头痛问题的权衡。
Snappy是在Ubuntu16.04中引入的,所以如果您运行的是该版本或更高版本,您已经可以使用了。在我们的机器上,Snappy安装在Manjaro18.04上,但我们必须在Fedora31上安装它。
snap既是包文件的名称,也是用于与它们交互的命令。在幕后,如果您的计算机上还没有Snappy,snapd守护进程也是必须安装的包的名称。
要在Fedora上安装snapd,请键入以下命令:
sudo dnf install snapd如果需要在Manjaro上安装,请使用以下命令:
sudo pacman -Sy snapd sudo systemctl enable --now snapd.socket可以使用snap version命令查看snap客户机的版本、snap守护进程和软件系列号。Linux发行版的名称和发行版本以及内核版本也将为您显示。
键入以下内容:
snap version安装snap包是一个非常简单的过程。可以使用snap查找snap包,然后安装所需的snap包。
我们键入以下内容以查找并安装gimp图像编辑器:
snap find gimpsnap搜索匹配的搜索线索“gimp”并返回其结果。它会找到任何匹配或提到搜索词的东西。
要安装其中一个软件包,我们使用Name列中的值,如下所示:
sudo snap install gimp当它下载时,完成百分比数字上升,一个进度条从终端窗口的左侧悄悄走过。安装完成后,会出现一条消息(如下所示),告诉您安装了包。
可以使用df命令检查Linux计算机上配置的不同文件系统的容量和使用情况。如果我们将它的输出导入grep命令并搜索“gimp”,那么我们将隔离刚刚安装的包的条目。
我们键入以下内容:
df | grep gimp这向我们展示了snap包是像文件系统一样装载的。挂载点在snap目录中:/snap/gimp/252。“252”是这个版本的gimp的发行号。
相关:如何在Linux上使用grep命令
文件系统列为:/dev/loop18。循环设备文件用于将常规文件作为块设备进行访问。它们通常用于在磁盘映像中安装文件系统。在本例中,他们正在snap包中挂载SquashFS文件系统。“18”表示这是Linux计算机上使用的第18个/dev/loop设备文件。
我们可以使用df命令来快速检查。我们将使用–t(type)选项将输出仅限于SquashFS文件类型。
我们键入以下内容:
df -t squashfs将列出已装入的SquashFS文件系统。一个/dev/loop设备文件处理每一个,共有18个。
每个文件系统都安装在/snap目录中的一个目录中。但是,这并不意味着这台计算机上安装了18个不同的快照包。这是一个Ubuntu发行版,所以一些snap包是直接安装的,我们刚刚安装了另一个。
另外,安装snap时,它会安装一些核心snap包来处理其他snap包的需要。
我们可以使用snap list命令(如下所示)列出已安装的snap包:
snap list输出有点宽,所以清单的结尾如下所示。
以下是整个列表:
Name Version Rev Tracking Publisher Notes core 16-2.43.3 8689 stable canonical* core core18 20200124 1668 stable canonical* base gimp 2.10.18 252 stable snapcrafters - gnome-3-26-1604 3.26.0.20191114 98 stable/… canonical* - gnome-3-28-1804 3.28.0-16-g27c9498.27c9498 116 stable canonical* - gnome-calculator 3.34.1+git1.d34dc842 544 stable/… canonical* - gnome-characters v3.32.1+git3.b9120df 399 stable/… canonical* - gnome-logs 3.34.0 81 stable/… canonical* - gnome-system-monitor 3.32.1-3-g0ea89b4922 127 stable/… canonical* - gtk-common-themes 0.1-28-g1503258 1440 stable/… canonical* -如您所见,安装了10个snap包,而不是18个。然而,这10个包产生了18个SquashFS文件系统。表中的列是相当不言自明的,但这里有一些说明:
可以使用info选项获取快照包的描述。
为此,我们键入以下内容:
snap info gtk-common-themes我们可以看到软件包正在跟踪哪个通道,以及四个通道中每个通道的snap软件包中的软件版本。在大多数情况下,你应该保持在稳定的渠道。
snap软件包每天检查四次,以查看是否有更新版本的软件可从其监视的频道或“跟踪”频道获得。如果要更改snap软件包跟踪的频道,可以使用“刷新”和--channel选项。
为此,我们键入以下内容:
sudo snap refresh gtk-common-themes --channel=beta如果有新版本的软件可用,它会被安装,但这里不是这样。不过,snap包现在正在跟踪beta通道。新的beta版一发布,就会自动下载和升级。
您可以使用--list选项检查是否有更新可用于计算机上安装的任何快照包。
为此,我们键入以下内容:
sudo snap refresh --list如果您的计算机上的snap包正在跟踪的任何通道包含较新的软件版本,您将被告知。
如果有更新版本的软件可用,可以使用刷新选项(如下所示)手动强制刷新:
sudo snap refresh gtk-common-themes要卸载快照包,可以使用删除选项,如下所示:
sudo snap remove gimp使用snap包非常简单,但是我们已经编译了一些命令列表,这些命令可以帮助您:
... 相关:如何在Linux上安装Minecraft ...
...就是为您准备的。我们将简要详细地讨论损坏的软件包,如何检查系统是否包含损坏的软件包,以及如何正确地重新安装它们。 ...
...大多数软件都和你在其他发行版上看到的一样。突出的是如何将所有这些组件打包在一起。 ...
...动操作系统是从Linux衍生出来的。我们过去讨论过Android是如何基于开源组件的,Linux内核就是其中之一。很显然,如果两者如此接近,那么在Linux上运行Android应用程序应该相对容易。 ...
... 当我开始使用Linux时,Ubuntu和Fedora之间的区别似乎在于不同的主题以及编解码器是否易于安装。几年后,情况发生了变化。首先是Ubuntu软件中心。然后是团结。在这之后,人们开始...
... 你觉得在Linux上安装软件怎么样?它与其他操作系统相比如何?可以改进吗?分享你的想法,如果你有任何问题,不要犹豫问! ...
您可以做的不仅仅是使用Linux发行版浏览web。您会发现Linux发行版几乎可以配置为任何用途,包括一些针对程序员的发行版。 ...
...和linuxmint都使用相同的安装程序。这意味着如果你能想出如何安装一个,你就知道如何安装另一个。这种经历并不完全相同,但很接近。 ...
...2004年Ubuntu发布的时候,Linux可以在台式机和笔记本电脑上使用,但这并不是一个很好的体验。Canonical将Ubuntu称为“人类的Linux”,并增加了一些特性,使Linux更容易作为主要操作系统使用。这些特性包括易于安装的硬件驱动程序...
为Linux下载应用程序不再是以前的挑战。你必须知道如何从源文件为任何在Linux发行版的appstore或package manager中不可用的程序构建的日子一去不复返了。 ...