Здесь располагаются заметки по установке клиента 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. Зачем - не известно, но не будем нарушать правила.
Клиент установлен. Файлы *.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 ====================================
Формат этого файла очень простой.
Несколько замечаний.
Имя сервера 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.
Для доступа к базам данных Informix из PERL применяется общий для PERL модуль DBI/DBD.
На сайте CPAN имеется модуль Informix DBI, самый последний на момент написания текста : DBD-Informix-2003.04
Первым делом, необходимо обновить модуль perl-DBI на версию выше >1.33. Например RPM, можно взять из RedoraCore, он прекрасно работает на RHAS 3 (тянет за собой perl-Time-HiRes).