При попытке установить hlint по стеку возникла ошибка «одно и то же имя пакета».

#haskell #haskell-stack

Вопрос:

Я пытаюсь установить hlint через стек в haskell stack install hlint , но он сообщил мне, что план провалился, и я должен добавить несколько дополнительных stack.yaml модулей .

После того , как я это сделал (и установил allow-newer: true в файле config.yaml), он вернул мне следующее:

     The same package name is used in multiple local packages

time used in:
- PLImmutable (PLIHackage (PackageIdentifier {pkgName = PackageName "time", pkgVersion = mkVersion [1,10]}) 536801b30aa2ce66da07cb19847827662650907efb2af4c8bef0a6276445075f,5738 (TreeKey 1591d9d1034f19cd38fbda525969f805b5ca083b45da85602cf2b04c1a82f640,6693))
- PLImmutable (PLIHackage (PackageIdentifier {pkgName = PackageName "time", pkgVersion = mkVersion [1,11,1,2]}) a957467595420495c2dd440d9efa1f58c62277cf9438c7e7a515d7a4c65571ec,6287 (TreeKey b7025dd19573d4c082d072eaba093a3fc1f891f3fde09b59561bcdca3566a0a4,7048))
 

Я не знаю, как это сделать правильно, так как командир не дал мне никаких новых инструкций. Помочь?

Ответ №1:

Установка вещей с глобальным stack.yaml / config.yaml может быть сложной задачей. Часто бывает лучше клонировать репозиторий пакетов и создавать его с использованием собственных конфигурационных файлов, в которых указывается предпочтительный распознаватель стека пакета и т. Д. Попробуйте это:

 git clone git@github.com:ndmitchell/hlint.git
# Or: git clone https://github.com/ndmitchell/hlint.git

cd hlint
git checkout v3.3.1 # Latest available release
stack install
 

Комментарии:

1. Спасибо за твой ответ, Том. Я новичок в haskell и использую терминал cmd, поэтому у меня есть еще несколько вопросов по поводу предлагаемого вами решения: 1. Я выполнил первую строку кода, который вы мне прислали. Вот что показал cmd: Cloning into 'hlint'... git@github.com: Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.

2. О, я предполагал, что у вас был SSH-ключ, настроенный с помощью GitHub. Я просто отредактировал решение с помощью альтернативной команды, которую вы можете использовать вместо этого.

3. Похоже, он успешно установлен. Нет необходимости повторять команду глобальной установки, так как это просто приведет к тем же проблемам. Попробуйте набрать which hlint , чтобы увидеть, где он был установлен; для меня это так ~/.local/bin/hlint . Кстати, я бы рекомендовал отменить любые изменения, которые вы внесли в глобальную конфигурацию, например allow-newer: true ; почти никогда не рекомендуется прикасаться к ним, если вы не знаете, что делаете.

4. О, вы не должны which были этого делать . Это нормально, вы также можете просто ввести hlint и подтвердить, что он запускается и отображает hlint параметры.

5. Если все работает, пожалуйста, отметьте ответ как принятый 🙂