Ésta es una receta para instalar Informix Dynamic Server Developer Edition en una RaspberryPi utilizando raw devices (Como somos sysadmines, queremos raw devices).

Se me ocurrió realizar esta guía dado que Informix es un excelente motor de base de datos y poco conocido o que goza de la reputación de “misterioso”, entonces, para aprender Informix, que mejor que una RaspberryPi, un poco de tiempo y las ganas de aprender algo nuevo !

Prerequisitos:

  • RaspberryPi modelo B
  • Por lo menos una SD para el sistema operativo de la RaspberryPi y un pendrive de ocho gigas para los raw devices. Recomendable: una SD para el booteo, un pendrive para el sistema operativo y otro pendrive para la base de datos. Esta última configuración es la que vamos a usar en este tutorial.
  • Como sistema operativo se utiliza raspbian con los paquetes libaio1 y lvm2 instalados a mano, ya que no vienen instalados por defecto.
  • El Informix propiamente dicho, Informix Developer Edition for Linux ARM v6 32 (Raspberry PI) Version 10UC4DE, (es un tar llamado ids.12.10.UC4DE.Linux-ARM6.tar) desde el sitio de IBM . Hay que registrarse como usuario para obtener el IbmId, son sólo 5 minutos.

Instalación

Parto de la base que tenes la raspi instalada con raspbian, funcionando, y con acceso de root. Antes que nada hay que instalar dos paquetes que no vienen instalados por defecto: libaio1 y lvm2.

Consideraciones: En mi raspi tengo dos pendrive y una SD, como les había contado antes. Así que, seguramente el nombre del dispositivo asociado al pendrive va a ser distinto (se puede copiar, reemplazar y pegar también)

Como root:

apt-get install libaio1
apt-get install lvm2

Una vez agregados los paquetes: vamos a crear el grupo y usuario Informix.

addgroup informix
adduser --ingroup informix Informix

Vamos a preparar el almacenamiento para la base de datos (los famosos raw devices):

Primero, vamos a determinar cuál es nuestro pendrive, que vamos a utilizar para nuestra base creándole los raw devices:

Ejecutamos dmesg para ver nuestro pendrive

[ 4.766035] scsi 1:0:0:0: Direct-Access Kingston DataTraveler 2.0 1.00 PQ: 0 ANSI: 4
[ 4.780904] sd 1:0:0:0: [sdb] 15148608 512-byte logical blocks: (7.75 GB/7.22 GiB)
[ 4.794613] sd 1:0:0:0: [sdb] Write Protect is off
[ 4.840400] sd 1:0:0:0: [sdb] Attached SCSI removable disk

Ya sabemos que es sdb. Entonces procedamos a armar los raw devices.

Antes que nada, el proceso en sí mismo, conceptualmente es: generar logical volumes sobre el pendrive y despues, sobre cada uno de los lv's generar un raw device.

Creamos los logical volume

root@raspberrypi:~# pvcreate /dev/sdb
Writing physical volume data to disk "/dev/sdb"
Physical volume "/dev/sdb" successfully created
root@raspberrypi:~# vgcreate vginformix /dev/sdb
Volume group "vginformix" successfully created
root@raspberrypi:~# lvcreate -n lvrootdbs -L +500M vginformix
Logical volume "lvrootdbs" created
root@raspberrypi:~# lvcreate -n lvdatadbs00 -L +2G vginformix
Logical volume "lvdatadbs00" created
root@raspberrypi:~# lvcreate -n lvdatadbs01 -L +2G vginformix
Logical volume "lvdatadbs01" created
root@raspberrypi:~# lvcreate -n lvtempdbs00 -L +500M vginformix
Logical volume "lvtempdbs00" created
root@raspberrypi:~# lvcreate -n lvlogsdbs -L +500M vginformix
Logical volume "lvlogsdbs" created

Chequeamos que hayan sido creados bien.

root@raspberrypi:~# lvs
LV          VG         Attr     LSize   Pool Origin Data%  Move Log Copy%  Convert
lvdatadbs00 vginformix -wi-a---   2.00g
lvdatadbs01 vginformix -wi-a---   2.00g
lvlogsdbs   vginformix -wi-a--- 500.00m
lvrootdbs   vginformix -wi-ao-- 500.00m
lvtempdbs00 vginformix -wi-a--- 500.00m

Generamos los raw devices.

