Haskell на Windows: как установить text-icu? - PullRequest
0 голосов
/ 20 июня 2020

В package.yaml я добавил text-icu к зависимостям

dependencies:
- base >= 4.7 && < 5
- text-icu

Затем я запустил stack build. Произошла ошибка:

...
text-icu   > * Missing (or bad) C libraries: icuuc, icuin, icudt
...

Я попробовал этот ответ: Как мне заставить text-icu работать с Windows? , в котором говорится:

stack exec -- pacman -Sy mingw64/mingw-w64-x86_64-icu
stack build text-icu

Однако я получил ошибку, что zst формат архива не распознан.

В соответствии с этой проблемой: https://github.com/msys2/MSYS2-packages/issues/1960, мне нужно обновить pacman, чтобы распознать формат zst.

Я запустил: stack exec -- pacman -Sy pacman

Затем pacman больше не запускается, жалуясь на отсутствие некоторых заголовков библиотеки C ... Необходимо переустановить стек. У кого-то раньше была эта проблема: https://github.com/commercialhaskell/stack/issues/5300

Я бы предпочел не делать этого: https://docs.haskellstack.org/en/stable/maintainers/msys/

Итак, как используйте text-icu на Windows?

1 Ответ

0 голосов
/ 21 июня 2020

Это обходной путь.

Команда stack exec -- pacman -Sy mingw64/mingw-w64-x86_64-icu -v отображает следующие ошибки:

error: could not open file /var/cache/pacman/pkg/mingw-w64-x86_64-libwinpthread-git-8.0.0.5906.c9a21571-1-any.pkg.tar.zst: Unrecognized archive format
error: could not open file /var/cache/pacman/pkg/mingw-w64-x86_64-gcc-libs-10.1.0-3-any.pkg.tar.zst: Unrecognized archive format
error: could not open file /var/cache/pacman/pkg/mingw-w64-x86_64-icu-67.1-1-any.pkg.tar.zst: Unrecognized archive format

Итак, эти пакеты были загружены pacman, но не установлены (из-за нераспознаваемого формата). Они были сохранены в папке C:\Users\User1\AppData\Local\Programs\stack\x86_64-windows\msys2-20180531\var\cache\pacman\pkg

Решение - распаковать и установить вручную.

Чтобы распаковать zst файлы на Windows, вы можете использовать, например, программу PeaZip. После распаковки и расширения .tar их можно установить с помощью команды:

stack exec -- pacman -U /path/to/package/package_name-version.pkg.tar, как описано на странице https://wiki.archlinux.org/index.php/Pacman#Additional_commands

В этом порядке (из-за зависимости):

  1. mingw-w64-x86_64-libwinpthread- git -8.0.0.5906.c9a21571-1-any.pkg.tar
  2. mingw-w64-x86_64-g cc -libs-10.1.0-3-any.pkg.tar
  3. mingw-w64-x86_64-icu-67.1-1-any.pkg.tar

В в моем случае этого хватило для сборки программы.

...