Linux e AS400: collegarsi a DB2 via ODBC con Debian Lenny (1/2)

Da quando, per lavoro, ho a che fare con un IBM System i (l’AS/400, per intenderci), mi è capitato di avere la necessità di estrarre dati per elaborarli con programmi esterni, scritti da me. La maggior parte di questi programmi sono script PHP che girano sotto Linux, una Debian Lenny. La connessione all’AS/400 avviene via ODBC, attraverso il driver fornito dalla stessa IBM, dopodichè è sufficiente utilizzare le normali funzioni ODBC fornite da PHP5.

Debian e AS/400


Nella prima parte della guida, vedremo come configurare la connessione ODBC fra la nostra macchina Linux (nel caso specifico Debian Lenny, che sarà il prossimo rilascio stabile) e il database DB2 dell’AS/400, un iSeries V5R4:

Installare i pacchetti necessari:

Per prima cosa, è necessario installare alcuni pacchetti che saranno utili in seguito. Alien servirà a convertire il client IBM da rpm a deb mentre UnixODBC sarà il nostro gestore delle connessioni ODBC. Lanciamo quindi, da root, il seguente comando:
apt-get install alien unixodbc

Scaricare iSeries Access:

A questo punto, bisognerà scaricare il Client Access (oggi chiamato iSeries Access): non è altro che il software fornito da IBM per collegarsi all’AS/400 da un PC, e viene rilasciato anche per Linux nelle versioni x86, x64 e PPC. Il pacchetto contiene sia l’emulazione di terminale (che non ci servirà) che il driver ODBC. Per scaricare il software, è necessario registrarsi gratuitamente sul sito IBM; una volta ottenute le credenziali, lì’indirizzo per scaricare iSeries Access (attualmente l’ultima versione per Linux è la 1.4) è questo:

Convertire iSeries Access in .DEB:

Una volta scaricato il pacchetto, è necessario convertirlo da RPM a DEB per poterlo installare comodamente sulla nostra Debian Lenny. Utilizziamo quindi, come root, il programma Alien (pacchetto.rpm è il file che abbiamo scaricato):
alien -d --scripts pacchetto.rpm

Installare iSeries Access:

Dopo la conversione in DEB, il pacchetto va installato con DPKG (pacchetto.deb è il pacchetto appena creato con Alien):
dpkg -i pacchetto.deb

Configurare UnixODBC:

Dopo aver installato tutti i pacchetti necessari e il client fornito da IBM, bisogna impostare UnixODBC in modo che renda disponibile un DSN alle applicazioni che intendano collegarsi all’AS/400. Il file di configurazione interessato è /etc/odbc.ini, a cui aggiungeremo queste righe:


[AS400]
Description = iSeries Access ODBC Driver
Driver = iSeries Access ODBC Driver
System = AAA.BBB.CCC.DDD
Naming = 0
DefaultLibraries = QGPL
Database =
ConnectionType = 0
CommitMode = 2
ExtendedDynamic = 1
DefaultPkgLibrary = QGPL
DefaultPackage = A/DEFAULT(IBM),2,0,1,0,512
AllowDataCompression = 1
LibraryView = 0
AllowUnsupportedChar = 0
ForceTranslation = 0
Trace = 0

La prima riga, tra parentesi quadre, contiene il nome della connessione che dovremo poi utilizzare. Il parametro “System“, invece, è l’indirizzo IP dell’AS/400 sulla nostra rete.

Conclusioni:

A questo punto, il collegamento ODBC verso l’AS/400 è configurato: appuntamento a domani per la seconda parte della guida, in cui vedremo come collegarci all’AS/400 con PHP, attraverso le funzioni ODBC e qualche piccolo accorgimento.

This entry was posted in tuxfeed and tagged , , , , , , , , . Bookmark the permalink.

11 Responses to Linux e AS400: collegarsi a DB2 via ODBC con Debian Lenny (1/2)

  1. Pingback: ZicZac.it, clicca qui e vota questo articolo!

  2. Pingback: upnews.it

  3. Pingback: PHP5 e AS400: utilizzare DB2 via ODBC con PHP (2/2) - Matteo Moro

  4. Pingback: PHP e AS400 via ODBC: problemi con alcuni caratteri - Matteo Moro

  5. ermes says:

    Grazie sei stato di un’utilità estrema :D

  6. Matteo says:

    @ermes:
    Ne sono felice! Se ti serve (ma probabilmente l’hai già vista) c’è anche la seconda parte della guida: http://www.matteomoro.net/2008/03/12/php5-e-as400-utilizzare-db2-via-odbc-con-php-22/

  7. Cthulhu says:

    Gli anni passano ma il problema resta. :)

    Una sola aggiunta: installando oggi l’iSeries Access “a mano” su una Gentoo, mi e’ toccato configurare anche il file odbcinst.ini:


    [iSeries Access ODBC Driver]
    Description = iSeries Access for Linux ODBC Driver
    Driver = /opt/ibm/iSeriesAccess/lib/libcwbodbc.so
    Setup = /opt/ibm/iSeriesAccess/lib/libcwbodbcs.so
    Driver64 = /opt/ibm/iSeriesAccess/lib64/libcwbodbc.so
    Setup64 = /opt/ibm/iSeriesAccess/lib64/libcwbodbcs.so
    Threading = 2
    DontDLClose = 1
    UsageCount = 1

    Grazie per le imprecazioni che mi hai fatto evitare! :)

    velocissimamente,
    Cthulhu

  8. roberto says:

    Ottima guida.

    Solo che io continuov ad avere questo errore:

    [01000][unixODBC][Driver Manager]Can’t open lib ‘/opt/ibm/iSeriesAccess/lib/libcwbodbc.so’ : file not found
    [ISQL]ERROR: Could not SQLConnect

    Ho seguito la tua guida alla perfezione e posso dirti che sono su debian 5, i driver sono a 32bit.

    • Heruan says:

      Ciao, ho lo stesso problema:

      [01000][unixODBC][Driver Manager]Can't open lib '/opt/ibm/iSeriesAccess/lib/libcwbodbc.so' : file not found

      ma il file esiste:

      $ ls -l /opt/ibm/iSeriesAccess/lib/libcwbodbc.so
      -r-xr-xr-x 1 root root 729284 May 23 2007 /opt/ibm/iSeriesAccess/lib/libcwbodbc.so

      Tu sei riuscito a risolverlo?

Lascia un Commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati *

*

È possibile utilizzare questi tag ed attributi XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Ricevi un avviso se ci sono nuovi commenti. Oppure iscriviti senza commentare.