Не удается запустить сервер Phoenix. Не могу найти erlang / lib / parsetools-2.1.8 - PullRequest
0 голосов
/ 06 мая 2020
~/Desktop/phoenix_sandbox/app$ mix phx.server
==> gettext
Compiling 1 file (.yrl)
/usr/lib/erlang/lib/parsetools-2.1.8/include/yeccpre.hrl: no such file or directory

could not compile dependency :gettext, "mix compile" failed. You can recompile this dependency with "mix deps.compile gettext", update it with "mix deps.update gettext" or clean it with "mix deps.clean gettext"

По кругу ходил с ошибкой. Я установил "инструменты синтаксического анализа" (что бы это ни было). Если я сделаю «mix deps.clean gettext», я буду ходить кругами и получаю ту же ошибку. Я использую Ubuntu

1 Ответ

0 голосов
/ 11 мая 2020

Erlang, установленный через менеджеры пакетов, не является хорошим способом go, потому что они не включают в себя все, что вам нужно, и иногда они помещают некоторые библиотеки в места, где они не должны быть, а некоторые инструменты просто не

Я рекомендую вам использовать вместо этого выпуски Erlang Solutions, и если вам не нравится использовать Docker, вы можете попробовать воспроизвести то, что я делаю, в Dockerfile моего стека Elixir Docker или просто используйте приведенный ниже сценарий bash.

Установите стек Elixir Phoenix в Ubuntu 18.04

My Elixir Docker Стек начался со старого bash сценарий, который я использовал для установки Erlang, Elixir, Phoenix и NodeJS, поэтому я добавлю его сюда для вашего удобства.

Сохраните этот bash файл install-stack.sh на свой компьютер:

#!/bin/sh

set -eu

Main() {

    local ERLANG_VERSION=${1? Missing Erlang version. Check the latest version at https://www.erlang-solutions.com/resources/download.html}
    local ERLANG_DOWNLOAD_URL=https://packages.erlang-solutions.com/erlang/debian/pool/esl-erlang_${ERLANG_VERSION}-1~ubuntu~bionic_amd64.deb

    local ELIXIR_VERSION=${2? Missing Erlang version. Check the latest version at https://www.erlang-solutions.com/resources/download.html}
    local ELIXIR_DOWNLOAD_URL=https://packages.erlang-solutions.com/erlang/debian/pool/elixir_${ELIXIR_VERSION}-1~ubuntu~bionic_all.deb

    local PHOENIX_VERSION="${3? Missing Phoenix version to install!!!}"

    local NODEJS_VERSION="${4? Missing NodeJS version to install!!!}"

    apt update
    apt -y upgrade
    apt -y -q install --no-install-recommends \
        ca-certificates \
        curl \
        build-essential \
        procps \
        libncurses5 \
        libwxbase3.0-0v5 \
        libwxgtk3.0-0v5 \
        libsctp1

    apt -y -f install

    printf "\nERLANG DOWNLOAD URL: ${ERLANG_DOWNLOAD_URL}\n"
    curl -fsSL -o esl.deb "${ERLANG_DOWNLOAD_URL}"
    dpkg -i esl.deb
    rm -f esl.deb

    printf "\nELIXIR DOWNLOAD URL: ${ELIXIR_DOWNLOAD_URL}\n"
    curl -fsSL -o elixir.deb "${ELIXIR_DOWNLOAD_URL}"
    dpkg -i elixir.deb
    rm -f elixir.deb

    printf "\nPHOENIX VERSION: ${PHOENIX_VERSION}\n"

    # installs the package manager
    mix local.hex --force

    # installs rebar and rebar3
    mix local.rebar --force

    mkdir -p "${HOME}/bin"
    ln -s "${HOME}"/.mix/rebar "${HOME}"/bin/rebar
    ln -s "${HOME}"/.mix/rebar3 "${HOME}"/bin/rebar3

    mix archive.install --force hex phx_new ${PHOENIX_VERSION}

    # INSTALL NODEJS
    printf "\nNODEJS VERSION: ${NODEJS_VERSION}\n"
    curl -sL https://deb.nodesource.com/setup_"${NODEJS_VERSION}".x | sh -
    apt install -y -q --no-install-recommends nodejs
}

Main ${@}

Удалите Erlang, Elixir и Phoenix из вашей системы.

Установите стек Elixir Phoenix с помощью bash install-stack.sh <erlang-version> <elixir-version> <phoenix-version> <nodejs-version>:

bash install-stack.sh 22.3.3 1.10.3 1.5.1 10

Теперь проверьте, что он работает:

mix phx.new hello --no-ecto && cd hello && mix test

Вывод:

...

Finished in 0.03 seconds
3 tests, 0 failures

...

sc ript был протестирован внутри контейнера docker с:

docker run --rm -it -v $PWD/install-stack.sh:/install-stack.sh ubuntu:18.04 bash
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...