방금 OSX에서 Nix 패키지 관리자를 사용하기 시작했으며 Nixpkgs 저장소에서 사용할 수없는 pass
바이너리 (https://www.passwordstore.org)에 대한 첫 번째 패키지를 만들려고합니다.Nix 패키지 런타임 종속성 지정
런타임 종속성 (getopt
)을 지정하려고 시도했지만 이진 파일을 사용할 때 사용할 수없는 것으로 보입니다.
{ 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
) :
이 내 패키지의 default.nix입니다. 내 패키지에 대한 런타임 종속성 목록
는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가 아니라 /bin에 바이너리가 있다고 가정하므로 .../artifact를 생략해야합니다. (아마도 문제의 원인이 아닐 수도 있습니다.) –
재미있는 사실 : URL의 인용 부호를 취소 할 수 있습니다. –