Next: , Previous: , Up: 贡献   [Contents][Index]


16.4 打包指导

这个GNU发行版正在开发的早期阶段,可能缺少一些你喜欢的软件。这个章节介绍你可以怎样帮助这个发行版成长。

自由软件通常以源代码包的形式分发,通常是包含完整代码的tar.gz包。添加软件包到这个发行版意味着两件事:添加描述如何构建包的配方和一系列依赖软件,以及添加配方之外的软件包元数据,如一段文字描述和证书信息。

在Guix里所有这些信息都包含在软件包定义里。软件包定义提供了软件包的高层视角。它们使用Scheme编程语言编写,事实上,对每个软件包我们都定义一个绑定到软件包定义的的变量,并且从模块(see 软件包模块)中导出那个变量。然而,深入的Scheme知识是创建软件包的前提条件。若要了解软件包的更多信息,see 定义软件包

一旦软件包定义准备好了,并且包存在Guix代码树的一个文件里,你可以用guix build (see 调用guix build)命令测试它。假设这个新软件包的名字叫做gnew,你可以在Guix构建树里运行这个命令(see 在安装之前运行Guix):

./pre-inst-env guix build gnew --keep-failed

使用--keep-failed参数会保留失败的构建树,这可以使调试构建错误更容易。--log-file也是一个调试时很有用的参数,它可以用来访问构建日志。

如果guix命令找不到这个软件包,那可能是因为源文件包含语法错误,或者缺少导出软件包的define-public语句。为了查找错误,你可以用Guile导入这个模块以了解这个错误的详情:

./pre-inst-env guile -c '(use-modules (gnu packages gnew))'

Once your package builds correctly, please send us a patch (see 提交补丁). Well, if you need help, we will be happy to help you too. Once the patch is committed in the Guix repository, the new package automatically gets built on the supported platforms by our continuous integration system.

用户可以通过运行guix pull命令获取最新的软件包定义(see 调用guix pull)。当ci.guix.gnu.org构建好这些软件包之后,安装这些软件包时会自动从服务器(see substitutes)上下载构建好的二进制包。唯一需要人工干预的地方是评审和应用代码补丁。