Как установить / использовать локальную версию пакета, используя Stack?
Ситуация, я пытаюсь установить Netwire с помощью стека. Однако в последней версии netwire 5.0.1 есть проблема, о которой сообщает dhobbs: http://hub.darcs.net/ertes/netwire/issue/13
Поскольку я не знаю, когда проблема когда-либо будет устранена, я скачал репозиторий и внес изменения самостоятельно. Тем не менее, я не понимаю, как установить такую локально исправленную версию. stack install
не устанавливает это в ~/.stack
, У кого-нибудь есть идея?
Обновить
Сейчас я занимаюсь разработкой некоторых других библиотек, используя Stack. Как заставить другой проект использовать эти библиотеки? Жесткое кодирование относительного пути выглядит невероятно уродливо.
1 ответ
Таким образом, у вас есть проект, в котором вы хотите использовать локально исправленную версию Netwire, и в вашем проекте у вас есть stack.yml
, В качестве примера:
flags: {}
packages:
- '.'
extra-deps: {}
resolver: lts-3.7
У вас также есть зависимость от netwire
объявлено в вашем файле клики.
Чтобы использовать пропатченный Netwire в этом своем проекте, вы просто помещаете пропатченный пакет Netwire в подкаталог вашего проекта, возможно, под названием netwire
и обновите свой stack.yml
в качестве таких:
flags: {}
packages:
- '.'
- netwire
extra-deps: {}
resolver: lts-3.7
Сейчас stack build
создаст ваш проект с исправленной версией Netwire.
Вы также можете разместить измененный источник в сети (если лицензия позволяет) и ссылаться на источник, используя любой URL-адрес тарбола.
- https://example.com/netwire.tar.gz
или git-репозиторий и ссылка на коммит:
- location:
git: git@example.com/netwire
commit: 6a86ee32e5b869a877151f74064572225e1a0398
(Ознакомьтесь с документацией для получения дополнительной информации: https://docs.haskellstack.org/en/stable/yaml_configuration/)