![snap 的源代码在哪里?](https://linux22.com/image/931335/snap%20%E7%9A%84%E6%BA%90%E4%BB%A3%E7%A0%81%E5%9C%A8%E5%93%AA%E9%87%8C%EF%BC%9F.png)
当我在 Ubuntu 20.10 上下载开源 snap 包时,我找不到它们的源代码,尽管它们是免费的。
谁能告诉我他们的源代码在哪里?
答案1
要查看 snap 的源代码(也就是它的构建方式),你可以下载 snap 并检查它。
例如,假设你想阅读gnome-system-monitor
snap 的源代码。你可以使用以下命令在当前目录中下载 snap:
sudo snap download gnome-system-monitor
此命令将下载两个文件,gnome-system-monitor_148.snap
和gnome-system-monitor_148.assert
(数字代表 snap 的版本,它可以与 不同148
)。
然后,打开 Nautilus 并转到下载文件的目录(即您运行上述命令的目录)。right-click文件.snap
,选择使用存档管理器打开它,然后snap
在打开的存档管理器窗口中导航到目录中。最后双击snapcraft.yaml
并manifest.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