стек exec не удалось при использовании http-client / http-client-tls в чистом nix - PullRequest
1 голос
/ 28 октября 2019

Я использую nix , стек и http-client-tls для получения / отправки данных из / в HTTPS в Haskell.

Проблема в том, что stack exec project-exec завершается неудачно с:

project-exe: security: createProcess: runInteractiveProcess: exec: не существует (такой файл или каталог не существует)

Однако, если я установлю pure: false для nix в stack.yaml, он может работать нормально.

Так я что-то потерял в моем nix env? Как я могу решить эту проблему?


main.hs:

{-# LANGUAGE OverloadedStrings #-}
--
module Main where
--
import qualified Data.ByteString.Lazy as B
--
import Network.HTTP.Client
import Network.HTTP.Client.TLS
--
url = "https://www.google.com.tw/search?q=test"
--
main :: IO ()
main = do
    mgt <- newManager tlsManagerSettings
    request <- parseRequest url
    res <- httpLbs request mgt :: IO (Response B.ByteString)
    print res

stack.yaml:

resolver: lts-14.11

packages:
- .

nix:
  enable: true
  pure: true
  # shell-file: shell.nix
  # packages: [ ]

1 Ответ

0 голосов
/ 03 ноября 2019

pure: true означает исключение исполняемого файла, определенного в вашей «существующей» оболочке.

Таким образом, похоже, вам просто нужно явно определить пакеты, от которых вы зависите.

...