2016-03-23 14 views
0

Ich bin bestrebt, alle Abhängigkeiten zu erhalten und riak_ensemble auf meinem lokalen Rechner laufen zu lassen. Allerdings, wenn ich Bewehrungs get-deps laufen, begegne ich immer:FEHLER: Abhängigkeit dir/riak/riak_ensemble_demo/deps/Tintenfisch/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"}}}. 

Der Fehler eine Version von Neotoma zeigt. Die Sache ist, dass Neotoma diese Version in seinem Repository hat. Hier ist der Screen des Endlagers:

enter image description here

hier ist meine rebar.config Datei für Tintenfische

{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"} 
    ]}. 

[UPDATED] Das ist mein rebar.config für 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"}}}]}. 

Und ich renne rebar get-deps, um alle erforderlichen Abhängigkeiten zu erfüllen.

Wie erfülle ich diese Abhängigkeit? Vielen Dank!

+0

Wie ich verstehen kann, ist es eine rebar.config von 'Tintenfisch'. Können Sie uns rebar.config von/home/project/riak/riak_ensemble_demo zeigen und uns mitteilen, wie Sie Ihre App erstellen? –

+0

Hallo @P_A, Ich habe die Frage aktualisiert. – indi60

Antwort

1

Also jedes Projekt hat seine eigene rebar.config Datei, wo es seine eigenen Abhängigkeiten angibt. In diesem Fall sieht es so aus, als ob eine Anwendung eine andere Version von neotoma als die andere erfordert. Der einfachste Weg, um mit solchen Problemen umzugehen, besteht darin, die Repositories in Ihrem Account zu "forken" (Github feature) und die Abhängigkeiten zu korrigieren. Dann würden Sie Ihre Anwendung so aktualisieren, dass die Anwendung von Ihrer Kopie des Repositorys statt von der des Besitzers benötigt wird. Sobald Sie das Problem behoben haben, können Sie eine Pull-Anforderung (eine weitere Github-Funktion) an den Besitzer des ursprünglichen Repositorys senden, damit diese Ihre Änderungen in ihren Code einbeziehen kann.

Wahrscheinlich möchten Sie nicht alle Repositories "forken", nur die, die zur Behebung dieses Problems erforderlich sind. Gehen Sie auf die desp Ordner und überprüfen Sie alle rebar.config Dateien:

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

Dies gibt Ihnen eine Liste von Anwendungen, die neotoma und Versionen erfordern, in denen sie benötigt werden. Diese Anwendung muss wahrscheinlich "gegabelt" und korrigiert werden.

+0

Wie korrigiere ich die Abhängigkeiten, wenn die erwartete Version bereits vorhanden ist? Ich füge den Screenshot die erforderlichen Abhängigkeiten hinzu. Ich merke das schon in Tag 1.7.3. – indi60

+0

In diesem Fall wird die Version automatisch von git erstellt, siehe '{vsn, git}' in https://github.com/seanicribs/neotoma/blob/1.7.3/src/neotoma.app.src und git generiert ' 1.7.2-9-g2f2b8e6' (das ist ziemlich dumm, oder? :) Es gibt bessere Tools, da bin ich mir sicher. Aber eh, wie auch immer, korrigieren Sie die 'vsn', um die richtige Version zu sein, wie hier: https://github.com/yoonka/builderl/blob/master/src/builderl.app.src Und Sie klonen auch von ein Tag, kein Zweig. Sobald Sie diese Änderung vorgenommen haben, muss die Abhängigkeit von einem Zweig geklont werden, oder Sie müssen ein neues Tag für Ihre Änderung erstellen. – Amiramix

+1

Oder alternativ nur diese Abhängigkeit mit der generierten Version '1.7.2-9-g2f2b8e6' anstelle von' 1.7.3' in der entsprechenden 'rebar.config' Datei. – Amiramix