ERROR: Dependency dir /riak/riak_ensemble_demo/deps/cuttlefish/deps/neotoma ; version_mismatch
ERROR: Dependency dir /riak/riak_ensemble_demo/deps/cuttlefish/deps/neotoma ; version_mismatch
我的目标是在我的本地机器上获取所有依赖项和 运行 riak_ensemble。但是,当我 运行 rebar get-deps 时,我总是遇到:
Cloning into 'neotoma'... ERROR: Dependency dir /home/project/riak/riak_ensemble_demo/deps/cuttlefish/deps/neotoma failed application validation with reason: {version_mismatch,{"/home/agung/project/riak/riak_ensemble_demo/deps/cuttlefish/deps/neotoma/src/neotoma.app.src",
{expected,"1.7.3"},
{has,"1.7.2-9-g2f2b8e6"}}}.
错误指向一个版本的neotoma。问题是 neotoma 在其存储库中有该版本。这是存储库的屏幕截图:
这是我的 rebar.config 墨鱼文件
{require_otp_vsn, "R16|17|18"}.
{erl_opts, [warnings_as_errors, {parse_transform, lager_transform}, debug_info, warn_untyped_record]}.
{eunit_opts, [verbose]}.
{cover_enabled, true}.
{escript_emu_args, "%%! -escript main cuttlefish_escript -smp disable +A 0\n"}.
{escript_incl_apps, [goldrush, getopt, lager]}.
{xref_checks, []}.
{xref_queries, [{"(XC - UC) || (XU - X - B - \"(rebar.*|mustache)\" : Mod)", []}]}.
{deps, [
{getopt, ".*", {git, "git://github.com/jcomellas/getopt.git", {tag, "v0.8.2"}}},
{lager, "(2.0|2.1|2.2).*", {git, "git://github.com/basho/lager.git", {tag, "2.2.0"}}},
{neotoma, "1.7.3", {git, "git://github.com/seancribbs/neotoma.git", {tag, "1.7.3"}}}
]}.
{post_hooks, [
{"-win32", compile, "rebar escriptize"},
{"^((?!-win32).)*$", compile, "./rebar escriptize"}
]}.
[更新]
这是我的 rebar.config riak_ensemble_demo
{erl_opts, [debug_info,
warnings_as_errors,
{parse_transform, lager_transform}]}.
{deps, [{lager, "2.0.3", {git, "git://github.com/basho/lager.git", {tag, "2.0.3"}}},
{riak_ensemble, ".*", {git, "git://github.com/basho/riak_ensemble", {branch,"develop"}}}]}.
我 运行 rebar get-deps
来满足所有需要的依赖。
如何实现这种依赖?谢谢!
所以基本上每个项目都有自己的 rebar.config
文件,它指定自己的依赖项。在这种情况下,一个应用程序似乎需要与另一个应用程序不同的 neotoma
版本。处理此类问题的最简单方法是 "fork"(Github 功能)将存储库添加到您的帐户并更正所需的依赖项。然后您将更新您的应用程序以从您的存储库副本而不是所有者的副本中获取应用程序。解决问题后,您可以向原始存储库的所有者发送拉取请求(另一个 Github 功能),以便他们可以将您的更改合并到他们的代码中。
您可能不想 "fork" 所有存储库,只需要解决此问题的存储库。转到 desp
文件夹并检查所有 rebar.config
个文件:
cd ~/myproject/deps
find . -name rebar.config -exec grep -Hw neotoma \{\} \;
这为您提供了需要 neotoma
的应用程序列表以及需要它们的版本。这些应用程序可能需要 "forked" 并更正。
我的目标是在我的本地机器上获取所有依赖项和 运行 riak_ensemble。但是,当我 运行 rebar get-deps 时,我总是遇到:
Cloning into 'neotoma'... ERROR: Dependency dir /home/project/riak/riak_ensemble_demo/deps/cuttlefish/deps/neotoma failed application validation with reason: {version_mismatch,{"/home/agung/project/riak/riak_ensemble_demo/deps/cuttlefish/deps/neotoma/src/neotoma.app.src",
{expected,"1.7.3"},
{has,"1.7.2-9-g2f2b8e6"}}}.
错误指向一个版本的neotoma。问题是 neotoma 在其存储库中有该版本。这是存储库的屏幕截图:
这是我的 rebar.config 墨鱼文件
{require_otp_vsn, "R16|17|18"}.
{erl_opts, [warnings_as_errors, {parse_transform, lager_transform}, debug_info, warn_untyped_record]}.
{eunit_opts, [verbose]}.
{cover_enabled, true}.
{escript_emu_args, "%%! -escript main cuttlefish_escript -smp disable +A 0\n"}.
{escript_incl_apps, [goldrush, getopt, lager]}.
{xref_checks, []}.
{xref_queries, [{"(XC - UC) || (XU - X - B - \"(rebar.*|mustache)\" : Mod)", []}]}.
{deps, [
{getopt, ".*", {git, "git://github.com/jcomellas/getopt.git", {tag, "v0.8.2"}}},
{lager, "(2.0|2.1|2.2).*", {git, "git://github.com/basho/lager.git", {tag, "2.2.0"}}},
{neotoma, "1.7.3", {git, "git://github.com/seancribbs/neotoma.git", {tag, "1.7.3"}}}
]}.
{post_hooks, [
{"-win32", compile, "rebar escriptize"},
{"^((?!-win32).)*$", compile, "./rebar escriptize"}
]}.
[更新] 这是我的 rebar.config riak_ensemble_demo
{erl_opts, [debug_info,
warnings_as_errors,
{parse_transform, lager_transform}]}.
{deps, [{lager, "2.0.3", {git, "git://github.com/basho/lager.git", {tag, "2.0.3"}}},
{riak_ensemble, ".*", {git, "git://github.com/basho/riak_ensemble", {branch,"develop"}}}]}.
我 运行 rebar get-deps
来满足所有需要的依赖。
如何实现这种依赖?谢谢!
所以基本上每个项目都有自己的 rebar.config
文件,它指定自己的依赖项。在这种情况下,一个应用程序似乎需要与另一个应用程序不同的 neotoma
版本。处理此类问题的最简单方法是 "fork"(Github 功能)将存储库添加到您的帐户并更正所需的依赖项。然后您将更新您的应用程序以从您的存储库副本而不是所有者的副本中获取应用程序。解决问题后,您可以向原始存储库的所有者发送拉取请求(另一个 Github 功能),以便他们可以将您的更改合并到他们的代码中。
您可能不想 "fork" 所有存储库,只需要解决此问题的存储库。转到 desp
文件夹并检查所有 rebar.config
个文件:
cd ~/myproject/deps
find . -name rebar.config -exec grep -Hw neotoma \{\} \;
这为您提供了需要 neotoma
的应用程序列表以及需要它们的版本。这些应用程序可能需要 "forked" 并更正。