使用没有 jinterface 的 asdf 安装 erlang

install erlang with asdf without jinterface

我正在尝试使用 asdf 安装 Erlang(以及后来的 Elixir),但是我收到关于 jinterface 的错误,因为安装过程似乎冻结了:

➜  ~ asdf install erlang 22.1.1
Downloading OTP-22.1.1.tar.gz to /Users/me/.asdf/plugins/erlang/kerl-home/archives
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   122    0   122    0     0    320      0 --:--:-- --:--:-- --:--:--   321
100 52.4M    0 52.4M    0     0  7604k      0 --:--:--  0:00:07 --:--:-- 9203k
Extracting source code
Building Erlang/OTP 22.1.1 (asdf_22.1.1), please wait...
APPLICATIONS DISABLED (See: /Users/me/.asdf/plugins/erlang/kerl-home/builds/asdf_22.1.1/otp_build_22.1.1.log)
 * jinterface     : Java compiler disabled by user

DOCUMENTATION INFORMATION (See: /Users/me/.asdf/plugins/erlang/kerl-home/builds/asdf_22.1.1/otp_build_22.1.1.log)
 * documentation  :
 *                  fop is missing.
 *                  Using fakefop to generate placeholder PDF files.

我看了一下 https://github.com/asdf-vm/asdf-erlang 上面写着

For example, to skip the java dependency during installation use:
$ export KERL_CONFIGURE_OPTIONS="--disable-debug --without-javac"
$ asdf install erlang <version>

如果非要我猜的话,这是一个 java 问题,所以当我尝试这个解决方案时它不起作用,但我得到了相同的输出。

知道如何在不安装 Java 的情况下安装 Erlang 吗?我不记得这是 Homebrew 的问题,这意味着 Homebrew 需要 Java 编译器存在。

我怀疑它实际上并没有冻结 - 它正在编译 Erlang,但隐藏了所有输出。给它十到二十分钟左右,它应该完成。

您可以使用 top 来验证这一点。编译 Erlang 是 CPU 密集型的,因此您应该能够轻松地发现 C 和 Erlang 编译器的使用率接近 100% CPU。

您可以使用

跟踪进度

tail -f /Users/me/.asdf/plugins/erlang/kerl-home/builds/asdf_22.1.1/otp_build_22.1.1.log

你可以安装所有 dependencies.This 修复,而不是在没有 jinterface 的情况下尝试它,我发现 here 它有效

sudo apt-get install automake autoconf libreadline-dev libncurses-dev \
libssl-dev libyaml-dev libxslt-dev libffi-dev libtool unixodbc-dev \
libwxgtk3.0-dev libgl1-mesa-dev  libglu1-mesa-dev libssh-dev xsltproc fop \
libxml2-utils

如果你在像 1GB 内存这样的小型服务器上安装,如果编译失败 increasing swap memory 有帮助,我花了一些时间来修复。