繁体   English   中英

为什么全新安装的Haskell-Stack和GHC如此大/大?

[英]Why is a fresh install of Haskell-Stack and GHC so large/big?

这里通过安装脚本重新安装Haskell Stack时:

wget -qO- https://get.haskellstack.org/ | sh

其次是:

stack setup

你将得到一个1.5 GB大小的$HOME/.stack/目录(从120+ MB下载)。 如果你运行:

stack update

大小增加到2.5 GB。

我习惯于Java,它通常被认为是大/大(几乎涵盖所有内容并且已经弃用了后向兼容性的替代方案),但作为比较:包括JDK,独立JDK和JDK源的IDE可能大约为1.5 GB的大小。

另一方面,Haskell是一种“小美”语言(从我所听到和读过的,这可能主要是指语法和语义,但仍然),是大/大,对我来说似乎很奇怪。

  1. 它为什么这么大(它与这个问题有关吗?)?
  2. 这个尺码是正常还是我安装了额外的东西?
  3. 如果有几种(4?,5?) 口味的东西,那么除了一个之外我可以删除吗?
  4. 是否有一些数据缓存/临时可以删除?
  5. 最大的目录是: .stack/programs/x86_64-linux/ghc-tinfo6-nopie-8.2.2/lib/ghc-8.2.2 (1.3 GB)和.stack/indices/Hackage (980 MB)。 我假设第一个是安装包(和stack setup ),后者是Hackage包存档的一些索引(和stack update )? 这些可以减少(如上所述3或在线获取所需的Hackage信息)?

您可以通过检查看到,它是以下组合:

  • GHC运行时的三种风格(静态,动态和分析)(总共大约400兆)和核心GHC库(总共700兆)加上100兆的接口文件和另外200兆的文档和120兆的压缩源(总共1.5演出,全部在programs/x86_64-linux/ghc-8.2.2*或类似下)
  • 未压缩的Hackage索引00-index.tar01-index.tar两个完全相同的副本,每个都包含在Hackage数据库中发布的每个包的每个版本的.cabal文件,每个版本大约457兆,加上一些其他文件到总计达到1.0演出

第一个是在运行stack setupstack setup ; 第二次运行stack update

回答你的问题:

  1. 它是如此之大,因为显然没有人做出任何努力使其变小,正如整个00-index.tar00-index.tar.gz01-index.tar情况所01-index.tar
  2. 这是最小安装的正常大小。
  3. 如果您不想编译带有分析的程序,则可以删除概要文件版本( *_p.a文件)。 我没有对此进行过广泛的测试,但似乎有效。 我想这将为你节省大约800兆。 您还可以删除静态版本(所有*.a文件),如果你只想动态链接程序(即,使用ghc -dynamic )。 我再次没有对此进行过广泛的测试,但似乎有效。 删除动态版本将非常困难 - 您必须找到一种方法来仅删除那些GHC本身不需要的*.so文件,并且您删除的任何内容将不再可以在解释器中加载。
  4. 缓存了几个东西,你可以删除它们。 例如,你可以删除00-index.tar00-index.tar.gz (节省大约半千兆字节),而Stack似乎运行正常。 但是,下次运行stack update ,它会重新创建它们。 我不认为这在任何地方都有记录,因此确定可以安全删除的内容将是大量的试验和错误。
  5. 我认为上面已经讨论过这个问题了。

没什么一个propos,有一天,我看到了一些3 TB的硬盘一个很好的协议,并在我的兴奋我意识到我真的没有什么可以把他们之前订购了两架。 它有点几个千兆字节,不是吗?

我想我不会花费很多精力来减少你的.stack目录,至少在一台强大的台式机上。 如果您正在使用具有相对较小SSD的笔记本电脑,请考虑将.stack目录放在支持透明压缩的文件系统上(例如,Btrfs),如果您认为它可能会失控。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM