在离线计算机上安装.snap应用程序是否可行?

在DEB软件包中,无法在离线环境(没有任何互联网访问的计算机)中安装应用程序。这是因为依赖关系。根据OMG!Ubuntu的说法,Snap软件包可以包含应用程序二进制文件以及运行所需的任何依赖项。
这是否意味着任何.snap应用程序都可以在离线计算机上安装(就像在MacOSX中的.dmg文件一样)?因为不需要从源获取任何依赖项。

1什么?当然可以离线安装.deb软件包。 - David Foerster
2个回答

在进行其他快照的离线安装之前,似乎您首先需要下载并安装ubuntu-core快照。对我来说,这很有效:

在联机的Ubuntu系统上运行以下命令:

snap download ubuntu-core
snap download somePackage

这将把以下文件放入当前目录中:

ubuntu-core_1797.assert
ubuntu-core_1797.snap
somePackage.assert
somePackage.snap
将这些文件复制到离线系统中,然后从复制的目录中安装它们:
sudo snap ack ubuntu-core_1797.assert
sudo snap install ubuntu-core_1797.snap
sudo snap ack somePackage.assert
sudo snap install somePackage.snap
这样应该解决@lane遇到的问题,即在安装本地的.snap文件时尝试连接到互联网。

所以我发现一些Snap软件包在安装过程中仍然尝试连接到互联网。对于quake-shareware_5.snap,它显示“确保"quake-share"的先决条件可用”。这将在离线机器上超时。 - Seth
@Seth 请检查是否已安装 core.snap - artificerpi
只是一个提醒,也许你还需要执行 snap download core - milkice

首先,你确实可以离线安装deb包。
$ sudo dpkg -i <deb>

然而,你说得对,它并没有考虑到deb的依赖关系——实际上,为了成功安装它,你需要离线拥有deb和所有它的依赖项。
$ sudo dpkg -i <deb> <dependency1> <dependency2> ...

所以,是的,离线安装一个snap非常简单,你只需要拥有这个单独的snap文件(因为你知道,它包含了它的依赖项)。
$ sudo snap install path/to/snap

1这还是现在的情况吗?当我尝试在我们公司防火墙后面的Ubuntu 16.04上安装一个本地构建的hello_world snap副本时,我遇到了错误:无法安装snap文件:获取https://search.apps.ubuntu.com/api/v1/snaps/details/core?channel=stable&fields=anon_download_url%2Carchitecture%2Cchannel%2Cdownload_sha3_384%2Csummary%2Cdescription%2Cdeltas%2Cbinary_filesize%2Cdownload_url`...`%2Cconfinement时出错:拨号tcp 162.213.33.196:443: getsockopt:连接被拒绝。它似乎坚持要在线进行某些操作... - lane
看起来它正在尝试获取快照。你具体运行了什么命令?是 snap install hello-world 吗?还是 snap install /path/to/my/hello-world - kyrofa
1你还可以尝试使用--dangerous选项,它可能会检查存储中的断言。 - kyrofa
4这是使用sudo snap install --dangerous ./hello_2.10_amd64.snap进行安装的。 - lane