回答@DavidAzar 对答案的评论:
@Li-yaoXia 的解决方案有效,但后来我遇到了更多问题。这一切都来自我在解决问题时的粗略笔记。所以可能有一个更精简的解决方案。
好吧,实际上它编译了所有内容,但cabal --version
仍然说 2.4,而不是 3.4。也许它不在路径中?
Warning: could not create a symlink in /root/.cabal/bin for cabal because
the file exists there already but is not managed by cabal. You can create a symlink for
this executable manually if you wish. The executable file has been installed at /root/.cabal/bin/cabal
这里似乎有一个解决方案:https ://stackoverflow.com/a/17030330/52236
但我必须弄清楚如何删除现有的符号链接,然后再重新安装 cabal 并重新进行重新编译过程。
这里也有这个解决方案,我先试试:
update cabal-install, but version is not changed
unminimize
从 bash跑出来,它将所有正常的东西安装到 ubuntu。
首先,在 /bin 中,创建一个名为 /cabal-old 的文件夹,然后将 cabal 可执行文件复制到 cabal-old 文件夹中。然后从 /bin 文件夹中删除 cabal。
然后创建一个指向新 cabal 可执行文件的新符号链接:
ln -s /root/.cabal/bin/cabal cabal
这让 cabal 3.4 在执行 cabal --version 时出现。
接下来,安装 git:apt-get install git
然后进入 plutus-pioneer-program/code/week01/ 文件夹并输入cabal build
这从 git 下载了很多东西,然后失败了。
警告:请求的索引状态 2021-02-24T00:00:00Z 比“hackage.haskell.org”更新!回退到旧状态 (2021-02-23T23:53:53Z)。解决依赖关系...cabal:无法解决依赖关系:[__0] 尝试:Win32-network-0.1.0.0(用户目标)[__1] 尝试:base-4.12.0.0/installed-4.12.0.0(Win32-network 的依赖关系)[__2]下一个目标:plutus-pioneer-program-week01(用户目标)[__2]拒绝:plutus-pioneer-program-week01-0.1.0.0(冲突:base==4.12.0.0/installed-4.12.0.0, plutus-pioneer-program-week01 =>base^>=4.14.1.0) [__2] 失败(回跳,冲突集:base,plutus-pioneer-program-week01)
在彻底搜索了依赖树的其余部分之后,这些是我最难以实现的目标:base、Win32-network、plutus-pioneer-program-week01
我从 Stackoverflow 上的某个人那里得到了一个建议,即 Plutus-Pioneer 代码可能需要 ghc 8.10,而我使用的是 8.6.5 版本,所以下一步是弄清楚如何更新它。
在获得 ghc 8.10 之前,我显然需要安装 ghcup,以非 root 用户身份运行它?:
curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | 嘘
这开始了安装,但因为我没有安装“make”而失败。运行这个:
apt-get 安装
然后重新运行 curl 命令。curl 安装程序输出显示正在安装 ghc 8.10,但完成后,ghc --version
仍然输出 8.6.5。另一个符号链接问题?
我在输出中发现了这个问题:
为了运行 ghc 和 cabal,您需要调整 PATH 变量。您可能希望在您的 shell 配置中使用 source '/root/.ghcup/env' 来执行此操作(例如 ~/.bashrc)。
它还可能需要弄清楚如何指定要使用的 ghc 版本。
我需要更新 bin 文件夹中的 simlink 以获得正在使用的正确版本的 ghc,并且还有以下其他链接要更新:
lrwxrwxrwx 1 root root 9 Mar 24 2020 ghc -> ghc-8.6.5
-rwxr-xr-x 1 root root 226 Mar 24 2020 ghc-8.6.5
lrwxrwxrwx 1 root root 13 Mar 24 2020 ghc-pkg -> ghc-pkg-8.6.5
-rwxr-xr-x 1 root root 258 Mar 24 2020 ghc-pkg-8.6.5
lrwxrwxrwx 1 root root 10 Mar 24 2020 ghci -> ghci-8.6.5
-rwxr-xr-x 1 root root 55 Mar 24 2020 ghci-8.6.5
首先,为 ghcup 创建一个新的符号链接:
ln -s /root/.ghcup/bin/ghcup ghcup
(虽然我不记得我需要 ghcup 做什么。)
接下来,更新 /bin 文件夹中上面列出的所有 3 个符号链接的 ghc 符号链接:
mv -T ghc ghc-old-link ln -s /root/.ghcup/bin/ghc ghc
这有助于在 bash shell 中显示较新版本的 ghc。
现在尝试构建,它下载并开始构建很多东西,但现在发生了这个错误:
cabal:无法构建 cborg-0.2.4.0(这是 plutus-pioneer-program-week01-0.1.0.0 所要求的)。构建过程被终止(即SIGKILL)。造成这种情况的典型原因是没有足够的可用内存(例如,操作系统使用大量内存杀死了一个进程)。
解决方案:Docker -> 首选项 -> 资源 -> 增加 RAM 和交换空间。在我的例子中,内存为 2-8GB,交换空间为 1 到 2GB。
现在它为第 1 周构建 Plutus Pioneer 代码。