# Installing eXtremeDB on Unix/Linux

> After downloading, simply extract the contents of the tar archive file to a convenient directory with a tar command like the following:

>         tar xzf extremedb_7.0_fe_linux_x86_obj_x64.tar.gz

> This will extract the archive contents to the directory `eXtremeDB`. Now all of the software components necessary to build eXtremeDB applications with C, C++, Java and Python, as well as documentation and SDK samples, are available in the root directory `eXtremeDB`. If you purchased eXtremeDB for HPC, after installation, the directory tree under your current directory will look like the following:

>         ./eXtremeDB
>         ./eXtremeDB/documentation
>         ./eXtremeDB/host
>         ./eXtremeDB/include
>         ./eXtremeDB/odbc
>         ./eXtremeDB/samples
>         ./eXtremeDB/target
>         ./eXtremeDB/license.txt
>         ./eXtremeDB/makefile

See Package Contents for an explanation of these contents.

## Setting up the Development Environment

> The Java and Python SDK samples require that a Java JDK and a Python interpreter be installed on the development system and environment variables must be set appropriately using the `export` command.

## Java

> The Java SE (Standard Edition) JDK is required to build and run the eXtremeDB Java samples. (The JDK may be downloaded from the Oracle site: http://www.oracle.com/technetwork/java/javase/downloads. It does not matter if JDK x32 or x64 is used because both Java compilers generate the same byte-code.)

> Please be aware that eXtremeDB has not been thoroughly tested with other JDKs (OpenJDK, etc.) and its proper functioning with these other JDKs is not guaranteed. If, when trying an alternate JDK, the `MCO_E_VERS_MISMATCH` error code is returned from the eXtremeDB Java API, it is recommended to switch to the Oracle JDK.

> Also, the environment variable `JAVA_HOME` needs to be defined, and the `PATH` variable needs to be correctly set: `JAVA_HOME` must point to the directory where Java is installed and the `PATH` variable needs to include the java binaries directory. For example, assuming that you installed the JDK version 1.8.0, the `JAVA_HOME` path would be:

>         export JAVA_HOME=/usr/java/jdk1.8.0_65

> The `PATH` system variable then needs to be modified to include the JDK binaries directory, for example:

>         export PATH=/usr/java/jdk1.8.0_65/bin:$PATH

## Python

> Starting with Release 8.2 (build 1801) eXtremeDB supports Python versions 2.7, 3.5, 3.6, 3.7, 3.8 on Linux and Windows, as well as versions 2.7, 3.7 and 3.8 on MacOS. See Python 3 and Wheels.

> ## ODBC

> The eXtremeSQL and eXtremeDB for HPC packages include the McObject `ODBC` driver which can be used to connect to eXtremeDB databases. The `ODBC` driver library `libmcoodbc_drv.so` (and debug version `libmcoodbc_drv_debug.so`) is installed in directory `eXtremeDB/odbc/bin.so`. The setup procedures are applied via the configuration files:

> `/etc/odbcinst.ini` which contains a list of the drivers registered on the system. For example (where `/home/user/eXtremeDB` represents the root directory of the eXtremeDB installation):

> >         [eXtremeSQL]
> >         Description     = ODBC for eXtremeSQL
> >         Driver          =
> >         Setup           =
> >         Driver64        = /home/user/eXtremeDB/odbc/bin.so/libmcoodbc_drv_debug.so
> >         Setup64         =
> >         FileUsage       = 1

> - `~/.odbc.ini` which is the user-specific list of DSN (Data Source Names). For example :

> >         [EXDB]
> >         Description     = eXtremeSQL data source
> >         Driver          = eXtremeSQL
> >         #DATABASE        = exdb
> >         SERVER          = localhost:5099

> Please use this link for an overview and examples of ODBC connections to local and remote eXtremeDB databases.

> ## JDBC

> The eXtremeSQL and eXtremeDB for HPC packages include a `JDBC` driver to provide access for Java applications to an eXtremeSQL server using a widely applicable industry connectivity standard.

> The eXtremeSQL`JDBC` driver is a pure-java "Type 3" driver designed for `JDK/JRE 1.6.x` that interacts with the eXtremeSQL server-side middle-ware that then accesses the eXtremeDB database. It is implemented in the Java archive file `extremedb_jdbc.jar` in the `target/bin` directory.

> To make the driver accessible to an application this file must be specified in the `PATH` and `JAVA_HOME` environment variables. For example:

>         export JAVA_HOME=/usr/java/jdk1.6.0_34
>         export PATH=/usr/java/jdk1.6.0_34/bin:$PATH

> Please use this link for an overview and examples of JDBC application using local and remote eXtremeDB databases.

> ## OpenSSL

> While the environment variable MCO_OPENSSL_INCLUDE_PATH is used to build the eXtremeDB libraries with the chosen OpenSSL installation, variables PATH and LD_LIBRARY_PATH need to be adjusted in order to run an application with OpenSSL.

> For example:

>        export MCO_OPENSSL_INCLUDE_PATH=/home/account/openssl/openssl-1.1.1i/64/include
>        export PATH=/home/account/openssl/openssl-1.1.1i/64/bin:$PATH
>        export LD_LIBRARY_PATH=/home/account/openssl/openssl-1.1.1i/64/lib:$LD_LIBRARY_PATH