Guix: 从二进制创建包

Lobsters Hottest 工具

摘要

使用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`,这将在后续文章中介绍。

相似文章

在 Linode 上部署 Guix 镜像

Lobsters Hottest

本文提供了一篇技术指南,关于直接在 Linode 云服务器上部署 Guix 系统镜像,包括用于系统配置的代码片段。

扩展 Guix

Lobsters Hottest

GNU Guix 官方博客介绍如何通过 `GUIX_EXTENSIONS_PATH` 编写和分发自定义 `guix` 扩展命令,并展示了新的基于 schema 版本的扩展加载机制,该机制支持编译后的 .go 文件以显著提升性能。

GuixPkgs:每个 Guix 包,作为 Nix flake

Lobsters Hottest

GuixPkgs 是一个项目,它将每个 GNU Guix 包以 Nix flake 的形式提供,使用户能够在单个 flake 中混合使用 Guix 和 Nixpkgs 包。它使用 guix-transfer 将 Guix 派生转换为 Nix 派生,并提供二进制缓存以避免完全重建 Guix 引导过程。