[erlang-questions] Can Erlang application load from within beam without external storage?

Grzegorz Junka <>
Wed May 25 11:05:09 CEST 2016


This is what Erlang releases are for! Albeit they don't produce a single 
binary, they are pretty straightforward to be moved around as a single file.

Have a look at this example:

mkdir test_sc
cd test_sc/
git clone https://github.com/builderl/ex1_simple_cache.git
cd ex1_simple_cache/
gmake get-deps
gmake tgz

This produces a single tgz file in tmp/ folder which contains the Erlang 
VM, erts and all required applications (and nothing more). It can be 
moved to any place since all paths used in it are relative. Once moved 
to the desired host/location you unpack, install and run it:

mkdir myrelease
cd myrelease
tar -xzf ~/path/to/the/release.tgz
./bin/init.esh
./bin/start.esh
to_erl ../sc-1/shell/

It's build with a normal makefile so bundling Rumprun unikernel to it 
should be a piece of cake.

It's possible to create a single binary with all Erlang applications 
using the technique called escriptize 
http://blog.differentpla.net/blog/2015/10/21/rebar-escriptize but for it 
to work the Erlang runtime has to be already installed on the 
destination system.

Grzegorz


On 25/05/2016 07:31, Neeraj Sharma wrote:
> On Wed, May 25, 2016 at 10:45 AM, Sergej Jurečko
> <> wrote:
>> This?
>> http://erlang.org/doc/man/code.html#id104826
>>
> Interesting piece of information although I am afraid my requirement
> was not clear enough, so let me provide some additional details.
>
> My intention is to package Erlang VM, application and its dependencies
> (including OTP) into a single blob of binary which can run standalone.
> I am at very early stage to evaluate the possibilities here so things
> may appear vague at this point. Having said that ideally I'd like to
> retain the Erlang shell and given the nature of the build code reload
> is not required. I believe there are some projects like erllvm and
> Hipe but I dont have clear understanding of the same and wanted to
> know existence of any prior work which can be reused. Actually the
> single binary will also include the Rumprun unikernel, which at
> present is limited to Rumprun and Erlang beam VM, while the rest of
> the application (and dependencies) are stored on secondary media.
>
> An alternative path would be to evaluate the feasibility to bundle all
> the apps and dependencies as another blob (probably as zip as given in
> the link at the top) and a wrapper c code unpacks that into ram disk
> recreating the folder structure required by the Erlang VM. Ideally I
> would like to dwell on the first option before evaluating this one.
>
> Thanks,
> -Neeraj
> _______________________________________________
> erlang-questions mailing list
> 
> http://erlang.org/mailman/listinfo/erlang-questions
>



More information about the erlang-questions mailing list