首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pacman更新后中断的XMonad (依赖项)(如何用堆栈编译它?)

Pacman更新后中断的XMonad (依赖项)(如何用堆栈编译它?)
EN

Stack Overflow用户
提问于 2021-05-26 17:42:40
回答 1查看 1K关注 0票数 0

这个问题是别人帮助我解决的问题的精辟解决方案。讨论可以在本期这个r/xmonad员额上找到。

我使用Artix主要和Pacman一起作为包管理器。今天,大约一周后,我升级了许多软件包,结果它破坏了XMonad。

这是我从xmonad --recompile -v收到的信息

代码语言:javascript
复制
XMonad is recompiling and replacing itself another XMonad process because the current process is called "xmonad" but the compiled configuration should be called "xmonad-x86_64-linux"
XMonad will use ghc to recompile, because "/home/philippe/.xmonad/build" does not exist.
XMonad skipping recompile because it is not forced (e.g. via --recompile), and neither xmonad.hs nor any *.hs / *.lhs / *.hsc files in lib/ have been changed.
/home/philippe/.xmonad/xmonad-x86_64-linux: error while loading shared libraries: libHSxmonad-contrib-0.16-KKfUmtIonstICqbgIKQKYh-ghc8.10.4.so: cannot open shared object file: No such file or directory

我尝试了很多人们在互联网上提到的解决方案--到目前为止,我已经花了3个多小时来调试这个-,尤其是:

  • cabal install --lib xmonad-contrib,它解决了我过去和XMonad一起遇到的一些问题。
  • 移除和重新安装Stack、GHC、Cabal和XMonad本身。
  • 通过堆栈安装XMonad。
    • 这最终给了我同样的错误消息,区别是我不得不执行~/.local/bin/xmonad --recompile -v

有谁知道怎么解决这个问题吗?我以前在XMonad的升级方面遇到过问题,但从来没有遇到过类似的问题--我喜欢Haskell作为一种语言,但它的包管理是我在10+编程生涯中体验过的最恶心、最复杂的软件之一。

如果我最终清理了我的系统并通过堆栈管理了所有的东西,我如何通过它编译XMonad呢?只使用Stack,然后使用xmonad --recompile,就会给出以下错误:

代码语言:javascript
复制
XMonad will use ghc to recompile, because "/home/philippe/.xmonad/build" does not exist.
xmonad: ghc: runProcess: runInteractiveProcess: exec: inappropriate type (Not a directory)

(顺便说一句,我确实有一个~/.xmonad/build/文件夹.)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-26 17:42:40

我终于成功了。XMonad回购公司的人帮了大忙,你可以在本期上查看他们的帮助。

粗略地说,我所做的是:

  1. 从我的系统中删除所有与Haskell相关的内容。
    • 仔细地做这件事,使用大量的find和单词haskell,堆栈,ghc,cabal等等。不要忘记使用pacman -Rnspacman -Q卸载首先从那里来的所有东西。
    • 正如其他用户所提到的,您绝对不应该使用Pacman/AUR和Stack/Cabal管理Haskell包。选择一个系统并坚持它。堆栈可能是推荐的。

  2. 直接用其文档上的脚本安装堆栈。
  3. 通过Stack安装GHC、XMonad和xmond-cont肋骨.
  4. 创建一个用stack编译XMonad的XMonad:#!/bin/sh exec堆栈ghc -使xmonad.hs \ -i \ -ilib \ -fforce-recomp \ - main -is main\ -v0 \ -o "$1"jk
  5. exec $HOME/.xmonad/xmonad-x86_64-linux添加到.xinitrc,以便运行以前用Stack编译的内容。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67710115

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档