IBM bietet mit iSeriesAccess einen ODBC-Treiber für ihr DB2-Datenbanksystem. Die RPM-Pakete lassen sich nur mit Login von der Seite herunterladen. Wer nicht über ein IBM.Login verfügt, findet vielleicht auch hier das passende Paket.
iSeriesAccess 7.1.0 fordert als Abhängigkeit die Datei libodbcinst.so.1. Die aktuelle Version von unixODBC (2.2.14) installiert jedoch die Datei libodbcinst.so.2:
[root@testsrv05 ~]# rpm -qR unixODBC | grep libodbcinst libodbcinst.so.2()
Aus diesem Grund wird auch folgendes nicht funktionieren:
yum localinstall ISeriesAccess-7.1.0-1.0.i386.rpm
Das Paket muss mit folgendem Befehl installiert werden:
yum install unixODBC rpm -Uvh --nodeps ISeriesAccess-7.1.0-1.0.i386.rpm
Bei einem anschliessenden Test schlägt der Verbindungsversuch jedoch fehl:
[root@testsrv05 ~]# isql -v DB2AS400 [01000][unixODBC][Driver Manager]Can't open lib '/opt/ibm/iSeriesAccess/lib/libcwbodbc.so' : file not found [ISQL]ERROR: Could not SQLConnect
Die Datei libcwbodbc.so existiert jedoch. Das Problem ist auf die nicht existente Datei libodbcinst.so.1 zurückzuführen:
[root@testsrv05 ~]# ldd -d /opt/ibm/iSeriesAccess/lib/libcwbodbc.so linux-vdso.so.1 => (0x00007fffe83ff000) libcwbcore.so => /usr/lib/libcwbcore.so (0x00007f626202a000) libodbcinst.so.1 => not found libdl.so.2 => /lib/libdl.so.2 (0x00007f6261e25000) libpthread.so.0 => /lib/libpthread.so.0 (0x00007f6261c08000) libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007f6261902000) libm.so.6 => /lib/libm.so.6 (0x00007f626167d000) libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00007f6261467000) libc.so.6 => /lib/libc.so.6 (0x00007f62610d4000) librt.so.1 => /lib/librt.so.1 (0x00007f6260ecb000) /lib/ld-linux-x86-64.so.2 (0x00007f6262465000)
Die wohl einfachste Möglichkeit dieses Problem zu beheben, ist ein Symlink der Bibliothek zu erstellen:
cd /usr/lib/ ln -s libodbcinst.so.2 libodbcinst.so.1
Anschliessend ist eine Verbindung möglich:
[root@testsrv05 ~]$ isql -v DB2AS400 +---------------------------------------+ | Connected! | | | | sql-statement | | help [tablename] | | quit | | | +---------------------------------------+
Die erfolgreiche Verbindung setzt natürlich eine funktionierende Konfiguration von iSeriesAccess voraus.


