Конфликт версий в Кабале - PullRequest
3 голосов
/ 29 июня 2011

Простите, если это часто задаваемые вопросы, но я немного озадачен тем, как правильно обойти эту проблему.

Я недавно скачал пакет TagSoup , который отлично установился с последней версией.версия 0.12.2

Затем я установил пакет download-curl , который отлично установился с последней версией.Что я не смог понять, так это то, что при загрузке зависит от TagSoup с версией = <0.11, поэтому как часть процесса установки Cabal также скачал более старую версию TagSoup. </p>

Это проблема, потому что я хочуиспользуйте обе библиотеки (последняя версия TagSoup AND download-curl) - и когда вы по какой-то причине делаете это, GHCI попадает в некоторую путаницу.

У меня вопрос, есть ли способ указать версии в вашемоператоры импорта, т.е.

import Text.Html.TagSoup-0.12.2

или это не пойдет?Я думаю нет.

Единственный способ обойти это - загрузить исходный код для загрузки, изменить файл .cabal для использования TagSoup-0.12.2 и переустановить пакет с моим маленьким «взломом», который работает какЯ ожидал бы этого - но я не думаю, что это решение

Любая помощь будет оценена

1 Ответ

4 голосов
/ 30 июня 2011

Обычно указывается требуемая версия в файле .cabal. Существует синтаксис расширения для импорта определенных пакетов (-XPackageImports), но обычно лучше позволить Cabal иметь дело.

Тем не менее, да, если вам нужно использовать оба, то вы входите в темную сферу алмазных зависимостей. Ваше единственное решение, доступное в настоящее время. -XPackageImports это не хорошая идея, так как попытка использовать две версии одной и той же библиотеки в одной и той же программе, вероятно, не будет связываться и почти наверняка сбросит ядро ​​во время выполнения, если это делает удается связать без повторяющихся символов.

...