ubuntu - 在我的 Ubuntu 磁盘上安装了两个不同的 Haskell 平台
问题描述
我最近升级到 Ubuntu 18.04,擦除了旧磁盘上的所有内容,包括 Haskell 平台。然后我执行了以下操作以在我的磁盘上获取 Haskell 平台:
sudo apt-get install haskell-platform
(实际上,我认为在 Ubuntu 18.04 中你并不需要“get”这个词,但它仍然可以工作。所以我想我只是在终端中输入了这个
sudo apt install haskell-platform
:)
然后我注意到我安装的版本是 8.0.2 版本,这并不是平台的当前版本。于是我访问了 www.haskell.org 并下载并安装了该平台的当前版本,即 8.4.2 版本。现在我有两个不同版本的 Haskell 平台,一个来自官方网站,另一个来自 Ubuntu 存储库。(Ubuntu 存储库中的那个有点过时了。)
“活动”的是我最后安装的那个,它是 8.4.2 版。因此,如果我输入ghci
终端,我会得到 ghci 版本 8.4.2。如果我想要旧版本,那么我可以执行以下操作:
/usr/bin/./ghci-8.0.2
并启动稍旧版本的交互式解释器。
保留两个版本有什么害处吗?如何安全地从 Ubuntu 存储库中删除我安装的版本?如果我这样做,我是否必须从 Haskell 的官方网站 www.haskell.org/ 重新安装 Haskell 平台?我应该只保留它们吗?
解决方案
在devops方面有一些经验,我建议你首先摆脱两者。即使它现在可以工作,但在升级时很可能会导致问题,因为这种安装绝对不是它应该工作的方式,因此不受支持。
一旦你重新开始,你可以通过你喜欢的方式获得最新的 Haskell 平台,或者只使用Haskell Stack,这是我每天都在使用的东西,我非常满意并且强烈支持。
除了作为 Haskell 版本管理器之外,Stack 在所谓的 LTS'es 中维护一组兼容的库,并通过将某个版本的 Haskell 和一组库固定到您的源代码来帮助您避免 Cabal Hell 并获得可重现的构建。因此,随着世界的发展,您仍然可以谨慎地控制项目使用的 GHC 和库版本,并且即使在开发几年后也可以以接近零的额外工作量来构建它。
推荐阅读
- async-await - 在仍然更新 UI 线程的同时等待所有任务的正确方法
- python - Django - 在模板中为每个 m2m 对象添加一个 Integerfield
- excel - Excel VBA 循环遍历数据验证选项并另存为新工作簿
- css - FontAwesome 5 图标堆栈不符合标准图标
- python - 折线图
- excel - 如何将公式分配给匿名形状?
- unit-testing - 如何找出函数在 Jest 中通过测试的原因?
- python - 给定一个字符串列表,如果任何值等于列表中的值,我想将字典的值添加到新字典中
- google-cloud-platform - 在 BigQuery 中导出表格时,我可以控制共享文件的大小和/或数量吗?
- javascript - 如果单击取消按钮,如何使 Javascript“确认()”取消对新页面的请求?