【问题标题】:Mix compiliation fails when compiling Ecto编译 Ecto 时混合编译失败
【发布时间】:2015-02-04 00:04:51
【问题描述】:

在灵药中:
在尝试为 Ecto 编译依赖项时,我遇到了 Mix 和 poolboy 的以下错误:

>mix compile

** (Mix) 应用程序 poolboy 指定了一个非语义版本 `cat VERSION`。混合只能匹配要求~> 1.2.1 对语义版本,要匹配任何版本,请使用正则表达式作为要求

我使用的是 Windows 8.1

这是我的混音部门:
注意:我必须对 postgrex 使用“~> 0.6.0”,否则它会抱怨依赖解析。 (在 Ecto 文档中,它只是说使用 ">= 0.0.0")

defp deps do
[
  {:postgrex, "~> 0.6.0"},
  {:ecto, "~> 0.2.5"}
]
end

从编译错误消息来看,似乎是 mix 没有正确处理某些东西,或者 poolboy 没有并且可能不在 Ecto 一侧?

无论如何,有人知道如何解决此问题或有解决方法吗?谢谢。

【问题讨论】:

  • 您是否尝试过直接将 Poolboy 添加为依赖项?我的意思是像 defp deps 做 [{postgrex, "~> 0.6.0"}, {:ecto, "~> 0.2.5"},{:poolboy, "~> 1.2.1"}] end
  • @OnorioCatenacci - 刚试了一下,没用,结果一样。
  • 看来 poolboy 正在尝试通过 cat (github.com/devinus/poolboy/blob/master/src/poolboy.app.src#L3) 设置版本。我会说这绝对是一个 poolboy 问题,所以你可能想在 poolboy repo 上打开一个问题。
  • 如果您在 Windows 上使用 Cygwin 或 MinGW,您可能能够构建东西。您还可以从此处获取适用于 Windows 的 cat 命令:unxutils.sourceforge.net 或此处:gnuwin32.sourceforge.net/packages/coreutils.htm

标签: elixir elixir-mix ecto


【解决方案1】:

这是一个 poolboy 错误。 Rebar(Erlang 构建工具)允许用户在他们的应用程序文件中注入自定义代码,poolboy 正在使用此功能使用特定的操作系统命令从文件系统中读取 VERSION。它可以在 Linux 上运行,但在 Windows 上会失败。我在 Poolboy 问题跟踪器上打开了一个问题。

【讨论】:

  • 所以,devinus 目前已经在硬编码修复中进行了编码。这是使用硬编码版本而不是使用“cat”命令,因为 Windows 没有它。虽然它可能不是未来的最佳解决方案,但它现在有效。
猜你喜欢
  • 2019-11-01
  • 2021-10-07
  • 2015-05-03
  • 1970-01-01
  • 1970-01-01
  • 2013-05-12
  • 1970-01-01
  • 2018-04-26
  • 2014-03-10
相关资源
最近更新 更多