Клиент Informix на Linux

    Здесь располагаются заметки по установке клиента Informix на Linux.

    В качестве операционной системы применяется RedHat Enterprisr Linux AS 3 (Taroon). Как вы прекрасно понимаете, операционная система (Unix) может быть абсолютно любая, Linux в том числе. Рассматриваться же здесь будет только RHAS.

    В качестве DBMS применяется: IBM Informix Dynamic Server Version 9.40.UC2. Опять же, Informix-сервер может быть совершенно любой, в том числе SE, IDS, IUS и т.д. даже под Windows. Работу с сервером мы здесь не рассматриваем.

    Клиент, которым мы будем пользоваться : IBM Informix CSDK Version 2.81. На момент написания статьи -- это самый последний клиент от IBM. См. CSDK

Установка клиента

    Сначала насколько слов об "архитектуре" клиентов Informix. Существуют две разновидности клиента : Connect и Client SDK. На самом деле их конечно больше, но дальше уже начинаются "толстые" средства разработки Informix, типа 4GL.

    Клиент типа Connect содержит только необходимые библиотеки Informix (.so, NLS/GLS) и предназначен для запуска уже готовых приложений. Client SDK предназначен для разработки приложений и вдобавок содержит заголовочные файлы, примеры приложений и кроме того "пред-компилятор" ESQL/C.

    CSDK можно скачать с сайта IBM совершенно бесплатно, лицензия на него вбита прямо в скрипты инсталляции и ее нигде не требуют. Стандарта на имя дистрибутивного файла нет (встречаются самые странные комбинации из тире, точек, подчерков и сокращений), но в имени файла обязательно должна присутствовать латинская "U" - 32бит Unix (например "-UC1-"). Когда-то давно Informix, а позже IBM раздавали CSDK в формате RPM, по крайней мере встречался csdk-2.70.UC3-1.i386.rpm, но теперь раздают только .tgz   :( Если кому-то встретится, дайте знать.

    Итак, предположим мы скачали clientsdk.2.81.UC3.LINUX-I32.tar длиной почти 67Мб.

[root@host dist]# tar xvf clientsdk.2.81.UC3.LINUX-I32.tar
-rw-rw-rw- buildadm/RAND 68766720 2003-12-08 06:14:35 csdk.cpi
drwxrwxrwx buildadm/RAND 0 2003-12-08 06:17:13 ./doc/
...

    Внутри оказывается архив программы cpio. Развернем его.

[root@host ifx]# cpio -i < /dist/csdk.cpi
134305 blocks
[root@host ifx]# rm csdk.cpi
[root@host ifx]# ls -l
total 67240
-rw-rw-rw- 1 32100 1360 28231680 Oct 20 14:47 clientsdkcontent.cpio
drwxrwxrwx 2 32100 1360     4096 Dec  8  2003 doc
-rw-rw-rw- 1 32100 1360 36541440 Oct 20 14:47 gls.cpio
-rwxr-xr-x 1 32100 1360    13760 Oct 20 14:47 installclientsdk
-rwxr-xr-x 1 32100 1360    13732 Oct 20 14:47 install_gls
-rwxr-xr-x 1 32100 1360    14704 Oct 20 14:47 install_msg
-rw-rw-rw- 1 32100 1360  3947520 Oct 20 14:47 message.cpio

    Все готово к инсталляции. Теперь займемся системой.

    Надеюсь, в RPM все эти процедуры выполнялись автоматически. К сожалению, новых версий CSDK в формате RPM больше нет, так что будем ставить все руками (пусть даже нарушая стандарты RedHat).

1) Ставить будем в каталог /opt/informix где собственно ему и место (для продуктов 3-х фирм)

2) Необходимо завести пользователя informix и группу informix. Номера uid и gid могут быть любыми. Например, uid=111 и gid=111

    Обратите внимание на домашний каталог пользователя.

==== /etc/passwd =====================================
informix:x:111:111:Informix:/opt/informix:/bin/bash
======================================================
==== /etc/group =========
informix:x:111:
=========================

3) Необходимо создать домашний каталог пользователя informix и назначить ему владельца :

[root@host ifx]# ls -l /opt/
total 8
drwxr-xr-x   11 informix informix     4096 Sep 21 18:21 informix

ВНИМАНИЕ: Это очень важный каталог, именно он обозначается как INFORMIXDIR=/opt/informix

