我刚开始在OSX上使用Nix包管理器,并且正在尝试为pass
二进制文件(https://www.passwordstore.org)创建我的第一个包 - 这在Nixpkgs存储库中不可用。指定Nix包运行时依赖关系
我试图指定一个运行时依赖项(getopt
),但是当使用二进制文件时,这似乎不可用。
这是我包的default.nix:
{ pkgs ? import <nixpkgs> {} }:
with pkgs;
let
version = "1.7.1";
in {
pass = stdenv.mkDerivation rec {
name = "pass-${version}";
src = fetchurl {
url = "https://git.zx2c4.com/password-store/snapshot/password-store-1.7.1.tar.xz";
sha256 = "0scqkpll2q8jhzcgcsh9kqz0gwdpvynivqjmmbzax2irjfaiklpn";
};
buildInputs = [ stdenv makeWrapper];
installPhase = ''
make install PREFIX=$out/artifact
makeWrapper $out/artifact/bin/pass $out/bin/pass \
--set PATH ${stdenv.lib.makeBinPath [ getopt ]}
'';
meta = {
homepage = "https://www.passwordstore.org";
description = "The standard unix password manager";
license = stdenv.lib.licenses.gpl2Plus;
};
};
}
我可以成功地建立这个包(nix-build --show-trace
)并安装它(nix-env -i ./result
)。
清单我的包在运行时依赖显示getopt
上市:
nix-store -qR $(which pass)
...
/nix/store/c5swmygzc0kmvpq6cfkvwm2yz1k57kqy-getopt-1.1.4
但是当我来到使用二进制(pass init my-key
)我得到以下错误:
/nix/store/...-pass-1.7.1/artifact/bin/pass: line 302:
/usr/local/bin/getopt: No such file or directory
谁能指教一下我做错了?
感谢
好像密码店内一些硬编码路径。你可能需要修补这些。 –
您可能应该省略.../artifact,因为生态系统的其他部分会假设二进制文件位于/bin中,而不是/artifact/bin。 (可能不是你的问题的原因,虽然) –
有趣的事实:你可以取消引用网址。 –