2016-12-28 65 views
0

我一直試圖將Ejabberd嵌入到Phoenix Web應用程序中。要做到這一點,我試圖按照this tutorial。步驟有以下幾條:使用Mix編譯Phoenix應用程序的Ejabberd依賴時出錯:無法編譯依賴關係:ejabberd,「混合編譯」失敗

  • 安裝一個ubuntu/xenial64Vagrant框。

  • 根據official guide安裝的藥劑。

  • 根據official guide安裝鳳凰。

  • 安裝一些程序包成功編譯鳳凰」種子應用的依賴關係:sudo apt install build-essential libssl-dev libyaml-cpp-dev libyaml-dev libpython2.7-dev

  • 我已經添加了ejabberd依賴於mix.exs文件:

    defmodule PhoenixEjabberd.Mixfile do 
        use Mix.Project 
    
        def project do 
        [app: :phoenix_ejabberd, 
        version: "0.0.1", 
        elixir: "~> 1.2", 
        elixirc_paths: elixirc_paths(Mix.env), 
        compilers: [:phoenix, :gettext] ++ Mix.compilers, 
        build_embedded: Mix.env == :prod, 
        start_permanent: Mix.env == :prod, 
        aliases: aliases(), 
        deps: deps()] 
        end 
    
        # Configuration for the OTP application. 
        # 
        # Type `mix help compile.app` for more information. 
        def application do 
        [mod: {PhoenixEjabberd, []}, 
        applications: [:phoenix, :phoenix_pubsub, :phoenix_html, :cowboy, 
            :logger, :ejabberd, :gettext, 
            :phoenix_ecto, :postgrex]] 
        end 
    
        # Specifies which paths to compile per environment. 
        defp elixirc_paths(:test), do: ["lib", "web", "test/support"] 
        defp elixirc_paths(_),  do: ["lib", "web"] 
    
        # Specifies your project dependencies. 
        # 
        # Type `mix help deps` for examples and options. 
        defp deps do 
        [{:phoenix, "~> 1.2.1"}, 
        {:phoenix_pubsub, "~> 1.0"}, 
        {:phoenix_ecto, "~> 3.0"}, 
        {:postgrex, ">= 0.0.0"}, 
        {:phoenix_html, "~> 2.6"}, 
        {:phoenix_live_reload, "~> 1.0", only: :dev}, 
        {:gettext, "~> 0.11"}, 
        {:cowboy, "~> 1.0"}, 
        {:ejabberd, "~> 16.12", github: "processone/ejabberd"} 
        ] 
        end 
    
        # Aliases are shortcuts or tasks specific to the current project. 
        # For example, to create, migrate and run the seeds file at once: 
        # 
        #  $ mix ecto.setup 
        # 
        # See the documentation for `Mix` for more info on aliases. 
        defp aliases do 
        ["ecto.setup": ["ecto.create", "ecto.migrate", "run priv/repo/seeds.exs"], 
        "ecto.reset": ["ecto.drop", "ecto.setup"], 
        "test": ["ecto.create --quiet", "ecto.migrate", "test"]] 
        end 
    end 
    
  • 執行的mix do deps.get, compile

  • 有大量的錯誤,主要是未定義的函數和變量。我把完整的日誌記錄在this Gist上。

爲什麼會出現這些錯誤?有沒有人成功編譯ejabberd依賴項?怎麼樣?感謝您的時間 :)。

回答

1

出於未知的原因ejabberd無法從根項目文件夾進行編譯。編譯它,我做了以下內容:

mix deps.get # to retrieve ejabberd 
cd deps/ejabberd 
mix do deps.get, compile 
cd - # to the project root 
mix compile # now the project would compile