root@raspberrypi:~# raw /dev/raw/raw1 /dev/vginformix/lvrootdbs
root@raspberrypi:~# /dev/raw/raw1:  bound to major 254, minor 0
root@raspberrypi:~# raw /dev/raw/raw2 /dev/vginformix/lvdatadbs00
root@raspberrypi:~# /dev/raw/raw2:  bound to major 254, minor 1
root@raspberrypi:~# raw /dev/raw/raw3 /dev/vginformix/lvdatadbs01
root@raspberrypi:~# /dev/raw/raw3:  bound to major 254, minor 2
root@raspberrypi:~# raw /dev/raw/raw4 /dev/vginformix/lvtempdbs00
root@raspberrypi:~# /dev/raw/raw4:  bound to major 254, minor 3
root@raspberrypi:~# raw /dev/raw/raw5 /dev/vginformix/lvlogsdbs
root@raspberrypi:~# /dev/raw/raw5:  bound to major 254, minor 4

Una vez generados los raw devices, tenemos que cambiarles el propietario y los permisos de acceso, y luego verificamos que haya quedado todo bien. (es muy importante tomar nota del nombre de los raw)

root@raspberrypi:~# chown informix.informix /dev/raw/raw[0-9]
root@raspberrypi:~# chmod 660 /dev/raw/raw[0-9]
root@raspberrypi:~# ls -la /dev/raw

total 0
drwxr-xr-x  2 root     root        160 Jun 20 12:43 .
drwxr-xr-x 14 root     root       3380 Jun 20 12:41 ..
crw-rw----  1 informix informix 162, 1 Jun 20 12:38 raw1
crw-rw----  1 informix informix 162, 2 Jun 20 00:31 raw2
crw-rw----  1 informix informix 162, 3 Jun 20 00:31 raw3
crw-rw----  1 informix informix 162, 4 Jun 20 00:32 raw4
crw-rw----  1 informix informix 162, 5 Jun 20 12:43 raw5
crw-------  1 root     root     162, 0 Dec 31  1969 rawctl

Ahora viene la parte de instalación del motor de base de datos.

Antes que nada, es conveniente mover y descomprimir el archivo de instalación de Informix en un directorio temporal.

mv ids.12.10.UC4DE.Linux-ARM6.tar /tmp
cd /tmp
tar xvf ids.12.10.UC4DE.Linux-ARM6.tar

Vamos a encontrar el archivo ids_install. Ese archivo es el ejecutable de nuestro asistente de instalación.

root@raspberrypi:/tmp# ls -la
total 910192
drwxrwxrwt  6 root root        4096 Jun 20 00:32 .
drwxr-xr-x 22 root root        4096 May 29 23:59 ..
drwxr-xr-x  2 root daemon      4096 Dec 17  2014 doc
drwxrwxrwt  2 root root        4096 Jun 19 22:17 .ICE-unix
-rw-r--r--  1 root root   466042880 Jan  5 16:17 ids.12.10.UC4DE.Linux-ARM6.tar
-rwx------  1 root root   465965056 Dec 18  2014 ids_install
drwx------  2 root root        4096 Jun 20 00:12 mc-root
drwxrwxrwt  2 root root        4096 Jun 19 22:17 .X11-unix

Lo ejecutamos:

root@raspberrypi:/tmp# ./ids_install

Nos aparecerá la siguiente pantalla:

============================================
Bundle Software
============================================
*
* Texto de la licencia
* 
	1. Accept the license, 2. Decline the License, 3. Continue Reading.

Aparecen los terminos de la licencia.

  • Y la aceptamos, presionando 1

Después nos aparece la pantalla de presentación de software a instalar, las opciones por defecto son las que nos sirven.

============================================
Informix Software Bundle
============================================
Select the Products to Install:

[X] 1. 'Informix_Dynamic_Server'.
[X] 2. 'Informix_JDBC'.
[X] 3. 'Informix_ClientSDK'.
[ ] 4. 'Informix_Connect'.

============================================

Informix Dynamic Server es el servidor propiamente dicho.
Informix JDBC son los drivers de Informix para Java
Informix ClientSDK es el sdk para programar aplicaciones cliente usando librerias de funciones nativas.

Apretamos ENTER para aceptar las opciones por defecto.

============================================
Informix Software Bundle
============================================
*
*
*
Specify a directory where to install the products:
ENTER to proceed:/opt/IBM/informix

En este punto, vamos a especificar el directorio de instalación a /opt/IBM/informix apretamos 1 para aceptar la licencia de IDS

Esperar un rato largo, servirse un café, una gaseosa, o lo que guste, mientras se instala el motor de base de datos.

Después aparece la instalación del SDK

============================================
Informix_ClientSDK
============================================
*
* Texto de la licencia
* 
	1. Accept the license, 2. Decline the License, 3. Continue Reading.

Cuando llegue el momento de instalar el SDK, volver a apretar 1 para aceptar la licencia

Por último aparece ésta pantalla:

============================================
Informix_ClientSDK
============================================
*
*
* 
	Installation was successful.
============================================

root@raspberrypi:/tmp#

En la próxima entrega, les voy contar como configurar el motor de base de datos, crear la primera base y hacer nuestra primera consulta.

Saludos, y hasta la próxima