6

我正在尝试直接按照此处的说明在jupyter 中安装 IHaskell 。

我跑了以下。

sudo apt-get install -y python3-pip git libtinfo-dev libzmq3-dev libcairo2-dev libpango1.0-dev libmagic-dev libblas-dev liblapack-dev    
git clone https://github.com/gibiansky/IHaskell
cd IHaskell
pip3 install -r requirements.txt
stack install gtk2hs-buildtools
# stack install --fast
# ihaskell install --stack
# jupyter labextension install ihaskell_jupyterlab

我在上面的第 5 个命令中遇到了这个错误,即gtk2hs-buildtools

(envname) me@machine:~/plc/IHaskell$ stack install gtk2hs-buildtools
Linking /home/me/.stack/setup-exe-cache/x86_64-linux/tmp-Cabal-simple_mPHDZzAJ_2.2.0.1_ghc-8.4.4 ...
/home/me/anaconda3/envs/envname/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/bin/ld: cannot find -lgmp
collect2: error: ld returned 1 exit status
`x86_64-conda_cos6-linux-gnu-cc' failed in phase `Linker'. (Exit code: 1)

--  While building simple Setup.hs using:
      /home/me/.stack/programs/x86_64-linux/ghc-8.4.4/bin/ghc -rtsopts -threaded -clear-package-db -global-package-db -hide-all-packages -package base -main-is StackSetupShim.mainOverride -package Cabal-2.2.0.1 /home/me/.stack/setup-exe-src/setup-mPHDZzAJ.hs /home/me/.stack/setup-exe-src/setup-shim-mPHDZzAJ.hs -o /home/me/.stack/setup-exe-cache/x86_64-linux/tmp-Cabal-simple_mPHDZzAJ_2.2.0.1_ghc-8.4.4
    Process exited with code: ExitFailure 1

一些搜索告诉我cannot find -lgmp是通过以下方式解决的:

$ sudo apt-get install libgmp3-dev

我这样做了。这安装成功,但是

(envname) me@machine:~/plc/IHaskell$ stack install gtk2hs-buildtools

仍然产生相同的错误。出了什么问题,我该如何解决?

从 scinart 的建议更新

$ conda install gmp
Solving environment: done

## Package Plan ##

  environment location: /home/me/anaconda3/envs/envname

  added / updated specs: 
    - gmp


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    openssl-1.0.2p             |       h470a237_1         3.1 MB  conda-forge
    ca-certificates-2018.10.15 |       ha4d7672_0         135 KB  conda-forge
    certifi-2018.10.15         |        py36_1000         138 KB  conda-forge
    gmp-6.1.2                  |       hfc679d8_0         676 KB  conda-forge
    ------------------------------------------------------------
                                           Total:         4.0 MB

The following packages will be UPDATED:

    ca-certificates: 2018.03.07-0      --> 2018.10.15-ha4d7672_0 conda-forge
    certifi:         2018.10.15-py36_0 --> 2018.10.15-py36_1000  conda-forge
    openssl:         1.0.2p-h14c3975_0 --> 1.0.2p-h470a237_1     conda-forge

The following packages will be DOWNGRADED:

    gmp:             6.1.2-h6c8ec71_1  --> 6.1.2-hfc679d8_0      conda-forge

Proceed ([y]/n)? y


Downloading and Extracting Packages
openssl-1.0.2p       | 3.1 MB    | ######################################################################################################################################################################################################## | 100% 
ca-certificates-2018 | 135 KB    | ######################################################################################################################################################################################################## | 100% 
certifi-2018.10.15   | 138 KB    | ######################################################################################################################################################################################################## | 100% 
gmp-6.1.2            | 676 KB    | ######################################################################################################################################################################################################## | 100% 
Preparing transaction: done
Verifying transaction: done
Executing transaction: done

看起来不错!

(envname) me@machine:~/plc/IHaskell$ stack install gtk2hs-buildtools
Linking /home/me/.stack/setup-exe-cache/x86_64-linux/tmp-Cabal-simple_mPHDZzAJ_2.2.0.1_ghc-8.4.4 ...
/home/me/anaconda3/envs/envname/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/bin/ld: cannot find -lgmp
collect2: error: ld returned 1 exit status
`x86_64-conda_cos6-linux-gnu-cc' failed in phase `Linker'. (Exit code: 1)

--  While building simple Setup.hs using:
      /home/me/.stack/programs/x86_64-linux/ghc-8.4.4/bin/ghc -rtsopts -threaded -clear-package-db -global-package-db -hide-all-packages -package base -main-is StackSetupShim.mainOverride -package Cabal-2.2.0.1 /home/me/.stack/setup-exe-src/setup-mPHDZzAJ.hs /home/me/.stack/setup-exe-src/setup-shim-mPHDZzAJ.hs -o /home/me/.stack/setup-exe-cache/x86_64-linux/tmp-Cabal-simple_mPHDZzAJ_2.2.0.1_ghc-8.4.4
    Process exited with code: ExitFailure 1

该死,和以前一样的错误。

所以,从这里,你可以看到我已经安装了 gmp 包,实际上已经有一个更高的版本。问题似乎是链接器由于某种原因无法找到 gmp(即使它存在),因此重新安装 gmp 将无济于事。

更新 2

我尝试的另一件事是:

$ conda install gxx_linux-64

推荐这里,也没有用。

更新 3

看起来也像同样的问题,以这种方式解决,但对我不起作用。

4

4 回答 4

1

简而言之,如果当您通过堆栈安装 ghc 时,您在其环境中启用了带有 gcc 和 ld 的 Anaconda,那么 ghc 将永远被破坏。一种解决方法是删除堆栈安装的 ghc、conda uninstall ...Anaconda 的 gcc(可能是gcc_linux-64包)和 ld(binutils_linux-64以及binutils_impl_linux-64包),再次安装 ghc(如果你真的需要,然后重新安装 Anaconda 的 gcc 和 ld)。

有关更深入的分析,请参阅https://github.com/haskell/cabal/issues/5280#issuecomment-718818157 。

于 2020-10-29T15:33:02.280 回答
1

2019 年 1 月 12 日更新

我最近重新安装了最新的 anaconda (Anaconda3-2018.12-Linux-x86_64.sh)。但是这次没有在它上面安装任何 gcc 包(比如 gxx_linux-64),也没有将我特定的 env 的 bin 目录添加到我的 $PATH (它安装在我的.bashrc文件中的片段似乎可以管理它)并且默认的 IHaskell 指令很顺利,即使激活了 conda 我的 conda 环境。


原帖:

出于我的目的,我希望 IHaskell for jupyter 学习 Haskell 并在我这样做的同时做一些笔记。我的环境中也有condavia anaconda,用于其他编程目的,并且遇到了与上面相同的错误。所以....我另外设置了一个不基于 conda 的 jupyter 实例,这似乎可以解决问题。

然后我将 jupyter 安装为全局二进制文件。在我的 Ubuntu Linux 中,它与sudo apt install jupyter-notebook. 然后,我在我使用的终端窗口中选择性地停用了 conda conda deactivate ; export PATH=/usr/bin:$PATH

我还向我的本地 libgmp 添加了一个符号链接,以使其更容易找到。我发现有一个libgmp.so.3符号链接可以正常工作(即使它链接到更新的 libgmp)。

$ sudo ldconfig -p | grep libgmp
  libgmp.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libgmp.so
$ sudo ln -s /usr/lib/x86_64-linux-gnu/libgmp.so /usr/lib/libgmp.so.3
$

然后我使用 gmp ( ) 从第一个版本下载堆栈stack-1.9.3-linux-x86_64-gmp4.tar.gz并将其放在某个目录中~/apps/stack,我添加到我的 $PATH 中,这样我就可以调用stack. 从那时起,按照上面的命令停用, IHaskellconda的指令变得更加顺畅。我想我需要添加可选 的 gtk2hs-buildtools 才能工作(YMMV)。allow-newer: truestack install

就是这样,haskell 内核已安装并可以使用:

$ which ihaskell
/home/yuvilio/.local/bin/ihaskell
$ ihaskell install --stack
$ jupyter kernelspec list
Available kernels:
  haskell      /home/yuvilio/.local/share/jupyter/kernels/haskell
...
$

然后尤里卡,它奏效了。我刚刚使用了全局安装的 jupyter-notebook 和 jupyter-console(在该终端中禁用了 conda,如上所述),并且 haskell 内核可用并且可以正常工作:

$ jupyter-console --kernel=haskell
Jupyter console 5.2.0
IHaskell 0.9.1.0 GHC 8.6.3
In [1]: sum[1..5]
:15
In [2]: double x = x + x
In [3]: double 3
:6

我确信有一种更聪明的方法可以让 IHaskell 与 conda 一起工作,但听起来它仍在进行中。这种设置的好处是,在其他终端屏幕上,我的 conda 在其他终端会话上正常工作。这不是一个生产设置,但如果你只是想用 haskell 内容制作 jupyter-notebooks,这似乎已经足够开始了。

于 2019-01-08T07:46:23.940 回答
0

所以,问题是/home/me/anaconda3/.../gcc/7.3.0/bin/ld: cannot find -lgmp

根据康达文件

编译器和链接器不查找系统头文件和库

建议使用 conda 安装它们。我们正在积极努力确保 conda-forge 也提供这些工具。

的主页conda-forgehttps://conda-forge.org,用法是

conda config --add channels conda-forge
conda install gmp

这个 gmp 与 debian/sid 版本相同libgmp3-dev,它应该构建 libgmp.so,看这个

希望它会奏效。

于 2018-11-10T17:33:19.500 回答
0

那么截至 21 年 7 月 15 日,我只是得到 ihaskell: command not found 当我按照默认说明进行操作时:-(

更新:

认为这与stack install --fast给出此错误有关:

error: /usr/bin/ld.gold: error: cannot find -ltinfo

所以我然后跑了:sudo apt-get install libtinfo-dev

于 2021-07-15T18:58:32.750 回答