【问题标题】:Build a nix package构建一个 nix 包
【发布时间】:2018-01-09 04:55:29
【问题描述】:

我正在尝试为 datomic 数据库构建一个 nix 包。

这是到目前为止的推导:

{ stdenv, fetchurl, unzip }:                                                                                                                                                                  

stdenv.mkDerivation rec {                                                                                                                                                                     
  name    = "datomic-${version}";                                                                                                                                                             
  version = "0.9.5561";                                                                                                                                                                       

  src = fetchurl {                                                                                                                                                                            
    url    = "https://my.datomic.com/downloads/free/${version}";                                                                                                                              
    sha256 = "145c3yx9ylmvvxmwgk2s14cdirxasdlglq3vs9qsnhyaz5jp1xjh";                                                                                                                          
  };                                                                                                                                                                                          
}                                                                                                                                                                                             

网址:

https://my.datomic.com/downloads/free/0.9.5561

是一个 zip 文件,没有 zip 扩展名,所以fetchurl 抛出以下错误:

unpacking source archive /nix/store/rrv926023hmbvcxc7r421mk1l0x1537c-0.9.5561
do not know how to unpack source archive /nix/store/rrv926023hmbvcxc7r421mk1l0x1537c-0.9.5561
builder for ‘/nix/store/bhmrgkjqbha5p5cf79xvqwkqwr3rfjfk-datomic-0.9.5561.drv’ failed with exit code 1

关于如何获取此源代码以及添加 *.zip 扩展名以便它可以自行解压的任何建议?

【问题讨论】:

    标签: nix nixos


    【解决方案1】:

    默认使用的通用构建器具有可配置的阶段 (source)。

    你可以看看unpack phase,在里面你可以指定一个解压下载源的命令(unpackCmd可能正是你想要的)。

    或者,您可以只指定fetchurl 的名称参数,并为下载的文件指定一个“*.zip”名称(请参阅name argument)。

    【讨论】:

    • src 变量似乎对上述链接文档中描述的通用构建器具有特殊含义。解包阶段希望它包含可解包内容的路径(无论是否开源)。
    【解决方案2】:

    nixpkgs 附带的通用构建器脚本似乎不知道如何处理您的下载。您可以尝试使用自定义构建器 shell 脚本。只需在version 之后写builder = ./builder.sh; 之类的东西,然后在builder.sh 中写一个shell 脚本。脚本应该是这样的:

    source $stdenv/setup
    
    unzip $src
    
    # more stuff
    

    您必须自己找出详细信息,一次修复一条错误消息。

    附: Datomic 不是开源的,所以我不会有一个名为 src 的变量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-18
      • 2022-08-20
      • 1970-01-01
      • 1970-01-01
      • 2021-10-11
      • 1970-01-01
      • 2021-10-01
      • 1970-01-01
      相关资源
      最近更新 更多