Guix: 从二进制创建包
摘要
使用copy-build-system从二进制创建Guix包的指南,解释如何设置安装计划。
<p><a href="https://lobste.rs/s/rvtn4v/guix_creating_package_from_binary">评论</a></p>
查看缓存全文
缓存时间: 2026/07/16 09:55
# Guix:从二进制包创建包
来源:https://aloysberger.com/posts/guix-packaging-a-binary-as-a-guix-beginner.html
我们现在有了元数据和源码。最后缺失的部分是构建说明。Guix 内置了多个构建系统(https://guix.gnu.org/manual/1.5.0/en/html_node/Build-Systems.html)来应对不同场景。例如,`gnu build system` 是为遵循 `GNU coding standard` 的项目设计的。你还会看到许多其他构建系统,比如 node、zig 或 golang。每个构建系统都暴露了 `arguments`,供你根据需要定制构建流程。`package` 记录还可以包含 `inputs`,用于指定包的构建时或运行时依赖。我们的情况很简单,包已经构建好,没有依赖关系。我们只需将可执行文件复制到正确的位置。Guix 为此提供了一个构建系统:`copy-build-system`,它只暴露一个参数:`install-plan`。`install-plan` 参数用于指示文件复制到何处。在我们的用例中,我们只需将二进制文件复制到包的 `/bin` 目录。
```
(build-system copy-build-system)
(arguments
(list #:install-plan
#~'(("caddy" "bin/"))))
```
请注意,该二进制文件不会安装到用户或根目录的二进制文件夹中。它将安装到 store 中,路径为 `/gnu/store/<\*ENTITY\*>…-caddy-2.11.4/bin/caddy`。要使其对你的用户可用,你需要将其添加为用户包、系统包或包含在某个服务中。在本例中,我打算将其用于我的 `caddy-service`,这将在后续文章中介绍。
相似文章
GuixPkgs:每个 Guix 包,作为 Nix flake
GuixPkgs 是一个项目,它将每个 GNU Guix 包以 Nix flake 的形式提供,使用户能够在单个 flake 中混合使用 Guix 和 Nixpkgs 包。它使用 guix-transfer 将 Guix 派生转换为 Nix 派生,并提供二进制缓存以避免完全重建 Guix 引导过程。
Guix Nix 的怪异融合:在 Nix 中利用 Guix 派生
一项技术探索,展示了 Nix 如何构建 Guix 派生项,强调了共享底层“输入输出机”架构以及跨生态系统互操作的可能性。
Nix Flakes 及其在 Guix 中的对应物
详细比较 Nix Flakes 与 Guix 包管理系统中的对应物,涵盖依赖声明、锁定、纯净性、输出、开发环境和系统配置。
Jinx:用于引导操作系统发行版的元构建系统
Jinx是一个用于引导操作系统发行版的元构建系统,其设计灵感来源于xbstrap以及Void Linux和Arch Linux的包构建系统。
无国界的时间旅行
本文探讨了 GNU Guix 的 `time-machine` 和 `pull` 命令的一项新功能,该功能支持通过单行命令从频道部署软件,同时解决了下载并执行不受信任代码所引发的安全问题。