This chapter explains how to download, install and verify the software released by LIXA project.
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.
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
.
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++ 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.
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 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 |
xsltproc, docbook-xsl and docbook-xml are necessary to produce this manual.
automake and autoconf are necessary to run the test suite (make check).
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.
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.
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.
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:
LIXA: Resource Managers provided by the project that are useful only for testing and as sample implementations
F/OSS: Resource Managers provided by Free/Open Source Software projects like PostgreSQL and MySQL
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)
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.
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
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 -”.
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.