#haskell #windows-subsystem-for-linux #pandoc #haskell-stack #ghc-pkg
#haskell #windows-subsystem-for-linux #pandoc #хаскелл-стек #ghc-pkg
Вопрос:
Я пытаюсь скомпилировать behead.hs
скрипт из руководства pandoc по Ubuntu 20.04 (WSL1). Я могу успешно скомпилировать его с помощью
stack exec -- ghc behead.hs
или
stack --resolver lts-16.25 exec -- ghc behead.hs
но это использует pandoc-types-1.20
и мне нужно pandoc-types-1.22
, поэтому я стараюсь
stack --resolver nightly-2020-12-07 exec -- ghc behead.hs
(самая ранняя ночная функция pandoc-types-1.22
2020-09-20
— это сбой с той же ошибкой, что и ниже)
Это дает:
Preparing to install GHC (tinfo6) to an isolated location.
This will not interfere with any system-level installation.
Already downloaded.
ghc-pkg: Couldn't open database /home/me/.stack/programs/x86_64-linux/ghc-tinfo6-8.10.2/lib/ghc-8.10.2/package.conf.d for modification: {handle: /home/me/.stack/programs/x86_64-linux/ghc-tinfo6-8.10.2/lib/ghc-8.10.2/package.conf.d/package.cache.lock}: hLock: invalid argument (Invalid argument)
make[1]: *** [ghc.mk:973: install_packages] Error 1
make: *** [Makefile:51: install] Error 2
Received ExitFailure 2 when running
Raw command: /usr/bin/make install
Run from: /home/me/.stack/programs/x86_64-linux/ghc-tinfo6-8.10.2.temp/ghc-8.10.2/
Error: Error encountered while installing GHC with
make install
run in /home/me/.stack/programs/x86_64-linux/ghc-tinfo6-8.10.2.temp/ghc-8.10.2/
The following directories may now contain files, but won't be used by stack:
- /home/me/.stack/programs/x86_64-linux/ghc-tinfo6-8.10.2.temp/
- /home/me/.stack/programs/x86_64-linux/ghc-tinfo6-8.10.2/
For more information consider rerunning with --verbose flag
Installing GHC ...
Поскольку --verbose
я получаю слишком много информации для вставки сюда, но я рад предоставить результаты grep. Возможно, соответствующий отрывок:
#the WSL doesn't seem to get recognized as ubuntu
[debug] checking build system type... x86_64-pc-linux-gnu
2020-12-08 11:40:58.363496: [debug] checking host system type... x86_64-pc-linux-gnu
2020-12-08 11:40:58.363926: [debug] checking target system type... x86_64-pc-linux-gnu
2020-12-08 11:40:58.364331: [debug] Build platform inferred as: x86_64-unknown-linux
2020-12-08 11:40:58.412992: [debug] Host platform inferred as: x86_64-unknown-linux
2020-12-08 11:40:58.463758: [debug] Target platform inferred as: x86_64-unknown-linux
2020-12-08 11:40:58.715901: [debug] GHC build : x86_64-unknown-linux
2020-12-08 11:40:58.716483: [debug] GHC host : x86_64-unknown-linux
2020-12-08 11:40:58.717018: [debug] GHC target : x86_64-unknown-linux
2020-12-08 11:40:58.717558: [debug] LLVM target: x86_64-unknown-linux
#the last lines before the error:
[debug] Installing library in /home/me/.stack/programs/x86_64-linux/ghc-tinfo6-8.10.2/lib/ghc-8.10.2/ghc-8.10.2
[debug] "/home/me/.stack/programs/x86_64-linux/ghc-tinfo6-8.10.2/lib/ghc-8.10.2/bin/ghc-pkg" --force --global-package-db "/home/me/.stack/programs/x86_64-linux/ghc-tinfo6-8.10.2/lib/ghc-8.10.2/package.conf.d" update rts/dist/package.conf.install
В настоящее время у меня нет возможности воспроизвести это на реальной машине Linux, чтобы увидеть, имеет ли отношение к проблеме тот факт, что я использую WSL. Я могу попробовать это примерно через 6 часов.
Файл для воспроизведения:
#!/usr/bin/env runhaskell
-- behead.hs
import Text.Pandoc.JSON
main :: IO ()
main = toJSONFilter behead
behead :: Block -> Block
behead (Header n _ xs) | n >= 2 = Para [Emph xs]
Я хотел бы понять, почему это происходит, но, кроме того, как я могу скомпилировать скрипт с pandoc-types-1.22
помощью .
Комментарии:
1. звучит как блокировка файловой системы для файла? вы пробовали перезагрузить компьютер?
2. @mb21 Хороший момент, я только что попробовал, но, к сожалению, ошибка сохраняется
3. вы всегда можете использовать ядерную опцию и удалить
rm -rf ~/.stack/
… или, может быть, просто попытаться создать pandoc в Windows вместо использования WSL?4. @mb21 удивительно, что ядерный вариант тоже не работает. Сначала я попробовал Windows, там тоже были проблемы, но я опубликую новый вопрос по этому поводу.
Ответ №1:
У меня была такая же проблема, также в WSL, и я решил ее, обновив дистрибутив Ubuntu для использования WSL2. https://docs.microsoft.com/en-us/windows/wsl/install-win10
Комментарии:
1. Это действительно устраняет проблему, спасибо, чувак!