Debian e AS400

Riporto qui di seguito un post di Dennis Cuccarini (a cui vanno i miei più sentiti ringraziamenti e la mia stima per un post “idiot proof”) che spiega come far diventare amici Debian (sarge distro) e AS400

Ecco come collegarsi ad un server AS/400 tramite php installato su una macchina linux. Il sistema piu’ rapido sembra quello di usare l’odbc, ecco come ho proceduto:

1) Installare lo unix odbc:

[root@localhost]# apt-get install unixodbc

2) Scaricare il driver ibm odbc linux versione del 26 Settembre 2003 da qui. Occorre una registrazione gratuita.

3) Convertiamo il pacchetto per debian (qui il lavoro gia’ fatto):

/* ecco… questo passaggio non è andato a buon fine e perciò ho dovuto scaricare da dennis il pacchetto pronto per debian…. 🙁 */

[root@localhost]# alien -d iSeriesODBC-5.1.0-0.16.i386.rpm

4) Installiamo il pacchetto appena creato (o scaricato :P)

[root@localhost]# dpkg -i iseriesodbc_5.1.0-1.16_i386.deb
*******
nuovo pacchetto
dpkg -i iseriesaccess_5.2.0-2.14_i386.deb
*******************
5) Aggiungere la riga /opt/ibm/iSeriesODBC/lib/ al file /etc/ld.so.conf

**************
new
Aggiungere la riga /opt/ibm/iSeriesAccess/lib/ al file /etc/ld.so.conf
**************

6) Eseguire un ldconfig per aggiornare le librerie

7) Editare il file /etc/odbcinst.ini aggiungendo le seguenti righe:

[iSeries Access ODBC Driver]
Description = iSeries Access for Linux ODBC Driver
Driver = /opt/ibm/iSeriesODBC/lib/libcwbodbc.so
Setup = /opt/ibm/iSeriesAccess/lib/libcwbodbc.so
Threading = 2

[ODBC]
Trace = No
Trace File = /tmp/sql.log
Pooling = Yes

8) Aggiungere le seguenti righe al file /etc/odbc.ini :

[as400]
Description = iseries os400
DRIVER = iSeries Access ODBC Driver
SYSTEM = 192.168.50.1
ConnectionType = 2
Naming = 1
DefaultLibraries = QGPL
Decimal = 1
LANGUAGEID = “ITA”*

8) A questo punto verifichiamo che non manchi nessuna libreria con:

[root@localhost]# dltest /opt/ibm/iSeriesODBC/lib/libcwbodbc.so

Personalmente mi dava errore dicendo che non trovava la libstdc++-libc6.2-2.so.3, ma e’ stato sufficiente un

[root@localhost]# apt-get install libstdc++2.10-dbg

per risolvere il problema.

*********************************************************
aggiornamento e variante

dalla versione iseriesaccess_5.2.0-2.14_i386.deb
il programma dltest non viene più usato

Sull’ultima vesrsione di Ubuntu (8.10 Intrepid Ibex) il pacchetto per far girare il tutto è:
libstdc++5
che si può installare tramite il solito e mitico:

sudo apt-get install libstdc++5

**********************************************************

Ora se eseguite nuovamente dltest /opt/ibm/iSeriesODBC/lib/libcwbodbc.so vi rispondera’:

[root@localhost]# dltest /opt/ibm/iSeriesODBC/lib/libcwbodbc.so
SUCCESS: Loaded /opt/ibm/iSeriesODBC/lib/libcwbodbc.so

9) A questo punto testiamo realmente il collegamento all’as400:

[root@localhost]# isql -v as400

se otterrete una tabella come questa come risposta sara’ tutto ok:

[root@localhost]# isql -v as400 username password
+—————————————+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+—————————————+
SQL>

Altrimenti ricontrollate i file sopra.

10) Fine 🙂 A questo punto potrete collegarvi con i vostri script php alla macchina as/400 (usando le istruzioni odbc ovviamente, per le quali vi rimando al manuale).

___________________________________________________

Alcune considerazioni…

La procedura è con Debian Sarge; avendo personalmente aggiornato la versione a Etch ci sono dei problemi nella procedura di installazione dei pacchetti

Con l’aggiornamento a etch, php4-odbc risultava deinstall
dopo aver fatto un apt-get update upgrade (con la /etc/apt/sources.list con ‘etch’ al posto di ‘stable’, la situazione pacchetti è questa:

[root@localhost]#dpkg –get-selections | grep odbc

iseriesodbc deinstall
odbcinst1 deinstall
odbcinst1debian1 install
php4-odbc install
unixodbc install

se installo il vecchio driver per debian iseriesodbc_5.1.0-1.16_i386.deb

[root@localhost]# dpkg -i iseriesodbc_5.1.0-1.16_i386.deb

Spacchetto iseriesodbc (da iseriesodbc_5.1.0-1.16_i386.deb) …
dpkg: problemi con le dipendenze impediscono la configurazione di iseriesodbc:
iseriesodbc dipende da odbcinst1; comunque:
Il pacchetto odbcinst1 non è installato.

Questo perchè Etch ha sostituito il pacchetto odbcinst1 con odbcinst1debian1
Bisogna andare nel file dei pacchetti

[root@localhost]# vi /var/lib/dpkg/status

e editare la parte delle dipendenze di iseriesodbc:

odbcinst1debian1 al posto di odbcinst1

ho notato che in sistemi debian based, che le lib di iSeriesAccess fanno fatica ad essere linkate ( non sono capace io, è troppo disumana quell’accrocchio ) per cui ho semplicemente pensato di linkare le lib presenti in /opt/ibm/iSeriesAccess/lib/ in /usr/lib/

Così:

ln -s /opt/ibm/iSeriesODBC/lib/libcwbodbc.so /usr/lib/libcwbodbc.so
ln -s /opt/ibm/iSeriesODBC/lib/libcwbcore.so /usr/lib/libcwbcore.so

YYYYYYYYYEEEEEEEEEAAAAAAAAAAHHHHHHHHHHHHH

2 Responses to “Debian e AS400”

  1. […] Per fare un po’ di ordine riprendendo il vecchio post.. […]