我正在尝试了解 Snap 是如何分发的。我理解软件包由snapcraft.yml文件。它们包含用于下载、验证和安装软件的 shell 命令。我的问题是这些命令实际上在哪里运行?在下载软件的人的计算机上还是在 Snap 服务器上?
当我这样做时,snap download <package-name>
我看到了一个.assert
和一个.snap
文件,但是没有snapcraft.yml
,所以看起来 snapcraft 可能更像是一个 Snap 服务器?
我担心的是,如果snapcraft.yml
有 SHA-256 哈希和 PGP 签名验证,这是否会发生在用户的计算机或服务器上——这可能会受到损害。
答案1
该
snapcraft.yaml
文件不包含 shell 命令。YAML 不是脚本;它是一种组织信息的方式。该文件在 snap 安装(和卸载)期间由系统的 snapd 读取。该
snapcraft.yaml
文件位于 /snap/$SNAP-NAME/$VERSION/snap/snapcraft.yaml。显然,必须安装 snap 才能让系统读取该文件。snap 的哈希和签名不是在 YAML 文件中完成的。它不是 Debian 控制文件。