Common pitfalls when installing the ibm_db gem
Installing the ibm_db gem on Windows is as easy as running gem install ibm_db. Next to no problems have been reported, as the the installation is as smooth as it gets. On Linux things can get a bit trickier though. Having helped dozens of people resolve installation problems, I’ve gathered some insight into what the common pitfalls are when installing the ibm_db gem on *nix systems. Here I’ve put together a checklist, in case you’re experiencing issues with your own install.
First and foremost, the most common error message is a variant of the following:
$ sudo gem install ibm_db
Building native extensions. This could take a while...
ERROR: Error installing ibm_db:
ERROR: Failed to build gem native extension.
/usr/bin/ruby1.8 extconf.rb install ibm_db
checking for SQLConnect() in -ldb2... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file for more
details. You may need configuration options.
Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
...
...
The gem fails to install because the SQLConnect() function provided by DB2’s development headers (which are required to build the gem) cannot be found/loaded.
This brings us to our quick checklist:
1. Have you sourced the profile? This is done by running:
. /home/db2inst1/sqllib/db2profile
You may need to replace the dot, with source depending on your shell.
2. Have you specified where DB2’s directory and library are to be found? You can do so by running:
export IBM_DB_DIR=/home/db2inst1/sqllib
export IBM_DB_LIB=/home/db2inst1/sqllib/lib32
3. Did you install the required development headers during the installation? These are available by selecting “Base application development tools” under the section “Application Development Tools” in the DB2 Setup Wizard (having selected a “custom” installation beforehand).
You can double check this by running:
ls /home/db2inst1/sqllib/include
This should show you a series of .h files, including sqlcli1.h. If you don’t see them, then you need to repeat the setup procedure so as to add the development tools. Likewise, you should also see a series of .so files, including
libdb2.so when you run: ls /home/db2inst1/sqllib/lib32.
4. Are you trying to perform the installation when logged in as the db2inst1 user? If you’re doing this, it’s best not to. It doesn’t matter if db2inst1 is a suoder or not. Don’t run sudo gem install ibm_db as the instance user.
5. If nothing else works, try to install as the root user (on certain systems sudo won’t cut it). The following complete procedure works in 99% of cases:
sudo -s
. /home/db2inst1/sqllib/db2profile
export IBM_DB_DIR=/home/db2inst1/sqllib
export IBM_DB_LIB=/home/db2inst1/sqllib/lib32
gem install ibm_db
If this checklist doesn’t help you, then you can reach for the RubyForge forum, where the DB2 on Rails community and the IBM team will be happy to help you.
Posted by Antonio Cangiano | November 11 2008 05:13 pm | How-to and Tips&Tricks
on Rails

Long on 25 Mar 2009 at 5:22 pm #
Thanks for the writeup as it provided me with a good start.
The above steps didn’t fully work for me on Ubuntu 8.04 64-bit, even step 5.
DB2 was install with non-root. I needed to add the include env var to get it working.
export IBM_DB_INCLUDE=/home/db2inst1/sqllib/include
Cheers!
Dinshaw on 12 Apr 2009 at 1:42 am #
I am trying to get running on Win05 connection to an iSeries.
The gem installed fine but i get the “This application has failed to start because DB2CLI.dll was not found. Re-installing the application may fix this problem.”
The machine has the IBM iSeries Access for Windows on it.
Do i need to install the DB2 client to get the .dll?
Should that work with the iSeries?
Amos on 26 Aug 2009 at 12:39 pm #
I’m trying to use the gem with derby, but I can’t install the gem without having ibm_db_lib and ibm_db_dir.
Any solutions?