1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
|
kerl
====
Easy building and installing of Erlang/OTP instances
Kerl aims to be shell agnostic and its only dependencies, excluding what's required to actually build Erlang/OTP, are curl and git.
Unless explicitely disabled, agner is installed automatically in the sandboxes for supported Erlang/OTP versions.
Downloading
===========
You can download the script directly from github:
$ curl -O https://github.com/evax/kerl/raw/master/kerl
$ chmod a+x kerl
How it works
============
Kerl keeps tracks of the releases it downloaded, built and installed,
allowing easy installations to new destinations (without complete rebuilding) and easy switches between Erlang/OTP installations.
Usage
=====
List the available releases (kerl ignores releases < 10):
$ ./kerl list releases
Getting the available releases from erlang.org...
R10B-0 R10B-2 R10B-3 R10B-4 R10B-5 R10B-6 R10B-7 R10B-8 R10B-9 R11B-0 R11B-1
R11B-2 R11B-3 R11B-4 R11B-5 R12B-0 R12B-1 R12B-2 R12B-3 R12B-4 R12B-5 R13A
R13B R13B01 R13B02 R13B03 R13B04 R14A R14B R14B01 R14B02
Run "./kerl update" to update this list from erlang.org
Pick your choice and build it:
$ ./kerl build R14B02
Downloading otp_src_R14B02.tar.gz to /home/evax/.kerl/archives
(curl progresses...)
Verifying archive checksum...
(curl progresses...)
Checksum verified (229fb8f193b09ac04a57a9d7794349b7)
Extracting source code
Building Erlang/OTP R14B02, please wait...
Erlang/OTP R14B02 has been successfully built
Fetching and building agner...
Agner has been successfully built
You can verify it's been registered:
$ ./kerl list builds
R14B02
Now install it to some location (optionally you can disable agner support by adding KERL_DISABLE_AGNER=yes to your $HOME/.kerlrc file):
$ ./kerl install R14B02 /path/to/install/dir/
Installing Erlang/OTP R14B02 in /path/to/install/dir...
Installing agner in /path/to/install/dir...
You can activate this installation running the following command:
. /path/to/install/dir/activate
Later on, you can leave the installation typing:
kerl_deactivate
Here again you can check the installation's been registered:
$ ./kerl list installations
R14B02 /path/to/install/dir
And at last activate it:
$ . /path/to/install/dir/activate
You're now ready to work with R14B02:
$ erl -version
Erlang (SMP,ASYNC_THREADS,HIPE) (BEAM) emulator version 5.8.3
$ agner version
0.4.15
You can use agner to install packages in your activated installation, they'll be directly available:
$ agner install cowboy
(...)
Installed to:
/path/to/install/dir/lib/erlang/lib/cowboy-@master
$ erl
(...)
Eshell V5.8.3 (abort with ^G)
1> application:start(cowboy).
ok
Note that you can also define a list of packages to be autoinstalled on agner enabled installations using the KERL_AGNER_AUTOINSTALL entry in you $HOME/.kerlrc file
When your done just type:
$ kerl_deactivate
Anytime you can check which installation, if any, is currently active with:
$ kerl active
No Erlang/OTP kerl installation is currently active
You can get an overview of the current kerl state with:
$ kerl status
Available builds:
R14B02
----------
Available installations:
R14B02 /path/to/install/dir
----------
Currently active installation:
The current active installation is:
/path/to/install/dir
You can delete builds and installations with the following commands:
$ kerl delete build R14B02
The R14B02 build has been deleted
$ kerl delete installation /path/to/install/dir
The installation in /path/to/install/dir has been deleted
Tuning
======
You can tune kerl using the .kerlrc file in your $HOME directory.
You can set the following variables:
- KERL_DOWNLOAD_DIR where to put downloaded files, defaults to $HOME/.kerl/archives
- KERL_BUILD_DIR where to hold the builds, defaults to $HOME/.kerl/builds
- KERL_CONFIGURE_OPTIONS options to pass to Erlang's ./configure script, e.g. --without-termcap
- KERL_MAKE_OPTIONS options to pass to make, e.g. -j2
- KERL_DISABLE_AGNER if non-empty will disable agner support
- KERL_AGNER_AUTOINSTALL a list of packages to pre-install
|