2016-03-23 11 views
0

私はすべての依存関係を取得し、私のローカルマシン上でriak_ensembleを実行することを目指します。私は鉄筋のget-depsのを実行するとしかし、私は常に発生しますERROR:依存関係/ riak/riak_ensemble_demo/deps/cuttlefish/deps/neotoma; version_mismatch

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のバージョンを指しています。事は、新生猫がそのリポジトリにそのバージョンを持っているということです。ここでは、リポジトリのscreenshootです:

enter image description here

ここでイカ

{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ファイルだ[UPDATED] これは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.configですそして、私はrebar get-depsを実行して、必要なすべての依存関係を満たします。

どのようにこの依存関係を実現しますか?ありがとう!

+0

私が理解できるように、それは 'くらげ'のrebar.configです。/home/project/riak/riak_ensemble_demoからrebar.configを表示して、どのようにアプリケーションをビルドすることができますか? –

+0

こんにちは@P_A、私は質問を更新しました。 – indi60

答えて

1

したがって、基本的に各プロジェクトには独自の依存関係を指定するrebar.configファイルがあります。この場合、1つのアプリケーションのように、別のバージョンのneotomaが必要です。このような問題に対処する最も簡単な方法は、リポジトリをアカウントに「fork」(Githubフィーチャー)し、依存関係を修正することです。次に、所有者のものではなく、リポジトリのコピーからアプリケーションを要求するようにアプリケーションを更新します。問題を修正すると、元のリポジトリの所有者にプルリクエスト(別のGithub機能)を送信して、変更内容をコードに組み込むことができます。

おそらく、この問題を解決するために必要なリポジトリだけをすべて「フォーク」する必要はありません。 despフォルダに移動し、すべてのrebar.configファイルをチェック:

cd ~/myproject/deps 
find . -name rebar.config -exec grep -Hw neotoma \{\} \; 

これはあなたにneotoma、彼らが必要とされているバージョンを必要とするアプリケーションのリストを提供します。これらのアプリケーションは、おそらく "フォーク"して修正する必要があります。

+0

予想されるバージョンがすでに存在する場合、依存関係を修正するにはどうすればよいですか?スクリーンショットに必要な依存関係を追加します。タグ1.7.3に既にあることがわかります。 – indi60

+0

この場合、バージョンはgitによって自動的に作成されます。https://github.com/seancribbs/neotoma/blob/1.7.3/src/neotoma.app.srcの '{vsn、git}'を参照してください。gitは ' 1.7.2-9-g2f2b8e6'(それはかなりばかです、そうではありませんか?:)良いツールがあります、私は確信しています。しかし、とにかく、 'vsn'を正しいバージョンに修正してください(https://github.com/yoonka/builderl/blob/master/src/builderl.app.src)。また、あなたはタグであり、ブランチではありません。この変更を行ったら、依存関係をブランチからクローンするか、変更のために新しいタグを作成する必要があります。 – Amiramix

+1

代わりに、適切な 'rebar.config'ファイルに' 1.7.3'の代わりに生成されたバージョン '1.7.2-9-g2f2b8e6'を使用してその依存関係を含めてください。 – Amiramix