代码之家  ›  专栏  ›  技术社区  ›  nicolas

硬编码bin路径和NixOS

  •  2
  • nicolas  · 技术社区  · 9 年前

    当我尝试在NixOS 15.09上手动安装一些软件时,我得到( sh -x 获取执行日志):

    [nix-shell:/tmp/nix-shell-es/EventStore-oss-v3.5.0-src]$ sh -x scripts/build-js1/build-js1-linux.sh werror=no
    
    ...
    + CXXFLAGS=-fPIC
    + make x64.release werror=no
    PYTHONPATH="/tmp/nix-shell-es/EventStore-oss-v3.5.0-src/scripts/build-js1/v8/tools/generate_shim_headers:" \
    GYP_GENERATORS=make \
    build/gyp/gyp --generator-output="out" build/all.gyp \
                  -Ibuild/standalone.gypi --depth=. \
                  -Dv8_target_arch=x64 \
                  -Dv8_optimized_debug=0 \
                  -S.x64.release  -Dv8_enable_backtrace=1 -Dwerror='' -Darm_fpu=default -Darm_float_abi=default
    /bin/sh: build/gyp/gyp: /bin/bash: bad interpreter: No such file or directory
    Makefile:389: recipe for target 'out/Makefile.x64.release' failed
    make: *** [out/Makefile.x64.release] Error 126
    

    实际上,/bin中没有bash程序/

    [nix-shell:/tmp/nix-shell-es/EventStore-oss-v3.5.0-src]$ ls -la /bin/
    total 12
    drwxr-xr-x  2 root root 4096 Feb 24 12:25 .
    drwxr-xr-x 18 root root 4096 Feb 24 12:16 ..
    lrwxrwxrwx  1 root root   63 Feb 24 12:25 sh -> /nix/store/l80ddf18bbig2icv6cmgjfws9a2vm3jj-bash-4.3-p42/bin/sh
    

    然而,当我检查 the script 我没有看到任何关于它的提及,所以一定是一些子程序在寻找它。 顺便说一句,我想这可能就是为什么剧本明智地从 #!/usr/bin/env bash 而不是bash的直接位置。

    有人知道处理这个问题的好方法吗?

    1 回复  |  直到 9 年前
        1
  •  2
  •   nicolas    9 年前

    一个人必须跑步 patchShebangs ./scripts/build-js1/build-js1-linux.sh 当来自源代码的文件不在存储中并且我们想执行它们时。