【问题标题】:In NixOS, how to run a Haskell executable from the command line?在 NixOS 中,如何从命令行运行 Haskell 可执行文件?
【发布时间】:2018-06-27 02:13:34
【问题描述】:

我正在尝试从命令行运行 Haskell 可执行文件,以 this blog 为例。我的机器运行 NixOS。

该博客是关于将 Markdown literate haskell 编译为 html 以发布博客文章。该过程的一个步骤是在 .lhs 文件上运行 haskell 程序 hscolour 以创建一个 .mkd 文件,其中代码语法通过 html 和 css 高亮显示。

cat blah.lhs | hscolour -lit -css > blah.mkd

但是,当我尝试运行此命令时,我收到以下 command not found 错误。

$ cat blah.lhs | hscolour -lit -css > blah.mkd                                                            
hscolour: command not found

我不确定我遇到的这个问题是 NixOS 特有的,还是让 haskell 可执行文件更广泛地可用于命令行。 如何使 haskell 可执行文件(例如 hscolour)可从命令行使用?


我已尝试在已构建 hscolournix-shell 中运行此命令。仍然找不到hscolour 命令。

$ nix-shell -p "haskellPackages.ghcWithPackages (pkgs: with pkgs; [hscolour])"
$ cat functor-proofs.lhs | hscolour -li
hscolour: command not found

【问题讨论】:

    标签: haskell nixos


    【解决方案1】:

    要知道的两件事:

    1. 您不需要 GHC,只需要来自 hscolour 的可执行文件,您可以通过 haskell.lib.justStaticExecutables haskellPackages.hscolour 获取该可执行文件。

    2. hscolour 的二进制文件称为HsColour,而不是hscolour

    演示:

    $ nix-shell -p 'haskell.lib.justStaticExecutables haskellPackages.hscolour' --run 'HsColour --version'
    HsColour 1.24
    

    【讨论】:

      【解决方案2】:

      我将分享我通过寻找an executable on NixOS 很快发现的另一种方法。

      $ `nix-build --no-out-link "<nixpkgs>"   -A haskellPackages.hscolour`/bin/HsColour --version                         
      HsColour 1.24
      

      【讨论】:

        猜你喜欢
        • 2018-06-19
        • 1970-01-01
        • 2020-09-13
        • 1970-01-01
        • 1970-01-01
        • 2023-03-23
        • 2017-08-30
        • 2015-08-13
        • 1970-01-01
        相关资源
        最近更新 更多