Chapter 2. Installation

This chapter explains how to download, install and verify the software released by LIXA project.

System requirements

LIXA project is developed on an x86-64 based Ubuntu 14.04 system . LIXA project is ported on different Linux versions for x86-64: major stable releases are tested using some different configurations, please refer to file TestLog for an update. Installation on a different Linux distribution should be quite straightforward; installation on a different UNIX™ like system would probably need some work.

If you successfully installed LIXA on a different system, you might publish your experience on the public forum hosted on SourceForge.net and share your results with other users.

Pre-requisites

To compile LIXA software the GNU tools are needed: gcc, gmake, libtool. Autoconf and automake are used, but they should not be necessary if you install from the original tarball.

Some libraries (run time and development stuff) are necessary too:

  • libdl

  • libglib (libglib2.0-dev on Ubuntu)

  • libgmodule

  • libgthread

  • libm

  • libpthread

  • libuuid (uuid-dev on Ubuntu)

  • libxml2 (libxml2-dev on Ubuntu)

libglib (and others libg*) and libxml2 are discovered with pkg-config command, while the others must be in standard include PATH.

Client libraries for other languages

LIXA and XTA sources are developed using ANSI C: a standard and complete C build tool set is necessary to compile and link them. Client libraries for other languages are automatically built and installed if configure discover the proper tool at config time.

C++

C++ is available only for XTA: the legacy TX Transaction Demarcation standard interface is a pure C API and it does not make sense to wrap it as a set of C++ classes. Anyway, you should be able to use the ANSI C standard API inside a C++ program.

COBOL

If you are interested in COBOL, LIXA supports only Gnu COBOL 1.1 or upper; COBOL development and testing is currently performed on Ubuntu 14.04 with default COBOL version: 1.1

COBOL is actually supported only by the legacy TX Transaction Demarcation standard interface. XTA for COBOL is not available, but it could be implemented on users' request.

Python

Python is available only for XTA: implementing it for the legacy TX Transaction Demarcation standard interface would require a lot changes in Python specific resource (database) drivers.

XTA for Python works with Python 2 and Python 3, but the build procedure compiles and links just one version at a time. If your system uses Python 2 as the default Python version as in the following example:

tiian@ubuntu1404-64:~/lixa$ python --version
Python 2.7.6
	      

you configure XTA for Python 2 with a command like this one:

tiian@ubuntu1404-64:~/lixa$ ./configure --with-mysql --with-postgresql
	      

and you configure XTA for Python 3 with a command like this one:

tiian@ubuntu1404-64:~/lixa$ PYTHON_VERSION=3 ./configure --with-mysql --with-postgresql
	      

Packages for Linux Ubuntu

xsltproc, docbook-xsl and docbook-xml are necessary to produce this manual.

automake and autoconf are necessary to run the test suite (make check).

Packages for Linux CentOS (7.x)

This packages are necessary to create a build environment: glib2-devel.i686, libuuid-devel.i686, libxml2-devel.i686, gcc.i686, libtool.i686 and make.i686.

docbook5-style-xsl.noarch is necessary to produce this manual.

CentOS, RHEL and derivative notes

Version 6 of CentOS, RHEL and derivative Linux distributions ships a very old glib version and can't be used to compile LIXA source code since LIXA 1.3.2 . Use a newer Linux version or an older LIXA version.

Low level software pre-requisites

If you are trying to install LIXA software on a different operating system, these are some fundamental requirements:

  • poll: LIXA daemon uses this function for high parallelism network operations

  • mmap: LIXA daemon uses this function for high performance disk access

  • dlopen: LIXA transaction manager uses this function to dynamically load resource managers XA switch structures

  • uuid_generate: LIXA transaction manager uses this function to generate unique transaction identifiers (xid)

Without the above functions, a specific porting process is necessary to adapt LIXA to your system.

Hardware requirements

There's no specific hardware requirement for the client part of LIXA (libraries and utilities): the type of hardware you are using for your application will be sufficient to run your application even if you start to use LIXA libraries for TX or XTA.

LIXA state server, lixad, requires low latency disks to perform at its best: the lower the latency of the disks that hosts the state files, tipically /opt/lixa/var, the better. The best performance should be expected by a storage array with battery-backed cache or a technology with equivalent speed.

Co-requisites

An XA transaction manager is used to coordinate one or more XA resource managers. From a LIXA perspective there are basically 3 type of resource managers:

  1. LIXA: Resource Managers provided by the project that are useful only for testing and as sample implementations

  2. F/OSS: Resource Managers provided by Free/Open Source Software projects like PostgreSQL and MySQL

  3. Proprietary: Resource Managers provided by business corporations using commercial licensing.

There is not a list of supported third party resource managers, because LIXA is a project and not a product; this is the list of third party resource managers that have been tested in conjuction with LIXA transaction manager:

  • IBM DB2 Express-C 9.7 (32 bit) / IBS DB2 Express0C 11.1 (64 bit)

  • MySQL 5.0 (32 bit) / MySQL 5.1 (64 bit) / MySQL 5.6.34 (64 bit) [7]

  • Oracle XE 10.2 (32 bit) / Oracle XE 11.2 (64 bit)

  • Oracle SE 12.1 (64 bit) Instant Client

  • PostgreSQL 8.3 (32 bit) / PostgreSQL 8.4 (64 bit) / PostgreSQL 9.2 (64 bit)

  • WebSphere MQ 7.1 (32 bit)

Authorization

Important

The software produced by the LIXA project does not require any special authorization to run.

You can run the processes with the desired UNIX user you prefer but in this manual specific user and group will be used as a suggestion.

Create lixa user with Ubuntu
Use this commands in an Ubuntu based Linux system to create the lixa user and the lixa group:
tiian@ubuntu:~$ sudo su -
root@ubuntu:~# id
uid=0(root) gid=0(root) groups=0(root)
root@ubuntu:~# addgroup --system lixa
Adding group `lixa' (GID 113) ...
Done.
root@ubuntu:~# adduser --system --ingroup lixa --shell /bin/bash lixa
Adding system user `lixa' (UID 106) ...
Adding new user `lixa' (UID 106) with group `lixa' ...
Creating home directory `/home/lixa' ...
root@ubuntu:~# su -c id lixa
uid=106(lixa) gid=113(lixa) groups=113(lixa)
root@ubuntu:~# exit
logout
	  

Create lixa user with CentOS
Use this commands in an Ubuntu based Linux system to create the lixa user and the lixa group:
[tiian@centos ~]$ su -
Password:
[root@centos ~]# id
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)
[root@centos ~]# groupadd --system lixa
[root@centos ~]# useradd --system --no-user-group --gid lixa --home /home/lixa --create-home --shell /bin/bash lixa
[root@centos ~]# su -c id lixa
uid=496(lixa) gid=490(lixa) groups=490(lixa)
[root@centos ~]# exit
logout
	  

Refer to the man page of your Linux distribution if the above commands fail; on some distributions you must use su - instead of sudo su -.

Note

LIXA client communicates to LIXA server (daemon) throught TCP/IP and the client processes do not access the status files located in /opt/lixa/var/, only the lixad has to access the files. The LIXA client can be considered stateless because all the state information is persisted by the LIXA server.



[7] You must use InnoDB back-end to perform transactions with MySQL; MyISAM back-end is not supported.