Instructions to run Elixir on Android

android
#1

In case this is handy for other people, here is how you can run Elixir on Android:

  • Install https://termux.com/
  • apt update; apt upgrade to have your system up to date.
  • Install Erlang with apt install erlang, you should be able to run erl.
  • (check if an Elixir package was created so you can avoid the trouble of the remaining lines :slight_smile: )
  • Install wget with apt install wget (otherwise you will get bad address on any wget request).
  • Create a directory, and cd to it, for example: mkdir elixir; cd elixir.
  • Download the precompiled package from the link named Precompiled.zip file for the latest release in the page http://elixir-lang.org/install.html#precompiled-package.At time of this writing the command wget https://github.com/elixir-lang/elixir/releases/download/v1.4.2/Precompiled.zip should do this.
  • Unzip the files with unzip Precompiled.zip.
  • Go to directory bin.
  • Download the file termux-fix-shebang from the source at https://raw.githubusercontent.com/termux/termux-packages/master/packages/termux-tools/termux-fix-shebang. You can use wget https://raw.githubusercontent.com/termux/termux-packages/master/packages/termux-tools/termux-fix-shebang.
  • Execute sh termux-fix-shebang elixir iex elixircin the bin directory (sh is required as the path of the shebang of the script is not compatible with termux).
  • Execute which env and edit the first line of mix to set the path of command envto the one found by the command which.
  • Add export PATH=$PATH:$HOME/elixir/bin to your .bashrc or execute the command on your terminal.
    You can then mix and iex. An Android phone is not exactly a convenient development platform, but it was useful to me to learn Elixir when waiting for whatever.
14 Likes

#2

Termux is awesome, but you might inform at the top of the post that this is the guide only for Android 5.0 and above. Thanks for the guide! :slight_smile:

1 Like

#3

Thanks for that!
When I apt install wget, Im asked to validate with [Y/n].
If I press y or Y:
No command y found, did you mean Command [ from package coreutils, Command k from package kona etc.
And pressing Enter directly does nothing
Any idea please?

0 Likes

#4

Please try apt install --yes wget, for the older interface to apt, that meant to not ask but assume the operator knows what he is doing and install/remove everything. Can’t check though if it is still valid on the new interface which is used by termux.

2 Likes

#5

Thank you for your quick answer, it worked!

0 Likes

#6

thank your guides. i can use elixir on my android phone and can install phoenix. but when i execute “mix ecto.create”. it has a problem,it said i do not install rebar3.but i have install rebar3 with mix. do you have this problem?

0 Likes

#7

Can you copy and paste or screenshot the exact error message you get? Can you also show the output of ls -lah ~/.mix?

0 Likes

#8

~ ls -lah ~/.mix
total 984K
drwx------ 3 u0_a125 u0_a125 4.0K Aug 28 19:30 .
drwx------ 17 u0_a125 u0_a125 4.0K Aug 28 20:11 …
drwx------ 4 u0_a125 u0_a125 4.0K Aug 28 14:33 archives
-rwxr-xr-x 1 u0_a125 u0_a125 200K Aug 28 19:30 rebar
-rwxr-xr-x 1 u0_a125 u0_a125 767K Aug 28 19:30 rebar3

0 Likes

#9

That looks correct. And the error message?

0 Likes

#10

this is the error
sh: 1: /data/data/com.termux/files/home/.mix/rebar3: not found
** (Mix) Could not compile dependency :ranch, “/data/data/com.termux/files/home/.mix/rebar3 bare compile --paths “/data/data/com.termux/files/home/hello/_build/dev/lib/*/ebin”” command failed. You can recompile this dependency with “mix deps.compile ranch”, update it with “mix deps.update ranch” or clean it with “mix deps.clean ranch”

0 Likes

#11

Can you run rebar manually? ~/.mix/rebar3 help

Also please make sure, that realpath ~ prints /data/data/com.termux/files/home and that echo $HOME does as well.

0 Likes

#12

~/.mix/rebar3 help
zsh: /data/data/com.termux/files/home/.mix/rebar3: bad interpreter: /usr/bin/env: no such file or directory

realpath ~
/data/data/com.termux/files/home

$PATH
zsh: no such file or directory: /data/data/com.termux/files/usr:/data/data/com.termux/files/home/.mix:/data/data/com.termux/files/home/elixir/bin:/data/data/com.termux/files/usr/bin:/data/data/com.termux/files/usr/bin/applets

0 Likes

#13

Please install coreutils as described in termux issue:

0 Likes

#14

i have installed coreutils.

0 Likes

#15

Does running rebar directly or mix work now? If not what error do you get now?

0 Likes

#16

this is the error when i run rebar .
zsh: /data/data/com.termux/files/home/.mix/rebar: bad interpreter: /usr/bin/env: no such file or directory.

i can run mix anywhere.

0 Likes

#17

run which env and replace /usr/bin/env in the first line of rebar and rebar3 scripts by the path you got in the which output.

Be careful though to not touch anything else in those files.

0 Likes

#18

There’s still something wrong with what you said
➜ hello ~/.mix/rebar3 help
escript: Not an archive file

0 Likes

#19

But we are getting closer…

We do know now, that the script goes through escript and erlang now, but it seems as if escript requires the shebang to be exactly #!/usr/bin/env escript.

You’ll need to manually compile rebar dependencies by calling escript ~/.mix/rebar3 and hoping that simply copying arguments from mix’s error message will be sufficient.

1 Like

#20

Did you run PHX successfully on termux?
i can run rebar3 with “escript ~/.mix/rebar3”. but when i run “mix ecto.create”, it has the same problem

“”"
sh: 1: /data/data/com.termux/files/home/.mix/rebar3: not found
** (Mix) Could not compile dependency :ranch, “/data/data/com.termux/files/home/.mix/rebar3 bare compile --paths “/data/data/com.termux/files/home/hello/_build/dev/lib/*/ebin”” command failed. You can recompile this dependency with “mix deps.compile ranch”, update it with “mix deps.update ranch” or clean it with “mix deps.clean ranch”

“”"

0 Likes