繁体   English   中英

Pacman 更新后损坏的 XMonad(依赖项)(如何使用 Stack 编译它?)

[英]Broken XMonad (Dependencies) after Pacman Update (How to compile it with Stack?)

这个问题是其他人帮助我解决的问题的提炼解决方案。 可以在这个问题这个 r/xmonad 帖子上找到讨论。

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

这是我从xmonad --recompile -v得到的消息:

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 本身。
  • 通过 Stack 安装 XMonad。
    • 这最终给了我相同的错误消息,不同之处在于我必须执行~/.local/bin/xmonad --recompile -v

有谁知道如何解决这个问题? 我以前在升级 XMonad 时遇到过问题,但从来没有这样的问题——我喜欢 Haskell 作为一种语言,但它的 package 管理是我 10 多年来经历过的最恶心、最复杂的软件之一编程生活。

如果我最终清理我的系统并通过 Stack 管理所有内容,我如何通过它编译 XMonad? 仅使用 Stack 然后xmonad --recompile给我这个错误:

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/文件夹......)

我终于让它工作了。 XMonad repo 的人真的很有帮助,你可以在这个 issue中查看他们的帮助。

大致来说,我所做的是:

  1. 从我的系统中删除所有与 Haskell 相关的内容。
    • 小心地做这件事,使用很多find s 和haskellstackghccabal等字样。不要忘记先使用pacman -Rnspacman -Q卸载来自那里的所有内容。
    • 正如其他一些用户所提到的,您绝对应该使用 Pacman/AUR 和 Stack/Cabal 来管理 Haskell 软件包。 选择一个系统并坚持下去。 堆栈可能是推荐的。
  2. 使用 其文档上的脚本直接安装 Stack。
  3. 通过 Stack 安装 GHC、XMonad 和 XMonad-Contrib。
  4. 创建一个用于使用 Stack 编译 XMonad 的构建脚本
     #./bin/sh exec stack ghc -- \ --make xmonad.hs \ -i \ -ilib \ -fforce-recomp \ -main-is main \ -v0 \ -o "$1"jk
  5. exec $HOME/.xmonad/xmonad-x86_64-linux添加到.xinitrc以便它运行之前使用 Stack 编译的内容。

暂无
暂无

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

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