snap 的源代码在哪里?

snap 的源代码在哪里?

当我在 Ubuntu 20.10 上下载开源 snap 包时,我找不到它们的源代码,尽管它们是免费的。

谁能告诉我他们的源代码在哪里?

答案1

要查看 snap 的源代码(也就是它的构建方式),你可以下载 snap 并检查它。

例如,假设你想阅读gnome-system-monitorsnap 的源代码。你可以使用以下命令在当前目录中下载 snap:

sudo snap download gnome-system-monitor

此命令将下载两个文件,gnome-system-monitor_148.snapgnome-system-monitor_148.assert(数字代表 snap 的版本,它可以与 不同148)。

然后,打开 Nautilus 并转到下载文件的目录(即您运行上述命令的目录)。right-click文件.snap,选择使用存档管理器打开它,然后snap在打开的存档管理器窗口中导航到目录中。最后双击snapcraft.yamlmanifest.yaml使用文本编辑器打开它们。这些文件将向您展示 snap 包是如何构建的。

您可以在本文中找到更多信息:如何验证 Snap 包的来源

答案2

正如 BeastOfCaerbannog 所述,您可以像这样下载 snap 文件:

mkdir <name>
cd <name>
snap download <name>

(注意:无需使用sudo ...,这只是当前目录中的下载。)

下载将在您的当前文件夹中保存两个文件: a.assert和 a .snap。文件名还包括版本。

.snap文件包含实际的二进制快照,其中包括一份包含源信息的清单。该文件是 SquashFS 文件系统中的一组压缩文件。要查看较新系统上的文件列表,您只需执行以下操作:

less <name>_<version>.snap

这样您就可以验证感兴趣的文件是否存在。

要实际检查文件,您需要挂载文件系统。mount确实需要sudo。我确信还有其他方法可以提取数据,但我发现这个方法很简单:

mkdir <name>.snap
sudo mount <name>_<version>.snap <name>.snap -t squashfs -o loop

现在,里面的所有文件都<name>.snap可以像磁盘上的任何文件一样访问(当然,除了它们是只读的)。 和manifest可以snapcraft这样读取:

less docker.snap/snap/manifest.yaml
less docker.snap/snap/snapcraft.yaml

清单似乎包含指向git该项目专门使用的链接<name>。您可以在那里找到源代码。

例如,对于docker,我发现了这些:

source: https://github.com/moby/moby.git
source: https://github.com/containerd/containerd.git
source: https://github.com/opencontainers/runc.git
source: https://github.com/NVIDIA/nvidia-container-toolkit.git
source: https://github.com/NVIDIA/libnvidia-container.git
source: https://github.com/docker/libnetwork.git
source: https://github.com/krallin/tini.git
source: https://github.com/docker/cli.git
source: https://github.com/docker/buildx.git
source: https://github.com/docker/compose.git

相关内容