Instalación de Erlang/OTP

Partiendo del hecho de que $HOME/.local/bin forma parte de tu $PATH.

  1. Instala kerl

    alumno@servidor:~ $ wget https://raw.githubusercontent.com/kerl/kerl/master/kerl -O $HOME/.local/bin/kerl
    alumno@servidor:~ $ chmod +x $HOME/.local/bin/kerl
    
  2. Descarga la lista de liberaciones (versiones) de Erlang/OTP:

    alumno@servidor:~ $ kerl list releases
    Getting the available releases from erlang.org...
    
  3. Compila la liberación de Erlang/OTP que te interese, en este caso la 18.3:

    alumno@servidor:~ $ kerl build 18.3 18.3
    Downloading otp_src_18.3.tar.gz to /home/alumno/.kerl/archives
    ...
    Extracting source code
    Building Erlang/OTP 18.3 (18.3), please wait...
    Erlang/OTP 18.3 (18.3) has been successfully built
    

    Sugerencia:

    alumno@servidor:~ $ KERL_CONFIGURE_OPTIONS="--enable-hipe \
      --with-ssl \
      --enable-dynamic-ssl-lib  \
      --without-wx \
      --without-javac" kerl build 18.3 18.3
    
    • --enable-hipe: activa el soporte para High Performance Erlang(HiPE).
    • --with-ssl: activa el soporte para OpenSSL.
    • --enable-dynamic-ssl-lib: hace uso de las bibliotecas de OpenSSL disponibles en el sistema operativo.
    • --without-wx: desactiva el soporte para wxWidgets/wxWindows.
    • --without-javac: desactiva el soporte para Oracle Java SE JDK.

    Para más información: https://github.com/erlang/otp/blob/maint/HOWTO/INSTALL.md

    La variable de entorno KERL_CONFIGURE_OPTIONS puede ser establecida en el archivo $HOME/.kerlrc que es un script de shell /bin/sh.

    Al terminar, lista las compilaciones disponibles:

    alumnl@servidor:~ $ kerl list builds
    18.3,18.3
    
  4. Instala la liberación de Erlang/OTP previamente compilada, se sugiere el directorio $HOME/.local/opt/erlang/18.3:

    alumno@servidor:~ $ mkdir -p $HOME/.local/opt/erlang/18.3
    alumno@servidor:~ $ kerl install 18.3 $HOME/.local/opt/erlang/18.3
    Installing Erlang/OTP 18.3 (18.3) in /home/alumno/.local/opt/erlang/18.3...
    You can activate this installation running the following command:
    . /home/alumno/.local/opt/erlang/18.3/activate
    Later on, you can leave the installation typing:
    kerl_deactivate
    

    Puedes listar las liberaciones de Erlang/OTP que tienes actualmente instaladas:

    alumno@servidor:~ $ kerl list installations
    18.3 /home/alumno/.local/opt/erlang/18.3
    

    Puedes listar los módulos instalados en una liberación de Erlang/OTP con el comando tree -L 1 $HOME/.local/opt/erlang/18.3/lib

Instalación de LFE (Lisp Flavored Erlang)

Partiendo del hecho de que ya tienes instalada una liberación de Erlang/OTP, $HOME/.local/opt/erlang/18.3 por ejemplo.

  1. Clona el repositorio de LFE, en $HOME/.local/src/lfe por ejemplo, e ingresa a él:

    alumno@servidor:~ $ mkdir -p $HOME/.local/src/lfe
    alumno@servidor:~ $ git clone https://github.com/rvirding/lfe.git $HOME/.local/src/lfe
    alumno@servidor:~ $ cd $HOME/.local/src/lfe
    
  2. Activa la liberación de Erlang/OTP ya instalada y compila a LFE:

    alumno@servidor:~/.local/src/lfe $ . $HOME/.local/opt/erlang/18.3/activate
    alumno@servidor:~/.local/src/lfe $ make
    escript get_maps_opts.escript
    make  erlc-lfec
    make[1]: Entering directory '/home/alumno/.local/src/lfe'
    ...
    cc -o bin/lfeexec c_src/lfeexec.c
    bin/lfe bin/lfec -I include -o ebin -pa ../lfe src/cl.lfe
    ecp: #(cl ())
    cp src/lfe.app.src ebin/lfe.app
    rm src/lfe_scan.erl
    make[1]: Leaving directory '/home/alumno/.local/src/lfe'
    

    Al terminar $HOME/.local/src/lfe/bin/lfe es el Lisp Flavoured Erlang (LFE) shell.

Si todo ha salido bien, puedes ejecutar el Lisp Flavoured Erlang (LFE) shell:

alumno@servidor:~ $ cd $HOME/.local/src/lfe/bin
alumno@servidor:~/.local/src/lfe/bin $ ./lfe
Erlang/OTP 18 [erts-7.3] [source] [64-bit] [smp:4:4] [async-threads:10] [hipe] [kernel-poll:false]

   ..-~.~_~---..
  (      \\     )    |   A Lisp-2+ on the Erlang VM
  |`-.._/_\\_.-';    |   Type (help) for usage info.
  |         g (_ \   |
  |        n    | |  |   Docs: http://docs.lfe.io/
  (       a    / /   |   Source: http://github.com/rvirding/lfe
   \     l    (_/    |
    \   r     /      |   LFE v1.1-dev (abort with ^G)
     `-E___.-'

> (defun ° (f g) (lambda (x) (funcall g (funcall f x))))
°
> (° (lambda (x) (* 2 x)) (lambda (x) (* 3 x)))
#Fun<lfe_eval.14.37351555>
> (funcall (° (lambda (x) (* 2 x)) (lambda (x) (* 3 x))) 5)
30

Instalación de rebar3

Partiendo del hecho de que $HOME/.local/bin forma parte de tu $PATH.

Descarga a rebar3 y dale permisos de ejecución:

alumno@servidor:~ $ wget https://s3.amazonaws.com/rebar3/rebar3  -O $HOME/.local/bin/rebar3
alumno@servidor:~ $ chmod +x $HOME/.local/bin/rebar3

Puedes verificar la correcta instalación de rebar3 con:

alumno@servidor:~ $ rebar3 -v
rebar 3.0.0+build.271.refc619921 on Erlang/OTP 18 Erts 7.3

Sugerencia

Crea un script de shell o una función de shell para configurar tu entorno, por ejemplo:

#!/bin/bash
function loadlfe() {
  set -x
  local ERLANG_OTP_HOME="$HOME/.local/opt/erlang/18.3"
  local LFE_HOME="$HOME/.local/src/lfe"
  source $ERLANG_OTP_HOME/activate
  kerl active
  export PATH="$LFE_HOME/bin:$PATH"
  set +x
}

De esta forma será más fácil cargar las variables de entorno necesarias:

alumno@servidor:~ $ loadlfe
alumno@servidor:~ $ which kerl
/home/alumno/.local/bin/kerl
alumno@servidor:~ $ which rebar3
/home/alumno/.local/bin/rebar3
alumno@servidor:~ $ which erl
/home/alumno/.local/opt/erlang/18.3/bin/erl
alumno@servidor:~ $ which lfe
/home/alumno/.local/src/lfe/bin/lfe