如何将GHC和cabal安装的软件包移动到其他用户?我已经复制了目录,但我收到的错误消息如下:
ConfigParser.hs:15:8:
Could not find module `Data.ByteString.Char8'
There are files missing in the `bytestring-0.10.2.0' package,
try running 'ghc-pkg check'.
Use -v to see a list of the files searched for.
ghc-pkg check
表示缺少任何包的任何文件。我该如何解决这个问题?
注意:这个问题故意不显示研究工作,因为它回答了Q& A风格。
答案 0 :(得分:4)
首先,您显然需要复制.ghc
和.cabal
。它们包含二进制文件和配置。
为简单起见,我们假设从用户foo
转移到用户bar
。请注意,在架构之间移动是不可能的,因为GHC生成的二进制文件不是独立于平台的。
复制上述目录后,有/home/foo
之类的路径保留在不同的位置。我们将使用sed
替换它们(将其作为bar
运行):
sed -i -e "s/foo/bar/g" ~/.cabal/config
sed -i -e "s/foo/bar/g" ~/.ghc/*-*/package.conf.d/*.conf
但是,文件~/.ghc/*-*/package.conf.d/package.cache
仍包含包含用户名的文件引用。但是,我们不能简单地使用sed
替换它,因为它是一个二进制文件,它可能会破坏包缓存。
您可以使用ghc-pkg recache --user
重新缓存所有包。
执行这些步骤后,您应该能够按预期使用cabal
个包。