gpt4 book ai didi

Haskell `cabal` 仅 "partially"安装包

转载 作者:行者123 更新时间:2023-12-02 02:10:55 31 4
gpt4 key购买 nike

在 Ubuntu 18:04 上使用 cabal 安装名为 Tidal 的 Haskell 软件包时遇到问题。

https://tidalcycles.org/index.php/Userbase

我不是 Haskell 专家,之前已经用过这个东西好几次了,所以我正在尝试尽可能全新的安装,使用这个 -

https://www.haskell.org/ghcup/

我尽可能多地清理与 Haskell 相关的内容 -

justin@justin-XPS-13-9360:~$ rm -rf ~/.cabal/
justin@justin-XPS-13-9360:~$ rm -rf ~/.ghc
justin@justin-XPS-13-9360:~$ rm -rf ~/.ghcup

还有任何 Ubuntu 遗留 Haskell -

justin@justin-XPS-13-9360:~$ sudo apt-get remove ghc

所以-

justin@justin-XPS-13-9360:~$ ghci
bash: /home/justin/.ghcup/bin/ghci: No such file or directory

好的,我们走吧 -

curl https://get-ghcup.haskell.org -sSf | sh

这给了我 -

{...}
Done installing, run "ghci-8.6.5" or set up your current GHC via: ghcup set 8.6.5
Setting GHC to 8.6.5
Done
Setting GHC to 8.6.5
Done
{...}
Successfully installed cabal-install into
/home/justin/.ghcup/bin
Detected "/home/justin/.bashrc" on your system...
If you want ghcup to automatically fix your "/home/justin/.bashrc" to include the required PATH variable
answer with YES, otherwise with NO and press ENTER.

YES
OK! /home/justin/.bashrc has been modified. Restart your terminal for the changes to take effect,
or type "source /home/justin/.ghcup/env" to apply them in your current terminal session.

让我们设置PATH并测试 -

justin@justin-XPS-13-9360:~$ source /home/justin/.ghcup/env
justin@justin-XPS-13-9360:~$ ghci
GHCi, version 8.6.5: http://www.haskell.org/ghc/ :? for help
Prelude>

到目前为止一切顺利。现在遵循这个-

https://tidalcycles.org/index.php/Troubleshooting_a_Tidal_install

我尝试以下 -

justin@justin-XPS-13-9360:~$ cabal update
Downloading the latest package list from hackage.haskell.org
To revert to previous state run:
cabal v2-update 'hackage.haskell.org,2019-11-20T01:17:49Z'

然后 -

justin@justin-XPS-13-9360:~$ cabal new-install tidal --lib
{...}
Starting tidal-1.4.4 (lib)
Building tidal-1.4.4 (lib)
Installing tidal-1.4.4 (lib)
Completed tidal-1.4.4 (lib)

看起来仍然不错,但这就是问题开始的地方 -

justin@justin-XPS-13-9360:~$ cabal info tidal
* tidal (library)
Synopsis: Pattern language for improvised music
Versions available: 0.8.2, 0.9.9, 0.9.10, 1.2.1, 1.3.0, 1.4.1, 1.4.2, 1.4.3,
1.4.4 (and 99 others)
Versions installed: [ Not installed ]

嗯 - 未安装 ??并且-

justin@justin-XPS-13-9360:~$ ghc-pkg latest tidal
ghc-pkg: cannot find package tidal

呵呵。但是,如果我查看 ~/.cabal,我可以看到一些东西已安装 -

justin@justin-XPS-13-9360:~$ ls -l /home/justin/.cabal/store/ghc-8.6.5/
total 100
{...}
drwxr-xr-x 4 justin justin 4096 Nov 20 06:00 tidal-1.4.4-898a4af91fab9d9d757e1a84104bbd7ca568a77d48b4679a3f4addb65912423a
{...}

我什至可以检查安装在 ~/.cabal/store 中的库是否正常工作 -

justin@justin-XPS-13-9360:~$ ghci
GHCi, version 8.6.5: http://www.haskell.org/ghc/ :? for help
Loaded package environment from /home/justin/.ghc/x86_64-linux-8.6.5/environments/default
Prelude> :script /home/justin/.cabal/store/ghc-8.6.5/tidal-1.4.4-898a4af91fab9d9d757e1a84104bbd7ca568a77d48b4679a3f4addb65912423a/share/BootTidal.hs
Listening for controls on 127.0.0.1:6010
tidal> :t d1
d1 :: Pattern ControlMap -> IO ()
tidal>

但是我想使用 Tidal 及其 emacs 扩展 -

https://github.com/tidalcycles/Tidal/blob/master/tidal.el

按如下方式查找软件包,并需要 cabal info tidal 返回正确安装的版本 -

 '(("path" . "ghc-pkg describe $(ghc-pkg latest tidal) | grep data-dir | cut -f2 -d' '")

本质上,emacs 扩展希望程序包驻留在此处(这将使 cabal info tidal 工作)

/home/justin/.cabal/share/x86_64-linux-ghc-8.6.5/tidal-1.4.4/BootTidal.hs

但是 cabal 似乎只是“部分”安装了此处的软件包 -

/home/justin/.cabal/store/ghc-8.6.5/tidal-1.4.4-898a4af91fab9d9d757e1a84104bbd7ca568a77d48b4679a3f4addb65912423a/share/BootTidal.hs

现在我可能可以破解 emacs 扩展以指向 ~/.cabal/store 而不是 ~/.cabal/share,但我更希望它能够工作正确地和 cabal info tidal 返回正确的版本。

任何人都可以告诉我为什么 cabal 不将文件推送到 ~/.cabal/share 吗?

TIA。

最佳答案

结束这个,因为上面概述的过程实际上是“有效的”,只是 cabal 社区似乎正在从“旧式”安装过程转向“新式”安装过程,并且新手并不总是清楚其中的区别。此外,某些软件包的某些部分(特别是 Tidal 软件包中的 tidal.el)尚未更新以反射(reflect) cabal 中的更改安装程序。谢谢!

关于Haskell `cabal` 仅 "partially"安装包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58948248/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com