如何用Stack构建Bitbucket依赖包中的that-exec可执行文件?
解决Stack构建extra-deps中可执行文件的问题
你遇到的报错是因为that-project属于extra-deps里的外部依赖,不是本地packages列表中的项目,所以Stack不识别that-project:exe:that-exec这种项目包语法。可以按以下步骤处理:
步骤1:构建依赖包的可执行文件
直接运行以下命令让Stack下载、编译这个依赖包及其可执行文件:
stack build that-project
只要你的stack.yaml里extra-deps配置正确,Stack会自动拉取Bitbucket上的指定提交版本并完成构建。
步骤2:定位可执行文件路径
构建完成后,可执行文件that-exec会被放在Stack的缓存或本地工作目录中,用下面的命令可以直接找到它的绝对路径:
stack exec -- which that-exec
步骤3:复制可执行文件到指定位置(可选)
如果需要把that-exec复制到Docker构建上下文或其他目录,直接用cp命令结合上面得到的路径即可,比如:
cp $(stack exec -- which that-exec) ./path/to/docker/context/
替代方案:临时将依赖包加入本地packages列表(不推荐)
如果一定要用stack that-project:exe:that-exec的语法,可以临时把这个Git依赖作为本地包添加到stack.yaml的packages里:
packages: - . - git: git@bitbucket.org:workspace/that-project.git commit: 0123456789abcdef0123456789abcdef01234567
之后就能用stack build that-project:exe:that-exec命令构建,但这种方式会把外部依赖当作本地项目管理,可能带来版本管理的麻烦,只适合临时场景。
内容的提问来源于stack exchange,提问作者Sledge
相关产品推荐
相关产品推荐