4) Для серверов версии >9 инсталляция клиента должна происходить от имени пользователя informix. Зачем - не известно, но не будем нарушать правила.

  1. Прикинемся на время пользователем informix:
    # su -  informix
    $ cd ~
  2. Скопируем все развернутые файлы: cpio и скрипты в домашний каталог ~/informix
    $ cp /dist/ifx/* .
  3. Установим переменную окружения
    $ export INFORMIXDIR=/opt/informix
  4. Запускаем инсталляцию
    $ ./installclientsdk

    Клиент установлен. Файлы *.cpio инсталляционный скрипт убьет самостоятельно.

Настройка клиента

1) Необходимо установить переменные окружения Informix. Для того, чтобы они были доступны всем пользователям, в том числе и например, серверу Apache, их следует сделать системными. В дистрибутиве RedHat есть очень удачное место -- каталог /etc/profile.d где лежит масса настроечных скриптов, экспортирующих кучу переменных.

==== /etc/profile.d/informix.sh ======
# Informix Client

export THREADLIB=POSIX

export INFORMIXSERVER=server_soc
export INFORMIXDIR=/opt/informix
export IDIR=$INFORMIXDIR
export PATH=$PATH:${INFORMIXDIR}/bin

export DB_LOCALE=ru_ru.CP1251
export CLIENT_LOCALE=ru_ru.KOI-8
export SERVER_LOCALE=ru_ru.CP1251

export DBDATE="dmy4."
export DBMONEY=.
=======================================

    И сделать этот файл исполняемым. Обратите внимание, что локаль сервера - Windows-1251, а клиента - KOI8-R

2) Начинаем настраивать доступ к серверу. Первым делом необходимо отредактировать файл $INFORMIXDIR/etc/sqlhosts . Здесь хранятся названия серверов и способ доступа к ним.

==== /opt/informix/etc/sqlhosts ====
#
#server		acces		DNS name	secvice		options
#		/ type				/ socket
#
server_soc	onsoctcp	dbserver.ru	infx_soc
#server_shm	onipcshm	dbserver.ru	infx_shm
====================================

    Формат этого файла очень простой.

  1. Имя сервера баз данных. Собственное имя сервера Informix, к которому осуществляется доступ.
  2. Тип доступа (nettype). Сложное поле, состоящее из трех частей
    1. Тип сервера: on - Online Server, IDS; se - Infornix SE server
    2. Способ соединения: soc - Сокеты; ipc - локальный Interprocess Communication
    3. Конкретный способ соедиенения: tcp - TCP/IP; shm - разделяемая память
  3. Имя сервера (хоста), на котором крутится база данных. Для TCP/IP - доменное имя или IP адрес.
  4. Имя сокета или порта TCP/IP для доступа к серверу. (Чаще всего порт 1425)
  5. Опции. Нужны для некоторых типов соедиения

    Несколько замечаний.

    Имя сервера Informix и имя хоста -- совершенно разные вещи. На одном хосте (теоретически) может крутится несколько серверов баз данных.

    Хост (компьютер) должен отвечать по доменному имени (резолвится в DNS). В противном случае необходимо прописать этот хост в /etc/hosts

    Имя порта для TCP/IP должно быть прописано в /etc/services

====== /etc/services ===============
...
infx_soc	1425/tcp	# Informix Dynamic Server
====================================

2) Необходимо прописать путь к динамическим библиотекам в /etc/ls.so.conf

==== /etc/ls.so.conf ====
...
/opt/informix/lib
/opt/informix/lib/esql
/opt/informix/lib/cli
=========================

    и запустить ldconfig.

    На этом настройку клиента можно считать законченной.

Утилиты.

    К сожалению, в состав клиента Informix не входит утилит диалогового режима SQL (как например mysql). Такая утилита (ISQL, она же DB-Connect ) в принципе существует и входит в состав некоторых коммерческих продуктов Informix  (Server, 4GL) которые мы не рассматриваем.

    Однако существуют утилиты клиента Informix от других разработчиков, например SQLCMD.

Установка DBD::Informix.

    Для доступа к базам данных Informix из PERL применяется общий для PERL модуль DBI/DBD.

    На сайте CPAN имеется модуль Informix DBI, самый последний на момент написания текста : DBD-Informix-2003.04

    Первым делом, необходимо обновить модуль perl-DBI на версию выше >1.33. Например RPM, можно взять из RedoraCore, он прекрасно работает на RHAS 3 (тянет за собой perl-Time-HiRes).

 

Установка PHP Informix.

 

Установка ODBC Informix

 

http://www.iiug.org/software/