3 Installation and Settings
EVL Installation
- Linux – RPM – installation on RedHat-like systems,
- Linux – DEB – installation on Debian-like systems,
- Other Unix systems – installation on MacOS, etc.
Settings after installation
- Settings – to set various environment variables,
- Text Editor – syntax highlighting in various editors.
3.1 Linux – RPM
i.e. RedHat, CentOS, Fedora, Oracle Linux.
For CentOS 8 firstly install required packages from powertools repo:
sudo dnf -y install dnf-plugins-core
sudo dnf config-manager --set-enabled powertools
sudo dnf install --enablerepo=powertools snappy-devel
To install all the libraries:
sudo dnf install -y gcc gcc-c++ zlib-devel libxml2 snappy-devel libicu \
gettext findutils binutils coreutils procps-ng \
info man sqlite bash-completion libaio openssl \
boost-iostreams boost-filesystem boost-regex \
boost-system boost-program-options
Use yum instead of dnf on older systems.
Then install EVL package itself. Package name might have different name, it depends on the system and/or edition. For example for CentOS version 7 it would be:
sudo dnf install evl-2.8.1-1.el7.x86_64.rpm
3.2 Linux – DEB
i.e. Ubuntu, Debian, etc.
sudo apt-get install gcc g++ zlib1g-dev libxml2 libsnappy-dev libicu-dev \
gettext-base binutils coreutils bsdmainutils procps \
info man-db sqlite bash-completion |
dos2unix libncurses-dev libncurses5-dev
Then install EVL package itself. Package name might have different name, it depends on the edition. For example for Debian it would be:
sudo apt-get install evl-utils_2.8.1-1_all.deb
sudo apt-get install evl-tool_2.8.1-1_amd64.deb
3.3 Other Unix systems
i.e. Mac OS, etc.
Basically any standard Unix system with Bash and couple of standard utilities (gettext, binutils, coreutils) and libraries (boost, snappy, xml2, etc.) is possible.
Ask support@evltool.com for help.
3.4 Settings
EVL installation resides (usually) in
/opt/evl
To initiate EVL for current user, run
/opt/evl/bin/evl --init
which adds an .evlrc file into your $HOME folder and adds sourcing it into $HOME/.bashrc.
Then one can check, add or modify some settings in .evlrc, for example variable EVL_ENV.
These settings are top level settings for given user. (Later there are project.sh files in each project, to set project-wide variables.)
After that EVL is ready to use. Good to start is to create new project with some sample data, jobs and workflows:
evl project sample my_first_sample
3.4.1 Compiler
Mappings are compiled either by GCC or Clang. It depends on environment variable EVL_COMPILER,
these two values are possible:
EVL_COMPILER=gcc
EVL_COMPILER=clang
If this variable is not set, then on Linux systems is GCC by default, and on Windows and Mac it is Clang.
GCC must be at least in the version 7.4 and Clang at least 6.0.
When Clang would be the option, one can replace gcc/c++ packages by clang above in installation instructions.
3.4.2 Project
EVL project is a directory with EVL jobs, workflow, data structure definitions, mappings, etc. Each project is intended for a group of jobs and workflows which are grouped somehow from the business point of view. So completely unrelated processings, which share nothing, would be good to place in separate projects.
project.sh
Each project has project.sh file inside. This file contains project-wide settings.
If the project is created by evl project new or by evl project sample command,
then project.sh would contain a good set of variables to start with.
Path to log and tmp folders are handled by environment variables:
EVL_PROJECT_LOG_DIR
path to folder where log files are stored,
EVL_PROJECT_TMP_DIR
path to folder where temporary files are stored.
By default are these variables set to:
EVL_PROJECT_LOG_DIR="$EVL_LOG_PATH/<project_name>"
EVL_PROJECT_TMP_DIR="$EVL_TMP_PATH/<project_name>"
These values can be override in project.sh file.
Project directory structure
In each project directory, there would be these files and folders:
build/
contains subdirectories of compiled components of each job (one subfolder equals to one evl file).
doc/
generated and/or custom documentation of the project.
evc/*.evc
EVL custom component definition files.
evd/*.evd
EVL data definition files.
evs/*.evs
EVL job structure files (job definition itself, sometimes called a graph of ETL process).
evm/*.evm
EVL mapping files for components Aggreg, Join and Map.
ews/*.ews
EVL workflow structure files.
job/*.evl
files, called by evl run command, which specify the variables for the job structure, i.e. it contains parameters of the job described by evs file.
workflow/*.ewf
EVL workflow parameter files for ews files.
project.sh
This file is interpreted as bash shell script at the beginning of each job in the project. Usually contains all project wide variables.
3.5 Text Editor
All you need to work with EVL is having a text editor.
Whatever text editor is your favourite, it is good to set syntax highlighting this way:
| Syntax | File mask |
|---|---|
| Bash | *.evs, *.evl, *.evc, *.ewf, *.ews |
| C++ | *.evm, *.evd |
3.5.1 Vim
To achieve syntax to be properly highlighted in Vim, just add these lines into your ~/.vimrc file:
" EVL settings "
autocmd BufRead,BufNewFile *.ev[slc] set syntax=sh
autocmd BufRead,BufNewFile *.ew[fs] set syntax=sh
autocmd BufRead,BufNewFile *.ev[md] set syntax=c