2017-08-03 124 views
2

在我正在工作的存儲庫中最近發生更改後,我無法再構建。當試圖運行任何stack命令,如stack build,我得到以下錯誤:'在路徑上找不到名爲git的可執行文件:'在運行堆棧時

$ stack build 
Executable named git not found on path: ["/home/matthew/.stack/snapshots/x86_64-linux-nix/lts-8.23/8.0.2/bin","/nix/store/kikxl1m9gg1rh9yfi9ly9bkl39zdb6z7-postgresql-9.5.6/bin","/nix/store/xczvw3rlvr1ind8s88i7yx0vasl4gzxm-ghc-8.0.2/bin","/nix/store/sxngsdy5y53j8fkb912hbpgamb2bpv5q-patchelf-0.9/bin","/nix/store/9ngvanddznmrbf74cvy0pmrqimk3i56x-paxctl-0.9/bin","/nix/store/c07gdr6cm43j1cphadzafq185k711vx4-coreutils-8.26/bin","/nix/store/7pyzxi7k5l6nym972gi2nq8s9f9b2q0j-findutils-4.6.0/bin","/nix/store/gjwa02cchnj2r69dlqjixjmdn0ws7f1v-diffutils-3.5/bin","/nix/store/xk38vw7z7bfr8173vdwfrfamxqcaj7hi-gnused-4.4/bin","/nix/store/r6s8rcd28wsk4gwviyc93343bq5zwlqq-gnugrep-3.0/bin","/nix/store/bvs3nyfflhsb75cfn4ff2a6xnksdzx9f-gawk-4.1.3/bin","/nix/store/g3skr3kss1fqqzl5viyg178qbcp4cdky-gnutar-1.29/bin","/nix/store/kdx0bwfy20q6blpgpdb7psbn1y435r56-gzip-1.8/bin","/nix/store/f2fg211g8zy5k624dwx0g7z32cm148mr-bzip2-1.0.6.0.1-bin/bin","/nix/store/adjkz7lhgvl3y3hpkzfsmpk15f0jrnmr-gnumake-4.2.1/bin","/nix/store/lpk84rsbha199vm3k54498lqv2jswqj8-bash-4.4-p5/bin","/nix/store/1hdv6h68f7xy9k0lhxqf26saz0w0r39i-patch-2.7.5/bin","/nix/store/vkbh4xbgxvx3v9813d4kdwv8ggwrp038-xz-5.2.2-bin/bin"] 

看來,我的stack程序不知道正確的路徑,我git程序。

如何指定我的git路徑爲stack

我已驗證我的git安裝在以下路徑中。

$ which git 
/nix/var/nix/profiles/default/bin/git 

我在nixos 17.03上。


編輯。

我確定stack buildwhich git命令運行在相同的環境中,因爲它們在同一個shell中重新運行。

我的路徑是

$ echo $PATH 
/home/matthew/bin:/run/wrappers/bin:/run/wrappers/bin:/home/matthew/.nix-profile/bin:/home/matthew/.nix-profile/sbin:/home/matthew/.nix-profile/lib/kde4/libexec:/nix/var/nix/profiles/default/bin:/nix/var/nix/profiles/default/sbin:/nix/var/nix/profiles/default/lib/kde4/libexec:/run/current-system/sw/bin:/run/current-system/sw/sbin:/run/current-system/sw/lib/kde4/libexec 

這表明/nix/var/nix/profiles/default/bin是路徑,其中包含git


而且,在我stack.yaml文件時,我設置system-ghc: true我得到一個「訪問權限」錯誤而不是錯誤的「未找到可執行文件名爲混帳」。

$ stack build 
Warning: /home/matthew/backup/azara_work/platform/api/stack.yaml: Unrecognized field in NixOptsMonoid: system-ghc 
Cloning into '/home/matthew/backup/azara_work/platform/api/.stack-work/downloaded/4FnxEtHDACVR'... 
Permission denied (publickey). 
fatal: Could not read from remote repository. 

Please make sure you have the correct access rights 
and the repository exists. 
Process exited with ExitFailure 128: /nix/var/nix/profiles/default/bin/git clone --recursive [email protected]:seanhess/rollbar-haskell.git /home/matthew/backup/azara_work/platform/api/.stack-work/downloaded/4FnxEtHDACVR 
+1

堆棧只是增加了路徑。 '/ nix/var/nix/profiles/default/bin /'似乎不在PATH上 - 它不在列表中。你確定堆棧正在與其相同的環境中運行嗎?可能有助於做'echo $ PATH'來確定,看看它如何偏離堆棧正在使用的PATH。 – mgsloan

+0

@mgsloan感謝您的評論。我已經按照建議編輯了包含'echo $ PATH'結果的問題。另外我發現,當在我的'stack.yaml'文件中啓用'system-ghc'時(如編輯中所述),我得到'訪問權限'錯誤,而不是'找不到'錯誤。 – mherzl

+0

我沒有線索,似乎事情的工作方式與您的設置非常不一致。設置system-ghc對於查找git二進制文件不應有任何區別。 – mgsloan

回答

0

添加這兩種~/.stack/config.yaml 或局部stack.yaml(如果它已經具備了尼克斯:塊)

nix: 
    enable: true 
    packages: [git] 
相關問題