From 2d113b1f65ed54d5a6bee36e858be8a671c6c70d Mon Sep 17 00:00:00 2001 From: gferg <> Date: Fri, 27 Apr 2001 16:58:10 +0000 Subject: [PATCH] replacement for docbook sgml file --- LDP/howto/docbook/DB2-HOWTO.xml | 4039 +++++++++++++++++++++++++++++++ 1 file changed, 4039 insertions(+) create mode 100644 LDP/howto/docbook/DB2-HOWTO.xml diff --git a/LDP/howto/docbook/DB2-HOWTO.xml b/LDP/howto/docbook/DB2-HOWTO.xml new file mode 100644 index 00000000..cfd80119 --- /dev/null +++ b/LDP/howto/docbook/DB2-HOWTO.xml @@ -0,0 +1,4039 @@ + + + + + + + +]> +
+ + +DB2 Version 7.1 for Linux HOWTO +DanScott +dbs + + + 1.2.3 + 2001-04-25 + dbs + Red Hat 7.1 install instructions, more DB2 on Debian info, + connecting to AS/400 databases, buffer pool memory limits, converted + to DocBook XML. + + + + 1.2.1 + 2000-10-25 + dbs + Basic Red Hat 7.0 info, additional Debian instructions. + + + + 1.2 + 2000-09-25 + dbs + IBM JDK 1.3 works! More troubleshooting. + + + + 1.1 + 2000-07-28 + dbs + Documented _SHM_ID_BITS kernel parameter tuning for increasing + number of available connections. Added basic indexing. + + + + 1.0 + 2000-07-06 + dbs + Added basic Debian instructions. Corrected some factual, stylistic, and + grammatical mistakes. Licensed document under GNU GPL. Submitted document to LDP. + + + + 0.7 + 2000-04-26 + dbs + Based on DB2 V7.1 beta release, wrote install instructions for + Caldera 2.4, Red Hat 6.2, SuSE 6.2, SuSE 6.3, and TurboLinux 6.0. + + + + + +This HOWTO gives you explicit instructions on installing +DB2 Universal Database Version 7.1 for Linux +on the following Intel x86-based distributions: Caldera OpenLinux 2.4, +Debian, Linux-Mandrake 7.2, Red Hat Linux 6.2, Red Hat Linux 7.1, +SuSE Linux 6.2, 6.3, and 7.0, and TurboLinux 6.0. +After installing DB2, you can work with a +sample database, connect to your DB2 server from a remote machine, and +administer DB2 using the DB2 Control Center. + + + + + + + +Introduction + + +Why a DB2 installation HOWTO? + + +Ever since DB2 Version 5.2 was ported to Linux in 1998 and made +available as a beta download, there has been a lot of interest in +DB2 on Linux. The beta represented one of IBM's first dips into +the waters of Linux, and it generated a lot of feedback. +In fact, if you read through the newsgroups, you still see occasional questions +from people who are trying out the Version 5.2 beta. (I don't know where they're +getting it, but they're out there.) And, not surprisingly, +they run into problems. It was a beta product, after all. + + + +Anyway, I've been trying out DB2 on Linux since Version 5.2, so I've +had a chance to witness the improvements over the past couple of years. +I've also made a lot of use of the Linux Documentation Project in that +time, and wanted to contribute something to the LDP. +So I decided to write about the one thing that I really know something +about on Linux, and hope that it helps someone else out there. + + + +DB2 on Linux has come a long way since Version 5.2. The first supported release +of DB2 on Linux was Version 6.1 in 1999, which removed many of the installation +hurdles faced by the Version 5.2 beta testers. + + + +DB2 Version 7.1 is the second major release that supports Linux, and since it's +a new release I'm expecting that a new wave of people curious about DB2, +as well as people migrating from Version 6.1, are going to try installing +this new release on Linux. To that end, I'm writing this HOWTO +to share my experiences and help smooth your installation. + +One of the big boosts comes from the standardization on the +IBM Developer Kit for Java, which improves the stability of the +DB2 Control Center and enables application developers to write +stored procedures and UDFs in Java. DB2 Version 7.1 also introduces the +ability to write stored procedures in SQL. + + + +As time permits, I hope to provide hints and tips for improving the performance +of DB2 on Linux, and for configuring the environment on various Linux +distributions to be able to build DB2 applications in C, C++, and Java. + + + + + +Who should read this HOWTO? + + +If you plan to install DB2 Version 7.1 on one of the Linux distributions +supported by IBM, this document is for you. The distributions that +IBM officially supports are: + + + +Caldera OpenLinux 2.4 + + + + +Red Hat Linux 6.2 + + + + +SuSE Linux 6.2 and 6.3 + + + + +TurboLinux 6.0 + + + + + + +For Debian and Slackware, I have included very basic installation +instructions or links to other resources in . If you have any +other installation success stories, please forward me the details +and I'll try to expand the section. As time permits, I plan to try +to duplicate and confirm these installation instructions. + + + +If you install DB2 Version 6.1 for Linux and DB2 hangs on the +db2start command, see +db2start hangs on Linux distributions built with glibc 2.1. I don't include any other DB2 Version 6.1 +information in this document. If you plan to install DB2 Version 5.2 on Linux, +don't! (Have I emphasized that point enough? +All right, I'll stop now.) The Personal Developer's Edition +of DB2 Version 7.1 is available as a free (beer) download from IBM, at the +DB2 +Universal Database download site. +Registration is required, and, of course, your copy of DB2 is +only free as long as you don't use it in a production environment. + + + +This document is really meant to help you install DB2 Version 7.1 +on the previously listed Linux distributions. I've installed +DB2 on all of the distributions supported by IBM and noted the prerequisites and +quirks for each of them. I don't go into detail about the +various features of DB2, or what each installation option means, but +I do cover the basics that you need to know to get it installed. + + + + + +New versions of this document + + +I like my friends at the Linux Documentation Project, so you'll +always be able to find the most up-to-date version of this document +at the LDP web site. + + + + + +Copyright and License + + +Copyright (c) 2000 International Business Machines Incorporated. + + +This document is free documentation; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This document is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this document; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + + + + +Credits + + +Dan Scott is the originator and current maintainer of this HOWTO. +Please send all suggestions for improvement, criticisms, or more-or-less +related questions to me at daniels@REMca.ibm.com (remove +REM in my email address before sending). +Please send all spam or hate mail to /dev/null. + + + +Feedback and suggestions for improvement have been provided by +Susan Williams, Serge Boivin, Darin McBride, and Xiaoyan Zhao. +Ronnie Seagren did an awesome job of editing the original version +for style and consistency. + + +Additional thanks to: + + +Andika Triwidada for contributing instructions to install +DB2 V7.1 on Debian using the rpm utility. + + + + +Michael Naughton for braving Red Hat 7 and figuring out the +libncurses.so.4 prerequisite. + + + + +Christoph Shmitz for resolving license problems with DB2 +installed via alien. + + + + +Claus Fischer for solving a DB2 on Debian problem with updating +instances. + + + + + + + + + +About the author + +Dan Scott has been employed by IBM Canada as an Information Developer +since 1998—approximately when DB2 was first ported to Linux. It's +probably just coincidence. +He has documented and tested DB2 application development for the bulk +of that time. In his spare time he can occasionally be found mourning for +his dearly departed motorcycle, abusing his body on his mountain bike, +or contemplating how to upgrade his Linux distribution at home (which +started life as Mandrake 5.3 and has mutated wildly ever since) without +suffering the wrath of his girlfriend. + + + + + + + +Prerequisites + + +What are prerequisites? + +installation prerequisites +prerequisites for installation + + +Prerequisites are what you, your machine, and your distribution +require before you will be able to successfully install or use DB2. +The required prerequisites come straight from +IBM DB2 Universal Database for UNIX Quick Beginnings. +The suggested prerequisites come from experience. +For your convenience, I've divided them into hardware and software requirements. + + + +Hardware prerequisites + +Processor + +x86 compatible (for example, Intel, AMD, or Cyrix). +I've successfully installed DB2 Version 7.1 on a Pentium Pro 200 and a +Pentium II 350. Your experiences with other x86 processors would be +appreciated. + + + + + +Memory + +For application development, I've found 96 MB of +RAM is enough to run a small database +and test out your applications. Even the Control Center +responds acceptably if your processor speed is fast +enough. In my case, I was working with a Thinkpad 600 equipped +with a Pentium 233 MMX processor and 96 MB of RAM. +However, more memory is recommended if you're putting your +database into production or running multiple services. + + + + + +Free disk space + + +Of course, this depends on the components you install, +but for a typical installation of the DB2 Version 7.1 server, +the Administration Client, the Application Development Client, +the documentation, and the creation of a sample database, +you will need about 350 MB of free disk space. + + + + + + + +Software prerequisites + +glibc + +2.1.2 or greater. This can be a tough part of Linux to upgrade on +its own, so if your current distribution doesn't meet this requirement, +I would strongly suggest upgrading your entire distribution. For example, +I tried upgrading only the glibc portion of +TurboLinux 4.0 from 2.1.1 to 2.1.3 +and ran into a whole world of trouble. + + + +DB2 Version 7.1 should work with glibc 2.1.1. +IBM sets prerequisites based on the systems with which they tested. + + + + + + +kernel + +2.2.12 or greater. I've upgraded to both +2.2.19 and 2.4.3 and recompiled + the kernel for my own purposes, and DB2 seems to work as well as before. + + + +DB2 Version 7.1 should work with a minimum of kernel 2.2.10. +IBM sets prerequisites based on the systems with which they tested. + + + + + + +libncurses + +4.x. For db2setup to work correctly, +this version of the library must be available on your system with the following +pathname: /usr/lib/libncurses.so.4. + + + + + +libstdc++-libc6.1-1.so.2 + +A file or symbolic link by this exact name is mandatory. +On most distributions, this is a symbolic link to libstdc++-2.9.0.so, +but on several recent distributions this is a symbolic link to +libstdc++-2.10.0.so. + + +In previous versions of this HOWTO, I stated that the exact version +of libstdc++-2.9.0.so was mandatory. I was wrong. + + + + + + + +pdksh + +5.2 or greater. This is a public domain version of the +Korn shell that both the DB2 installer and the DB2 commands +require. You cannot do anything with DB2 without installing pdksh. + + + + + +rpm + +3.0 or greater. DB2 for Linux is distributed +as a number of RPM packages, so you won't get far without +this piece of software. For information on installing DB2 on distributions +without using RPM, see . + + + + + +Java + + +The IBM Developer Kit for Java, 1.1.8 or +1.3, is an optional component, but is required to: + + + +use the DB2 Control Center to administer your databases using +a graphical user interface + + + + +create or run Java applications, including stored procedures +and user-defined functions + + + + + + +As of this writing, the minimum required level of the +IBM Developer Kit for Java 1.1.8 is the March 22, 2000 release. +You can get the IBM Developer Kit and Runtime Environment +for Linux, Java Technology Edition, from the IBM Java Developer Kit +downloads web site as follows: + + +Version 1.1.8 + + + +Version 1.3 + + + + + + +Please note: Other versions of Java, such +as the Blackdown or Sun JDKs, have not been tested with DB2 and +are not supported by IBM. And no, none of the distributions +I have seen so far package the IBM JDK. But do yourself a favour, +and get the IBM Developer Kit for Java. + + + + + + + + +browser prerequisite +web browser prerequisite + +Web browser + + +DB2 calls the netscape command when you: + + + +display the online help for the DB2 Control Center + + + + +display information using the DB2 Information Center + + + + +The easiest approach is to install Netscape Navigator or Communicator +on your system. Netscape version 4.72 or above +is required to display the Business Intelligence Quick Tour, because of +its extreme use of JavaScript. + + + +To use a browser other than Netscape to display online help +or information, create a link called netscape +to your preferred browser executable. The link must appear in +your PATH. For example, to display online help with mozilla, +you could create a link in /usr/local/bin +with the following command: +bash# ln -s /usr/bin/mozilla-bin /usr/local/bin/netscape + + + + + + + + + +In the following table: + + + +unknown indicates that I don't +know what the default level is, and I haven't installed DB2 on this distribution +(your feedback is welcome!) + + + + +okay indicates that I don't +know what the default level is, but it worked when I installed DB2 + + + + +** as a prefix indicates that the default level is not acceptable +and must be replaced or supplemented with a compatible library + + + + + + +Prerequisite levels, by distribution + + + + + + + + + + + + Distribution + glibc + Linux kernel + libncurses + libstdc++-libc6.1-1.so + pdksh + rpm + + + + + Caldera OpenLinux 2.4 + 2.1.2 + 2.2.14 + okay + 2.9.0 + 5.2.14 + okay + + + Debian 2.2 + 2.1.3 + 2.2.17 + okay + 2.10.0 + 5.2.14 + 3.0.3 + + + Linux-Mandrake 7.2 + 2.1.3 + 2.2.17 + okay (4, 4.2, 5, & 5.1) + 2.9 + 5.2.14 + 3.0.5 + + + Red Hat 6.2 + 2.1.2 + 2.2.14 + okay + 2.9.0 + 5.2.14 + okay + + + Red Hat 7 + 2.1.92 + 2.2.16 + **5.1 + **2.9.6 + 5.2.14 + 4.0 + + + Red Hat 7.1 + 2.2.2 + 2.4.2 + **5.2 + **2.9.6 + 5.2.14 + 4.0.2 + + + SuSE 6.2 + 2.1.1 + 2.2.10 + unknown + 2.9.0 + 5.2.14 + okay + + + SuSE 6.3 + 2.1.2 + 2.2.13 + okay + 2.9.0 + 5.2.14 + okay + + + SuSE 7.0 + unknown + 2.2.17 + okay + unknown + 5.2.14 + okay + + + TurboLinux 6.0 + 2.1.2 + 2.2.13 + okay + 2.9.0 + 5.2.14 + okay + + + +
+ +
+
+ + +Preparing your distribution for DB2 + + +<productname>Caldera OpenLinux</productname> <productnumber>2.4</productnumber> + + +Before installing DB2 on Caldera OpenLinux + + +This section contains instructions that you must follow before installing DB2. + + +Preparing for the installation of DB2 + + +Install the pdksh-5.2.14-1.i386.rpm +package from the Caldera OpenLinux CD-ROM in the +/Packages/RPMS/ directory. For +example, log in as root, mount the CD-ROM, and enter the following command to +install the pdksh package: +bash# rpm -ivh /mnt/cdrom/Packages/RPMS/pdksh-5.2.14-1.i386.rpm + + + + + +Remove the jdk package, (JDK 1.2.2 from Sun), since +it will conflict with the IBM Developer Kit for Java that you will +install in the next step. To remove Sun's JDK, issue the following command +as root: bash# rpm -e jdk + + + + + +Install the IBM Developer Kit for Java. A brief set of installation +directions is included in . + + + + + +Edit the JAVA_HOME and PATH entries +in /etc/config.d/shells/bashrc to remove +the references to the JDK from Sun and update them to reflect the IBM Developer +Kit for Java. The section that I changed started as: + + [ -z "$JAVA_HOME" ]&& [ -d /usr/java ] && ( + export JAVA_HOME=/usr/java + [ -r $JAVA_HOME/lib/classes.zip ] && + export CLASSPATH=$JAVA_HOME/lib/classes.zip +) + + + + +Replace it with the following section to reflect the default +locations for the IBM Developer Kit for Java: + + + [ -z "$JAVA_HOME" ]&& [ -d /usr/jdk118 ] && ( + export JAVA_HOME=/usr/jdk118 + export PATH=$PATH:$JAVA_HOME/bin + [ -r $JAVA_HOME/lib/classes.zip ] && + export CLASSPATH=$JAVA_HOME/lib/classes.zip +) + + + + + + + + +Installing DB2 and creating instances on Caldera + +Follow the instructions in the generic section on installing DB2, and +go ahead and create the instances. It's probably a good idea at this point +to read through to keep in mind the steps +that you need to take after installing DB2. + + + + + + +What does /etc/login.defs not accessible, using defaults mean? + + + + +It means something went slightly wrong, but it's okay. +You may get this message splashed across your installation +screen one or more times during the DB2 installation process, but +other than not looking pretty, DB2 still installs correctly. +Caldera apparently doesn't include a /etc/login.defs configuration +file. The file controls the default options for the useradd command +for adding new users, including policies like how many days before the +new user's password expires and whether a home directory should be created for a new user. +For more information on the /etc/login.defs file, refer +to the man page for useradd. + + + + + + + +Okay, DB2 is installed and I created the instances. Now what do I do? + + + + +Now that you've installed DB2, you have to perform some steps to configure +your instances correctly. Keep reading. + + + + + + + + +After installing DB2 on Caldera + + +This section contains instructions that you must follow after installing DB2. + + + +Adding instance user IDs to their groups + +The most important step is to manually add the instance user ID to +the corresponding instance group you defined during the instance +creation step. DB2 and Caldera OpenLinux don't get this part of the +DB2 instance creation process right, so you have to do it yourself. +You can add an instance user ID to an instance group in two ways: + + + + +Edit /etc/group to add the +appropriate instance user ID to the last field for each group. + + + + + +Use the COAS utility to manage your +groups by selecting KDE menu, +Settings, COAS, +System, Accounts, +then selecting the Groups submenu and the +Manage Groups menu item. + + + + + + + + +Changing the default home page in Netscape + +The DB2 Control Center and the DB2 Information Center use the +Netscape browser to display help and documentation. This works +for the first document you display in the browser, but if you +try to switch to a different DB2 document (for example, from +one book to another), you may instead be redirected to the +default home page set by the Caldera OpenLinux installation +process. I found that this problem went away as soon as I changed +the default home page in the Edit menu, +Preferences menu item. + + + + +Removing the Caldera login greeting + +Add a file called .hushlogin to the +home directory of each of your instance user IDs. This should prevent +the Welcome to your OpenLinux system! +messages while running DB2 commands. + + + +DB2 generates these messages on Caldera because the DB2 commands run +under the root user ID, which in turn becomes the instance owner to +invoke commands. Part of this su process +calls one or both of /etc/config.d/shells/csh.login +and /etc/config.d/shells/profile, which in turn +call the /etc/config.d/shells/OL-greeting script +that contains the offensive string. + + + +Instead of adding .hushlogin to every +user's home directory, you could probably edit +/etc/config.d/shells/OL-greeting +to remove the message (or change it to something else, if you want). +I haven't tried it myself, so let me know what works best. + + + + + + + + + +<productname>Linux-Mandrake</productname> <productnumber>7.2</productnumber> + +The DB2 server and command line DB2 client works on Linux-Mandrake 7.2, and I +was able to successfully start and use the DB2 Control Center with +IBM JDK 1.1.8 (build 20000713). + + + +Before installing DB2 on Linux-Mandrake + +Preparing for the installation of DB2 + + +Install the pdksh-5.2.14-8mdk.i586.rpm +package from the Linux-Mandrake CD-ROM in the +/Mandrake/RPMS/ directory. For +example, log in as root, mount the CD-ROM, and enter the following command to +install the pdksh package: +bash# rpm -ivh /mnt/cdrom/RedHat/RPMS/pdksh-5.2.14-8mdk.i586.rpm + + + + + + + +Installing DB2 and creating instances on Linux-Mandrake + +When you run db2setup, you may receive the following error: + +ksh: /etc/profile.d/tmdir.sh[9]: source: not found + +This is only a warning message and you can continue installing DB2. If the +message interferes with the db2setup menu, press CTRL-L +to clear the screen. + + +Otherwise, follow the instructions in , +the generic section on installing DB2 and creating instances. + + + + + +After installing DB2 on Linux-Mandrake + + +With Linux-Mandrake 7.2, +there are no special steps to take after installing DB2 Version 7.1. The DB2 +server and command line client work out of the box, and the DB2 Control Center +worked with IBM JDK 1.1.8 (build 20000713). + + + + + + + +<productname>Red Hat Linux</productname> <productnumber>6.2</productnumber> + + +Before installing DB2 on Red Hat + +Preparing for the installation of DB2 + + +Install the pdksh-5.2.14-2.i386.rpm +package from the Red Hat CD-ROM in the +/RedHat/RPMS/ directory. For +example, log in as root, mount the CD-ROM, and enter the following command to +install the pdksh package: +bash# rpm -ivh /mnt/cdrom/RedHat/RPMS/pdksh-5.2.14-2.i386.rpm + + + + + + + +Installing DB2 and creating instances on Red Hat + +Follow the instructions in , +the generic section on installing DB2 and creating instances. + + + + + +After installing DB2 on Red Hat + + +With Red Hat 6.2, +you don't need to take any special steps after installing DB2 Version 7.1. It works. + + + + + + + +<productname>Red Hat Linux</productname> <productnumber>7.1</productnumber> + + +Before installing DB2 on Red Hat + +Preparing for the installation of DB2 + + +Install the pdksh-5.2.14-12.i386.rpm +package from Red Hat CD-ROM (2) in the +/RedHat/RPMS/ directory. For +example, log in as root, mount the CD-ROM, and enter the following command to +install the pdksh package: +bash# rpm -ivh /mnt/cdrom/RedHat/RPMS/pdksh-5.2.14-12.i386.rpm + + + + +For a compatible version of the libstdc++ library, install the + compat-egcs-c++-6.2-1.1.2.14.i386.rpm package +from Red Hat CD-ROM (2) in the +/RedHat/RPMS/ directory. For +example, log in as root, mount the CD-ROM, and enter the following command to +install the pdksh package: +bash# rpm -ivh /mnt/cdrom/RedHat/RPMS/compat-egcs-c++-6.2-1.1.2.14.i386.rpm + + + + +Install the compat-libs-6.2-3.i386.rpm +package from Red Hat CD-ROM (2) in the +/RedHat/RPMS/ directory. For +example, log in as root, mount the CD-ROM, and enter the following command to +install the pdksh package: +bash# rpm -ivh /mnt/cdrom/RedHat/RPMS/compat-libs-6.2-3.i386.rpm + + + + +The db2setup command looks for a file called + /usr/lib/libncurses.so.4 and will not proceed +unless it exists, so create a symbolic link from the ncurses4.0 library +in /usr/i386-glibc21-linux/lib/ to +your /usr/lib/ directory. + +bash# ln -sf /usr/i386-glibc21-linux/lib/libncurses.so.4.0 /usr/lib/libncurses.so.4 + + + + + +The default setting for the msgmni kernel parameter +only allows a couple of simultaneous connections to DB2. To set this value +at at boot time, append the following lines to /etc/sysctl.conf: + +# Sets maximum number of message queues to 128 +# Set this to 1024 or higher on production systems +kernel.msgmni = 128 + + + + + + + + + +Installing DB2 and creating instances on Red Hat + +Follow the instructions in , +the generic section on installing DB2 and creating instances. + + + + + +After installing DB2 on Red Hat + + +With Red Hat 7.1, +the DB2 Control Center would only start when I used IBM JDK 1.3 +(IBMJava2-SDK-1.3-7.0-i386.rpm). The DB2 Control Center +would not start when I tried IBM JDK 1.1.8 +(IBMJava118-SDK-1.1.8-5.0-i386.rpm). For instructions +on installing the IBM JDK 1.3 and modifying the db2cc script +to work with IBM JDK 1.3, see . + + + + + + +<productname>SuSE Linux</productname> + + +Before installing DB2 on SuSE + + +At some point in its past, SuSE included an old beta version of DB2 +in their distribution. When you install SuSE Linux, +up to and including version 7.0, the SuSE installer +still creates the default DB2 user IDs and sets their home directories +in /usr/lib. This can cause some +difficulties when you set up the DB2 instances. Before installing DB2, +remove the default DB2 user IDs by issuing the following commands as root: + +bash# userdel -r db2as +bash# userdel -r db2fenc1 +bash# userdel -r db2inst1 + + + + + + +Installing DB2 and creating instances on SuSE + +Follow the instructions in , +the generic section on installing DB2. + + + + +After installing DB2 on SuSE + + +With SuSE 6.2 +or above, I have not needed to take any special steps after +installing DB2 Version 7.1. It just works—and that's nice. + + + + + + +<productname>TurboLinux</productname> <productnumber>6.0</productnumber> + + +Before installing DB2 on TurboLinux + + +TurboLinux 6.0 includes +all of the required packages at or above the minimum required levels for +DB2 Version 7.1. + + + + + +Installing DB2 on TurboLinux + +Follow the instructions in , +the generic section on installing DB2. + + + + + +After installing DB2 on TurboLinux + + +When you run the DB2 Control Center with TurboLinux 6.0, +the console window may display a number of map failed messages. +These messages do not indicate a serious problem, so do not +worry about them. + + + + + + + +Installing DB2 using <command>db2setup</command> + + +The purpose of this section is to walk you through a typical install +of DB2 Version 7.1 on Linux. The following section, , +tells you how to create both a DB2 Administration Server +and a DB2 instance. For in-depth information on the components offered +by DB2 Version 7.1, consult the following documents: + + + +DB2 for UNIX Quick Beginnings + + + + + +DB2 Personal Edition for Linux Quick Beginnings + + + + + +DB2 Connect Personal Edition for Linux Quick Beginnings + + + + + + + +For the purposes of this document, I'll assume that you have +a copy of DB2 Version 7.1 on CD-ROM. If you download a copy from IBM, +just adjust the path /mnt/cdrom +in the following instructions to reflect the directory created by +the tar command. + + + +Using the <command>db2setup</command> utility + + +You'll find the following executables on the root directory +of the DB2 Version 7.1 installation CD-ROM: + + + + +db2setup: +Use the db2setup command to install DB2 Version 7.1, to create or modify +DB2 instances, and to create a DB2 Administration Server. Once you install DB2, +db2setup is copied to the +/usr/IBMdb2/V7.1/install directory +to enable you to create or modify instances without the CD-ROM. + + + + + +db2_install: +The db2_install command provides an alternate +means of installing DB2 RPMs. Unlike db2setup, +it does not enable you to create a DB2 instance or Administration Server, +or install a license key. I highly recommend db2setup. + + + + + +db2_deinstall: +Use the db2_deinstall command to uninstall +the DB2 Version 7.1 packages on your system. For more information, see +. + + + + + + + + + +The db2setup command provides a terminal-based +text menu for your installation and instance creation options. +Unfortunately, db2setup on Linux sometimes +encounters a few formatting bugs in terminal emulators. + Running db2setup from the +TTY console works well. Within an X session, the +rxvt or xterm terminals +work quite well, but gnome-terminal +is rather frustrating to use. +If the text menu formats incorrectly, press CTRL-L +to refresh the menu. + + + + + + +Installing DB2 components + + +The following instructions assume that you are using db2setup to +install DB2. + + + +To select or deselect a component, highlight the component using +the cursor keys and press ENTER. + + +To change the options for a component, highlight [ Customize... ] +and press ENTER. + + +To install your selected components, highlight [ OK ] +on the Install DB2 V7 menu and press ENTER. + + + +The common DB2 files are installed in the +/usr/IBMdb2/V7.1/ directory. When you +create an instance, a directory called sqllib +is created in the corresponding user's home directory. The +sqllib directory contains symbolic links +to the executables and other files in /usr/IBMdb2/V7.1/. + + + +The following list describes some of the common DB2 components that you can +install, including estimates of the size required for each component. + + + + +Description of DB2 components + + +Administration Client + + + +The Administration Client enables database administrators to administer local or remote +DB2 servers from the command line. This component, without Java support or the +Control Center, requires about 20 MB of disk space. + + + + + + +Control Center + + + +The Control Center (db2cc) is an optional part of many +DB2 components. It gives database administrators a graphical interface for +administering local or remote DB2 servers. +The Control Center includes the DB2 Information Center (db2ic), +which gives you a graphical interface that provides a tree view of the DB2 documentation +installed on your workstation organized by task or by title. + + + +Note that both the Control Center and Information Center are Java applications, so +their performance depends on your system's processor speed and available memory. +This component requires about 90 MB of disk space. + + + + + + +DB2 UDB Enterprise Edition DB2 UDB Workgroup Edition DB2 Personal Edition + + +These components determine the state of your DB2 installation as a database server. +The core capabilities of the components are the same. The difference between +Enterprise Edition and Workgroup Edition primarily has to do with how they are +licensed--Enterprise Edition is licensed on a per-processor basis +with unlimited users, while Workgroup Edition is licensed on a per-user basis. +Enterprise Edition also gives you the capability to enable DB2 clients to connect +to mainframe databases, like DB2 for OS/390 or DB2 for OS/400. In contrast, +Personal Edition is a single user database server that is useful only for developing +DB2 applications. You cannot use Personal Edition as a server because Personal Edition +does not accept incoming remote connections. + + + +Adding one of these components requires about 40 MB of disk space. + + + +Options for DB2 servers + + +Replication + + + +This option enables your DB2 server to replicate data to other +DB2 servers, and, with additional software, across non-DB2 servers as well. +This option requires about 5 MB of disk space. + + + + + + +Distributed Join for DB2 Data Sources + + + +This option enables your DB2 server to participate in a join with +data from other database servers. +This option requires about 2 MB of disk space. + + + + + + + + + + + + +Application Development Client + + +The Application Development Client component installs the headers and libraries +that you need to create applications using embedded SQL for C and C++, +Call Level Interface (CLI), +Java Database Connectivity (JDBC), +or embedded SQL for Java (SQLJ). +You also have the option of installing the source code for sample applications +that demonstrate much of the functionality of DB2. + + + + +If you plan on developing applications for DB2, install the sample applications. +The sample directories in /usr/IBMdb2/V7.1/samples/ +contain build scripts (bld***) that include the compile and link +options suitable for your own applications. + + + + + +If you are trying to develop applications and you get an error like +"That command is not supported in this environment" while trying to precompile a file, +it's because you either did not install the Application Development Client, or +you installed it after you created an instance and you have not used the +db2iupdt command to update the instance. See +for more information on db2iupdt. + + + +Including the sample applications, this component requires about 10 MB of disk space. + + + + + + +DB2 Product Library (HTML documentation) + + +Documentation is installed into the +/usr/IBMdb2/V7.1/doc/ directory. For each language +that you install, the DB2 installer creates a subdirectory with a five-character +name corresponding to the language locale. +Issue the db2help command to fire up your Web browser with +a page that links to the documentation installed with DB2. + + + +The English HTML (En_US) documentation requires about 90 MB of disk space. + + + + + + + + + + + + +Installing DB2 on other Linux distributions + +DB2 Version 7.1 is distributed as a set of RPM packages. If you want to install DB2 +on a distribution that is not officially supported by IBM, and that +distribution satisfies all of the prerequisites specified in , +all that you theoretically need to do is find a way to install those packages on your distribution. +The alien utility available from +Kite converts RPM packages +into formats supported by Debian (dpkg), Stampede +(slp), and Slackware (slp). + + + + +Debian + + +Susan Williams reported success in installing DB2 Version 7.1 on Debian using +the following script as root: + +Installation script for DB2 Version 7.1 on Debian + +#!/bin/bash +cd / +for f in /mnt/cdrom1/db2/*rpm +do +alien -d -i -c $f +done + + + + + +This script installs every DB2 package on the CD-ROM. In a future iteration of +this document I plan to provide a description of all of the DB2 packages to help +you develop a more selective approach for your installation. + + + +Christoph Shmitz reports that, while he was able to install +DB2 Version 7.1 Personal Developer's Edition on Debian 2.2 +using alien as described above, DB2 starts in a +time-limited trial mode (90 days). While the use of +DB2 Version 7.1 Personal Developer's Edition should be unlimited, +alien does not automatically install the DB2 license file. + + +To remove the time limit on DB2 Version 7.1 Personal Developer's Edition, +you need to manually install the license file +(s000510.personal/db2/license/db2udbpe.lic in the tar archive) +using the following command as root: + +bash# db2licm -a db2udbpe.lic + + + + +Using alien apparently prevents you from using the db2setup command +to create instances. To create a DB2 Administration Server from the command line, +issue the /usr/ibmdb2/v7.1/instance/dasicrt command as root. +To create a DB2 instance, issue the /usr/ibmdb2/v7.1/instance/db2icrt +command as root. To get the correct syntax for either command, use the -h flag. + + + +For further information on installing DB2 on Linux distributions which use the dpkg +package manager, see Tiago Antao's page, +Agnostic DB2 V7.1 for GNU/Linux. + + + +In the following section, Andika Triwidada describes how to install +DB2 on Debian 2.2 using the rpm command. +You can check the prerequisite package levels (described in ) +installed on your system with the following command: + +bash$ dpkg -l|egrep -e '(libc6|libstdc++|pdksh|rpm|zip)'|awk '{print $1,$2,$3}' + +The resulting list should contain: + + ii libc6 2.1.3-13 + ii libstdc++2.9-glibc2.1 2.91.66-4 + ii pdksh 5.2.14-1 + ii rpm 3.0.3-1 + ii unzip 5.40-1 + + + +If you are missing any of these packages, you can install the package using apt-get: + +bash# apt-get install package-name + + + + +Installation Steps + + + +Initialize the RPM database. + +bash# rpm --initdb + + + + + + +Modifiy several files in /bin + +bash# mv /bin/sh /bin/sh.bash +bash# ln -s /usr/bin/ksh /bin/sh +bash# for f in awk basename ksh passwd sort touch; do ln -s /usr/bin/$f /bin/$f; done + + + + + + +Copy the contents of the following script to create an RPM wrapper +called /bin/rpm. + +#!/bin/sh +# RPM wrapper, force RPM installation without checking any dependencies +if [ "$1" = "-ivh" ] +then + shift + /usr/bin/rpm -ivh --nodeps $* +else + /usr/bin/rpm $* +fi + + + + + + +Make the RPM wrapper executable: + +bash# chmod +x /bin/rpm + + + + + + +Install DB2 using the db2setup command by following +the instructions in . + + + + +Create the DB2 administration server and at least one DB2 instance +as described in . To simplify testing, +ensure that you create the sample database when you create the DB2 instance. + + + + + +Testing your DB2 installation + + + +Log on to your Linux server with the DB2 instance user ID. Remember, +the default user ID is db2inst1. + + + + + +Prepare your DB2 environment by running the db2profile +script: + +bash$ cd ~/sqllib +bash$ . ./db2profile + + + + + + +Run a query against the sample database to test your installation. + +bash$ db2 +bash$ db2 => connect to sample +bash$ db2 => select * from employee + +There should be a printout of records from sample database here + +bash$ db2 => quit + + + + + + +After you install DB2 + + + +Remove the RPM wrapper script by removing, renaming, or linking it directly to /usr/bin/rpm. + +bash# rm /bin/rpm + + + + + + +Change /bin/sh back into a symlink to /usr/bin/bash. + +bash# ln -sf /usr/bin/bash /bin/sh + + + + + + +After installing DB2 with alien, Claus Reiner reported that: +
+ + While all components of DB/2 were installed, the instance + apparently didn't know them and thus couldn't use them. + After a lot of sweat going through the configurations, + IBM support told me that I should make an instance update + which solved it. (The instance could locally and between + Unixen do everything, only when trying to connect to AS/400 + using DCS it told us 'authentication not supported'). + +
+Claus recommends running the following commands as root after +installing DB2 with either alien or RPM, + +bash# . $INSTANCEHOME/sqllib/db2profile +bash# /usr/IBMdb2/V7.1/instance/db2iupdt -e + +
+ +
+
+ + +Slackware + + +Thorough information on installing DB2 on Slackware 7.1 using RPM is available +from James Phillips' page, Installing DB2 on Slackware Linux. + + + +
+ +
+ + +Creating DB2 instances + + +This section gives you a brief overview of DB2 instances +and the DB2 Administration Server, and tells you how to create them. + + + +Some IBM documentation uses the term "instance" to refer to both +DB2 instances and a DB2 Administration Server. The basic similarity +between a DB2 Administration Server and a DB2 instance, +or "database manager", is that each is associated with a +unique user ID. When you create either a DB2 instance or a +DB2 Administration Server, DB2: + + + + + +creates one or more new user IDs and corresponding home directories + + + + + +creates a subdirectory in the instance home directory called +sqllib + + + + + +alters the .bashrc file to call the +~/sqllib/db2profile shell +script to set up the environment for the instance + + + + + + + +Overview of DB2 Administration Server + + +Like a queen bee in a hive, only one DB2 Administration Server can +exist on any given DB2 server. By locally or remotely logging as the user ID that +corresponds to the DB2 Administration Server, a database administrator +uses the DB2 Administration Server to create, drop, or change the properties +of DB2 instances. + + + + + +Overview of DB2 instance + + +To quote the IBM DB2 Universal Database Version 7.1 Administration Guide definition of an instance: +
+ +An instance (sometimes called a database manager) is DB2 code that manages data. +It controls what can be done to the data, and manages system resources assigned to it. +Each instance is a complete environment. ... An instance has its own databases (which +other instances cannot access), and all its database partitions share the same system +directories. It also has separate security from other instances on the same machine (system). + +
+ +What this boils down to is that for every DB2 instance, DB2 requires a unique user ID +on your Linux workstation. Security for an instance is provided by the normal +password authentication process for any Linux user ID. Each instance can contain +one or more databases, each of which inherits settings from their instance. +
+ + +Creating the Administration Server using <command>db2setup</command> + + +The DB2 Administration Server requires about 3 MB of disk space. +The following steps guide you through the process of creating a +DB2 Administration Server. + + + + +Issue the db2setup command as described in . + + + + + +Select [ Create... ]. + + + + + +Select the check box for Create the Administration Server. The Administration Server +window is displayed. + + + + + +Enter a unique user name in the User Name field. You can use an existing user +name that is not already in use by a DB2 instance, but it is probably simpler to +create a new user for each instance. + + + + + +Select the Use default UID check box. As far as I can tell, this setting is always right. + + + + + +Enter a unique group name in the Group Name field. You can use an existing group name if +you wish, but creating a new group ensures that you do not inadvertently give permissions +to other users on your system. + + + + + +Select the Use default GID check box. Again, as far as I can tell, +this setting is always right. + + + + + +Ensure that the value of the Home Directory field reflects the home directory of +the user ID. + + +SuSE users: The prefix for the home directory may default to +/usr/lib/db2/. This is almost +certainly wrong; the value for a standard SuSE system should be +/home/. + + + + + + + +Enter a unique password in the Password and Verify Password fields. + + +Enter a new password! If you do not enter a new password in these fields, +DB2 assigns the default password ibmdb2, giving crackers a wide-open +front door to your system. + + + + + + + + +Creating a DB2 instance using <command>db2setup</command> + + +A DB2 instance requires about 2 MB of disk space. A sample database for a DB2 instance +requires about 16 MB of disk space. +The following steps guide you through the process of creating a DB2 instance. + + + + +Issue the db2setup command as described in . + + + + + +Select [ Create... ]. + + + + + +Select the Create a DB2 Instance check box. The DB2 Instance window is displayed. + + + + + +Enter a unique user name in the User Name field. You can use an existing user +name that is not already in use by a DB2 instance, but it is probably simpler to +create a new user for each instance. + + + + + +Select the Use default UID check box. As far as I can tell, this setting is always right. + + + + + +Enter a unique group name in the Group Name field. You can use an existing group name if +you wish, but creating a new group ensures that you do not inadvertently give permissions +to other users on your system. + + + + + +Select the Use default GID check box. Again, as far as I can tell, +this setting is always right. + + + + + +Ensure that the value of the Home Directory field reflects the home directory of +the user ID. + + +SuSE users: The prefix for the home directory may default to +/usr/lib/db2/. This is almost +certainly wrong; the value for a standard SuSE system should be +/home/. + + + + + + + +Enter a unique password in the Password and Verify Password fields. + + +Enter a new password! If you do not enter a new password in these fields, +DB2 assigns the default password ibmdb2, giving crackers a wide-open +front door to your system. + + + + + + + +Select [ Properties... ] to change the properties for the instance. + + + + + +Under the Authentication Type heading, select the Server Encrypt check box. +This greatly improves the security of your system, by telling DB2 to accept +encrypted passwords, rather than plain text passwords. + + + + + +Select the Auto start DB2 Instance at system boot check box if you want to start +this DB2 instance every time you reboot your system. + + + + + +Select the Create a sample database for DB2 Instance check box if you plan +to work with the sample applications available with the Application Development Client. +To run correctly, most of the sample applications require the specific tables and data +of the sample database. If you do not create the sample database now, you can create it +later using the db2sampl command. + + + + + + + + +Select [ OK ] to create the DB2 instance. The Fenced User text +window is displayed. Repeat the previous steps for creating a new user and group. +Server-side DB2 executables, such as stored procedures and user-defined functions, +execute under the permissions of the fenced user ID. +By controlling the permissions of the fenced user ID, you control the +permissions of the server-side DB2 executables. + + + + + +Select [ OK ] to create the fenced user. + + + + + + +
+ +
+ + +Removing DB2 + +To remove DB2 from your workstation cleanly, perform +the following steps: + + + + + + +Log in as root. + + + + +List all DB2 instances: bash# /usr/IBMdb2/V7.1/instance/db2ilist + + + + +Drop each instance listed in the previous step with the following command: +bash# /usr/ibmdb2/v7.1/instance/db2idrop instance-name + + + + +Drop the DB2 administration server: +bash# /usr/IBMdb2/V7.1/instance/dasidrop `/usr/IBMdb2/V7.1/instance/dasilist` + + + + +Uninstall all of the DB2 packages on your system using the db2deinstall +command on your DB2 CD-ROM: +bash# /mnt/cdrom/db2/db2_deinstall -n + + + + + + +Using DB2 + + +This section gives you the basic information you need to start working +with DB2 on Linux. It includes instructions on issuing DB2 commands +and SQL statements from the command line, as well as the commands you +need to start the DB2 Control Center and the DB2 Information Center. + + + + +This section assumes that you have followed the instructions in +. + + + + +DB2 Control Center + + +The left side of the DB2 Control Center provides an +object-oriented view of the database objects that you +have catalogued, including DB2 instances and databases +on other DB2 servers. One way to add, edit, or drop database +objects is to right-click on an object to bring up a +menu. + + + +To start the DB2 Control Center + + + +Ensure you are logged on to your Linux workstation using either the +DB2 Administration Server user ID or the DB2 instance user ID. If you +use the su command to become the user, ensure you +include the -l parameter to initialize the +environment for the user. + + + + + +Start the X server, if it is not already started. + + + + + +Issue the db2cc command to start the DB2 Control Center. +Depending on the speed of your system, it may take a few seconds +for the splash screen to appear, and longer before the +full DB2 Control Center appears. + + + + + + + +DB2 Information Center + + +The DB2 Information Center provides tree views of the +information about DB2 that is installed on your system, +as well as a number of links to web sites with further +information. If you did not install the DB2 documentation, +the tree views contain fewer links. + + + +To start the DB2 Information Center + + + +Ensure you are logged on to your Linux workstation using either the +DB2 Administration Server user ID or the DB2 instance user ID. If you +use the su command to become the user, ensure you +include the -l parameter to initialize the +environment for the user. + + + + + +Ensure that the X server is started. + + + + + +Issue the db2ic command to start the DB2 Information Center. +Depending on the speed of your system, it may take a few seconds +for the splash screen to appear, and longer before the +full DB2 Information Center appears. + + + + + + + +The DB2 command line + + +If you are logged on to your Linux workstation using either the +DB2 Administration Server user ID or the DB2 instance user ID, +you can issue DB2 commands and SQL statements from +the command line. + + + +If this is your first time using DB2, I would suggest creating the +sample database that ships with DB2. The sample database is used +throughout the DB2 documentation and is required by most of the +sample applications. +To create the sample database, you can either select the +Create the sample database option when you +create a DB2 instance, or issue the db2sampl +command from the DB2 command line. + + + +Before you can issue an SQL statement, you have to connect to a +database. To connect to a database: + + + +db2 CONNECT TO database USER userID USING password + + + + + +To connect to a database, and have DB2 prompt you for the password: + + + +db2 CONNECT TO database USER userID + + + + + + +To connect to a database using the default user ID: + + + +db2 CONNECT TO database + + + + + + +Once you have connected to a database, you can then issue SQL statements +or DB2 commands against that database. +For example, to select all of the columns from the EMPLOYEE +table in the SAMPLE database, +issue the following command: bash$ db2 "SELECT * FROM employee" + + + + +You can avoid typing db2 as the prefix for every +SQL statement and DB2 command by issuing commands using the +Command Line Processor (CLP). To start the CLP, +issue the db2 command by itself. DB2 provides the following prompt: + + + +You can issue database manager commands and SQL statements from the command +prompt. For example: + db2 => connect to sample + db2 => bind sample.bnd + +For general help, type: ?. +For command help, type: ? command, where command can be +the first few keywords of a database manager command. For example: + ? CATALOG DATABASE for help on the CATALOG DATABASE command + ? CATALOG for help on all of the CATALOG commands. + +To exit db2 interactive mode, type QUIT at the command prompt. Outside +interactive mode, all commands must be prefixed with 'db2'. +To list the current command option settings, type LIST COMMAND OPTIONS. + +For more detailed help, refer to the Online Reference Manual. + +db2 => + + + +I don't use the CLP because it prevents me from using the +command line history feature of my shell. I find myself using +the command line history a lot when I'm issuing SQL statements. + + +Some users claim that running the CLP within an Emacs shell gives +them the best of both worlds: they get command line history, and they +don't have to escape commands that contain lots of quotation marks +and brackets. + + + + + + + + +Troubleshooting + + +The following section covers some of the common problems you may encounter +while installing DB2, creating an instance, or using a DB2 database. + + + +Problems with DB2 installation + +installationtroubleshooting + + +The following section covers some of the common problems you may encounter +when you install DB2. + + + + + + +When I try to run db2setup, I get the following error: +DBI1503E An error was encountered when opening +or writing to file, "/tmp/.dbinst.swp". + + + + +DB2 issues this error when it can't find the pdksh or ksh +shells. This has probably occurred because you did not install the pdksh +package for your distribution. See for more details on installing +the pdksh package for your Linux distribution. + + + + + + + +When I try to run db2setup, I get the following error: +./db2inst: error while loading shared libraries: libncurses.so.4: cannot +open shared object file: No such file or directory + + + + +DB2 issues this error when it can't find the libncurses.so.4 library. Red Hat 7 +does not include this level of the library in their standard ncurses-5.1-2 package, +requiring that you install the ncurses4-5.0-2 library for backwards compatibility. + + + + + + + +Creating a DB2 instance on SuSE Linux: Default user name already exists + + + + +If you did not remove the default DB2 user IDs created by SuSE Linux before +installing DB2 (see ), the DB2 Create Instance +panel places the corresponding user ID in the "User ID" field. This +can cause a problem when you change the value of the User Name field +to reflect the name of the new instance, because the value of the "User ID" +still reflects the original user name. + + +Ensure that you select the "Use default UID" check box to automatically +associate the new user name with its corresponding user ID. + + + + + + + +Creating a DB2 instance on SuSE Linux: Default group name already exists + + + + +If you did not remove the default DB2 user IDs created by SuSE Linux before +installing DB2 (see ), the DB2 Create Instance +panel places the corresponding group ID in the Group ID field. This +can cause a problem when you change the value of the Group Name field +to reflect the name of the new instance, because the value of the Group ID +still reflects the original group name. + + +Ensure that you select the "Use default GID" check box to automatically +associate the new group name with its corresponding group ID. + + + + + + + +Creating a DB2 instance on SuSE Linux: Default home directory points to /usr/lib/db2/ + + + + +If you did not remove the default DB2 user IDs created by SuSE Linux before +installing DB2 (see ), the default user name already exists and was created in the +/usr/lib/db2/ directory. To change the +home directory of your new DB2 instance, you must manually specify +the location of the new instance. The default home +directory is /home/. + + + + + + + +After creating a DB2 instance, I installed the Application Development Client, +but I can't use that instance to create DB2 applications. + + + + +When you add the Application Development Client after you initially install +DB2 and create a DB2 instance, your existing DB2 instance won't recognize the +db2 prep command. Instead, DB2 returns the following error: +DB21051E The command is not supported for this environment. + + + +The problem is that when you install a new DB2 component, DB2 does not automatically update +existing DB2 instances to include links to the new libraries and executables. +To update an existing DB2 instance, use the db2iupdt command as root: +bash# /usr/IBMdb2/V7.1/instance/db2iupdt instance-name +To update all existing DB2 instances, issue the following command as root: + bash# /usr/IBMdb2/V7.1/instance/db2iupdt -e + + + + + + + +I installed DB2, but none of the permissions in +/usr/IBMdb2/V7.1/bin +are executable! + + + + +When you create an instance, as described in +, DB2 copies selected files from +/usr/IBMdb2/V7.1/bin into the +$HOME/sqllib/bin directory of +the instance. DB2 sets the appropriate permissions on the copies of +the files in the instance directory. + + + + + + + + + + +Problems creating a DB2 instance + +instance creationtroubleshooting +creating DB2 instancestroubleshooting + + +The following section covers some of the common problems you may encounter +when you create a DB2 instance. + + + + + + +Creating a DB2 instance or a DB2 Administration Server fails. + + + + +DB2 often fails to create an instance because you became root by issuing the command +bash$ su root rather than bash$ su -l root, which +uses the environment settings for the root account. Check the contents of the DB2 install log +in /tmp/db2setup.log. If the installer has issued the following error message: + + + DBI1517E An attempt to execute a command in a subprocess failed. + + Explanation: An error was detected when attempting to execute a command in a subprocess. One of the + following problems occurred: + + o The command does not exist. + o Incomplete command search path. + o Incorrect access permissions on the command. + o System resource problem. + + +then most likely your root account did not have the +/usr/sbin directory in the PATH +environment variable for root. + + +PATH is normally set correctly for you if you log in as +root, or issue the command bash$ su -l root to become root. You can +add /usr/sbin to the +PATH environment variable by issuing the following command at the terminal +prompt, or including it in /root/.bashrc: + + + export PATH=$PATH:/usr/sbin + + + + + + + + +db2setup indicated that it successfully +created an instance, but I checked /tmp/db2install.log +and it contains the message +DBI1766W Cannot change the secondary group list of "" +(Caldera OpenLinux 2.4). + + + + + +This is one area where DB2 and Caldera OpenLinux don't work well together. +Fix this by manually adding each instance user ID to the group +you defined during instance creation. Here's the full help from +the IBM DB2 Message Reference: + + + DBI1766W Cannot change the secondary group list of + "". + + Explanation: A code, "", is returned when attempting to + change the secondary group list of the given user ID. One of the + following situations has occurred: + + o NIS is running. + + o One or more processes are currently being executed under the + given user ID. + + User Response: You must add the group ID, "", to the + secondary group list of the user ID, "", so that the + Adminstration Server can function properly. + + o If there happens to be any process run under the given user + ID, terminate all of these processes and follow the + instructions above to setup the secondary group list of this + user ID. + + o If you are running this command on an NIS client, try the + above instructions to setup the secondary group list of this + user ID on your NIS server. + + +For instructions on how to add user IDs to groups, see . + + + + + + + + + +Problems using DB2 + +The following section covers some of the common problems you may encounter +when you use a DB2 database. + + + + + +connectiontroubleshooting +kerneloptimizing parameters +Control Centertroubleshooting +commandstroubleshooting +db2 commandstroubleshooting + + + +DB2 is running out of available connections. + + + +You probably need to adjust some kernel parameters. For more information, see +. + + + + + + +I installed DB2 Version 6.1 and db2start just hangs. + + + + +Hey! I said I wasn't going to include any DB2 Version 6.1 information! Oh well, this is +one of the most frequently asked questions about 6.1, so here's a short answer: you need to install +a recent DB2 FixPack. The initial release of DB2 Version 6.1 ran into incompatibilities +with distributions built on glibc 2.1. For a full description of the +problem, and the correct install procedure, refer to IBM Support document 1000814: +db2start hangs on Linux distributions built with glibc 2.1. + + + + + + + +I'm using DB2 PE 7.1 on linux (RH 6.0), and I'm having problems when +trying to connect with my username and password. I can connect successfully +to the database with the default user ID: + +bash$ db2 connect to sample + +Database Connection Information + +Database server = DB2/LINUX 7.1.0 +SQL authorization ID = userID +Local database alias = SAMPLE + +But when I try to connect to the database using the explicit user ID, it fails: + +bash$ db2 CONNECT TO sample USER userID +Enter current password for userID: +SQL1403N The username and/or password supplied is incorrect. +SQLSTATE=08004 + +Why can't I connect with an explicit user ID? + + + + +Check the ownership and permissions on the db2ckpw program. +They should look like this: + +bash$ ls -al ~/sqllib/security/db2ckpw +-rwsr-s--x 1 root build 15989 Oct 17 07:22 sqllib/security/db2ckpw* + +If this program is not owned by root, then do the following as root: + +bash# chown root db2ckpw +bash# chmod ug+s db2ckpw + + + + + + + + +When I start the DB2 Control Center, I get a message box with the +error SQL1042C An unexpected system error occurred. + + + + +On most systems, this error occurs only the first time you start the Control Center. Note that +the message box may be mostly covered up by the pretty DB2 splash screen; +if this is the case, you have to move the error message window down +and press the "Close" button. The Control Center then starts correctly, and you should +not get the error message again. + + + + + + + + +The DB2 Control Center starts normally, but the "Systems" folder is empty. + + + +If the Control Center displays an empty "Systems" folder, +you might need to catalog the DB2 Administration Server manually for the +local instance from which you are trying to run the Control Center. +This assumes that you have created the DB2 Administration Server instance +before starting the Control Center. + + +To catalog the DB2 Administration Server, issue the following command: +bash$ db2 catalog admin local node machine-name instance Administration-Server-name system machine-name ostype linux +Now restart the Control Center. Your local system is now displayed under the "Systems" folder. +Do not try this from a client-only install of DB2, +because no local DB2 Administration Server can be available. + + + + + + +When I try to start the DB2 Control Center, I get the following message +at the console: Xlib: connection to "localhost:0.0" refused by server + + + + +This normally indicates an X permissions problem that occurs when you log on as one user, then +su to the DB2 instance owner so that you can start the DB2 Control Center. +By default, most X servers do not recognize 'localhost' as a client that is allowed to initiate +an X app on your display; it will only recognize your real hostname. If xauth +is set up, then it will complain if a user ID other than the one that started X tries to invoke +an X application.There are a few things you can try: + + + +Before su'ing to the DB2 instance owner, issue the command bash$ xhost +localhost: +this tells your X server that 'localhost' is allowed to start X apps on your display. Then su +to the DB2 instance owner and start the Control Center. + + + + +Log out completely, then log on directly as the DB2 instance owner and start the Control Center. +You may still have to issue the command bash$ xhost +localhost before the +Control Center will start--recent distributions have added this extra level of security. + + + + +Look into the xauth command and add your primary user ID's +~/.Xauthority file to your DB2 instance owner's xauth +authority database. I believe it's the xauth merge command that you want. + + + + + + + + + +When I start the DB2 Control Center, I get a message box with the +error SQL1042C An unexpected system error occurred. + + + + +On most systems, this error occurs only the first time you start the Control Center. Note that +the message box may be mostly covered up by the pretty DB2 splash screen; +if this is the case, you have to move the error message window down +and press the "Close" button. The Control Center then starts correctly, and you should +not get the error message again. + + + + + + +When I try to start the DB2 Control Center with +the db2cc command, the splash screen comes up, then +disappears. + + + + +On Caldera, the Control Center didn't work for me until I added the instance user IDs to +the appropriate groups. For more information, see . + + + + +Ensure that you have installed the IBM Developer Kit for Java, and that +the directory containing the jre or java +executable is in your path. If you issue the command bash$ java -fullversion, +you should get a response like this: + +java full version "JDK 1.1.8 IBM build l118-20000325 (JIT enabled: jitc)" + +or, for the IBM JDK 1.3: + +java full version "J2RE 1.3.0 IBM build cx130-20000623" + +Java virtual machines from other sources may not work. +For a quick guide to installing the IBM Developer Kit for Java, see +. + + + + + + + +When I run any db2 commands, part of the output is +Welcome to your OpenLinux system!. How +do I change this? (Caldera OpenLinux 2.4) + + + + +Caldera OpenLinux includes this annoying message as part of their default +login. For instructions on how to remove or modify this output, see +. + + + + + + + +How do I connect from a DB2 Connect for Linux client to a DB2 for AS/400 server? + + + + +Claus Reiner contributed the following procedure: + + + Preparing DB2 for AS/400 to accept connections + + AS/400 has a special service that must be run and other things + that need to be prepared: + + + + Name the database and make a *LOCAL entry Command WRKRDBDIRE. + There should be an entry with a remote location name of *LOCAL. + The relational database name specified with that entry is the + external name of the AS/400 database. Typically this is the same name as the + system name. + + + + + Set the code page to 37. For the user that connects, change the CCSID parameter + from *SYSVAL to 37, or change it system-wide: + + CHGUSRPRF USRPRF(user) CCSID(37) + +or + + CHGSYSVAL SYSVAL(QCCSID) VALUE(37) + + + + + + Start a service to listen on port 446. To start the service once: + + STRTCPSVR SERVER(*DDM) + +To automatically start the service: + + CHGDDMTCPA AUTOSTART(*YES) + + + + + + Create a NULLID collection by issuing the following SQL statement: + + CREATE COLLECTION NULLID + + + + + + Possibly create a collection for the user ID to connect with: + + CREATE COLLECTION userid + + + + + + Preparing DB2 Connect for Linux to connect to an AS/400 database + + On the Linux side, you need to perform the following steps: + + + + Catalog the remote node (the AS/400) with OSTYPE OS400: + +bash$ db2 CATALOG TCPIP NODE as400 REMOTE as400 \ + SERVER 446 REMOTE_DATABASE as400_dbname \ + OSTYPE os400 + + + + + + Catalog the remote database in DCS: + +bash$ db2 CATALOG DCS DATABASE as400_dbname AS as400_dbname + + + + + + Catalog the remote database: + +bash$ db2 CATALOG DATABASE as400_dbname AS as400_dbname \ + AT NODE as400 AUTHENTICATION DCS + + + + + + + + + + + + + +Improving DB2 Version 7.1 performance on Linux + +Database administrators running DB2 on Linux often run into +problems attempting to perform the following tasks: + + + +increasing the maximum number of simultaneous connections to the DB2 server + + + + +configuring buffer pools + + + +The following sections attempt to address those problems. + + + +Increasing maximum connections + +One of the most frequently reported problems with running DB2 on Linux is that +DB2 seems to quickly start refusing connections to the server. You can alleviate +this problem by examining an altering several kernel parameters that control +inter-process communication (ipc) limits. + + +The number of connections that DB2 can support depends on kernel parameters that, +in the 2.2 kernel, are #define variables included in the +kernel source header files. In the 2.4 kernel, some of these parameters can be set +through the /proc filesystem. +Following the description of these +variables is a table listing the default values by distribution. The table includes the values +of these variables in the updated kernel packages for each distribution. + + +_SHM_ID_BITS + + +This variable, defined in /usr/src/linux/include/asm/shmparam.h, +determines the number of shared memory segment identifiers available to Linux. The +default value for _SHM_ID_BITS in the kernel source +is 7, which allows for a total of 2^7, or 128, +shared memory segment identifiers. + + +On a single-processor machine, DB2 itself uses a set number (~15) of +shared memory segment identifiers. On a machine with multiple processors, +DB2 also requires one shared memory segment identifier per agent to take +advantage of the Fast Communication Manager (FCM) feature +of DB2. Because each DB2 connection requires one agent per processor, +on a quad-processor machine the default value of _SHM_ID_BITS +allows less than 32 simultaneous connections to a DB2 instance. + + +If you recompile the kernel yourself, you should be able to safely +increase this value to 9. + + + + + +MSGMNI + + +This variable determines the maximum number of message queue identifiers. +For DB2 Version 7.1 to function correctly, the minimum value is 128, +but for heavier use consider setting this value to 1024 or +higher. + + +In the 2.2 kernel source, this variable is defined in +/usr/src/linux/include/linux/msg.h. The default value of +128 is acceptable for small-scale use of DB2 Version 7.1. + + +In the 2.4 kernel source, this variable is defined in +/proc/sys/kernel/msgmni. The default value of +16 must be increased to enable DB2 Version 7.1 to +function correctly. The good news is that you can change this value +without recompiling the kernel or rebooting your machine. +For more information, see . + + + + + +NR_TASKS + + +This variable, defined in /usr/src/linux/include/linux/tasks.h, +determines the number of simultaneous processes that Linux +supports. A second variable, MAX_TASKS_PER_USER, is defined +as NR_TASKS/2. Since DB2 instances are treated as +users by Linux, and each connection uses a single process, the maximum number +of connections per instance is capped at the value of NR_TASKS/2. + + +The default value for NR_TASKS in the kernel source is 512, +allowing a maximum of 256 simultaneous connections to a single DB2 instance. +DB2 itself requires a few connections for overhead processes. +If you recompile the kernel yourself, you should increase this value to something like 2048. +The stock kernels shipped with the Red Hat, SuSE, and TurboLinux distributions +increase the value of NR_TASKS to 2560 or above. +However, Caldera OpenLinux eDesktop 2.4 ships with a kernel in which NR_TASKS +is set to the default value of 512. Caldera users should increase the value +of this variable and recompile the kernel. + + + + + +SEMMNI + + +This variable, defined in /usr/src/linux/include/linux/sem.h, +determines the number of semaphore identifiers that Linux supports. This variable +is particularly important on symmetric multi-processing (SMP) +machines. A unique semaphor identifier is required for each processor per agent +(or connection); therefore, on a quad-processor machine, four semaphore identifiers +are required per connection. + + +The default value for SEMMNI in the kernel source is 128, +which, on a quad-processor machine, will only allow 32 simultaneous connections to a DB2 instance. +If you recompile the kernel yourself, increase this value to something like 1024. + + + + + + + + +The following table shows the default values of the kernel parameters +set in the stock kernel source and in the kernels provided by each +distribution. + + + +unknown indicates that I don't +know what the default level is, probably because it came +to my attention after I had already removed the distribution +(your feedback is welcome!) + + + + +?? indicates that I could not find the +parameter in the kernel source or in the +/proc/sys/kernel/ directory. Help, anyone? + + + + +** as a prefix indicates that the +default value is not acceptable and must be increased + + + + + + +kernelparameter defaults + + +Default kernel parameter values, by distribution + + + + + + + + Distribution + _SHM_ID_BITS + MSGMNI + NR_TASKS + SEMMNI + + + + + 2.2 kernel source + 7 + 128 + 512 + 128 + + + 2.4 kernel source + ?? + **16 + ?? + 128 + + + Caldera OpenLinux eDesktop 2.4 + 7 + Unknown + 512 + 128 + + + Caldera OpenLinux eServer 2.3 + 7 + Unknown + 512 + 128 + + + Linux-Mandrake 7.2 + 10 + 512 + 4090 + 512 + + + Red Hat 6.2 + + kernel-2.2.14-5 + 7 + kernel-2.2.14-12 + 9 + kernel-2.2.16-3 + 9 + + Unknown + + kernel-2.2.14-5 + 2560 + kernel-2.2.14-12 + 2560 + kernel-2.2.16-3 + 4090 + + + kernel-2.2.14-5 + 128 + kernel-2.2.14-12 + 512 + kernel-2.2.16-3 + 512 + + + + Red Hat 7.1 + n/a (2.4 kernel) + 16 + n/a (2.4 kernel) + 128 + + + SuSE 6.2 + Unknown + Unknown + Unknown + Unknown + + + SuSE 6.3 + Unknown + Unknown + Unknown + Unknown + + + SuSE 7.0 + 9 + 128 + 2048 + 512 + + + TurboLinux 6.0 + + kernel-2.2.14-5 + 7 + kernel-2.2.16-0.4 + 7 + + Unknown + + kernel-2.2.14-5 + 2560 + kernel-2.2.16-0.4 + 2560 + + + kernel-2.2.14-5 + 128 + kernel-2.2.16-0.4 + 128 + + + + +
+
+ + +Creating and configuring buffer pools + +A buffer pool is a database object representing system memory used +to cache table and index data as it is read from disk or modified. +DB2 allocates a default buffer pool of 4 megabytes of memory. This +is a ridiculous default for a production database because it will +inhibit performance greatly. To get good performance out of DB2, + you must create one or more buffer pools and associate them with +the tablespaces used to hold the tables in your database. For more +information on buffer pools and increasing performance, see the +IBM DB2 Administration Guide: Performance. + + +On a system with a 2.2 kernel compiled with support for >1 gigabyte of +RAM, the practical upper limit for buffer pools is about 1 gigabyte of memory +due to the location in memory in which Linux loads shared libraries. + + + +
+ + +Installing the IBM Developer Kit for Java + +Javainstalling +JDKinstalling +JREinstalling + + +This section gives you quick and dirty instructions on how to install the +IBM Developer Kit for Java, version 1.1.8 or 1.3. +You need the IBM Developer Kit for Java to run the DB2 Control Center +or Java applications or applets that connect to DB2. +Note that these instructions are not meant to replace the documentation +supplied with the IBM Developer Kit for Java. + + +For DB2 Version 7.1, you cannot use other versions of Java. Versions +of the Java Virtual Machine (JVM) supplied by other +software organizations are not supported. + + + + + + +Installing the IBM Developer Kit for Java, Version 1.1.8 + + + +Download the IBM Developer Kit for Java, version 1.1.8, from the +IBM Java +Developer's Kit downloads web site. I'll assume that you +download the RPM package of the IBM Developer Kit for Java. + + + + + +Install the IBM Developer Kit for Java by issuing the following command as root: +bash# rpm -ivh IBMJava118-SDK-1.1.8-2.0-i386.rpm + + +I most recently tested IBM JDK 1.1.8 build 20000713 successfully on +Linux-Mandrake 7.2. To see which build of the IBM JDK you are using, +issue the java -fullversion command. + + + + + +Add the following lines to your /etc/profile file to set +up the Java environment for all users: + + export JAVA_HOME=/usr/jdk118 + export PATH=$PATH:$JAVA_HOME/bin + export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib/classes.zip + + + +Caldera users should see for instructions on +configuring the IBM Developer Kit for Java on Caldera OpenLinux. + + + + + + + + +Installing the IBM Developer Kit for Java, Version 1.3 + + + +Download the IBM Developer Kit for Java, version 1.3, from the +IBM Java +Developer's Kit downloads web site. I'll assume that you +download the RPM package of the IBM Developer Kit for Java. + + + + + +Install the IBM Developer Kit for Java by issuing the following command as root: +bash# rpm -ivh IBMJava2-SDK-1.3-1.1-i386.rpm + + +I most recently tested build cx130-20001124 +successfully with Linux-Mandrake 7.2. To see which build of the +IBM JDK you are using, issue the java -fullversion command. + + + + + +Add the following lines to your /etc/profile file to set +up the Java environment for all users: + + export PATH=$PATH:/opt/IBMJava2-13/bin + + + +Caldera users should see for instructions on +configuring the IBM Developer Kit for Java on Caldera OpenLinux. + + + + + + + +IBM JDK 1.3 does away with the jre command, even if you +install the the IBM JRE 1.3 package. +However, the db2cc script calls the +jre command. The easiest solution is to create a link +called jre to the java executable +in the /opt/IBMJava2-13/bin directory +by issuing the following command as root. + +bash# ln -sf /opt/IBMJava2-13/jre/bin/java /opt/IBMJava2-13/jre/bin/jre + + + + + + +The db2cc script calls the jre command +with the -nojit argument, which is not supported in IBM JDK 1.3. +Remove the option by changing line 44 of /usr/IBMdb2/V7.1/bin/db2cc +to the following: + +JRE_OPTIONS="-ss256k -mx128m -Ddb2path=$DB2PATH" + + + + + + + + +Using the 2.4 kernel with DB2 Version 7.1 + +The Linux 2.4 kernel changes the default values of some ipc +limits. However, the default value for the msgmni is +16, which causes difficulties running DB2 with the +default 2.4 kernel ipc parameters. +Fortunately, the 2.4 kernel also enables you to change a number +of these parameters through the /proc +filesystem. With the 2.4 kernel, you do not have to recompile your kernel to +experiment with different parameter values. + + +Configure the msgmni parameter by issuing the +sysctl command as root: + +bash# sysctl -w kernel.msgmni=128 + +You can also change values directly in /proc/sys/kernel using the echo command: + +bash# echo "128" > /proc/sys/kernel/msgmni + + + +To set the msgmni kernel parameter at boot time, append the +following lines to /etc/sysctl.conf: + +# Sets maximum number of message queues to 128 +# Set this to 1024 or higher on production systems +kernel.msgmni = 128 + +To check the current ipc settings, issue the +ipcs -l command: + +bash$ ipcs -l + +------ Shared Memory Limits -------- +max number of segments = 4096 +max seg size (kbytes) = 32768 +max total shared memory (kbytes) = 8388608 +min seg size (bytes) = 1 + +------ Semaphore Limits -------- +max number of arrays = 128 +max semaphores per array = 250 +max semaphores system wide = 32000 +max ops per semop call = 32 +semaphore max value = 32767 + +------ Messages: Limits -------- +max queues system wide = 128 +max size of message (bytes) = 8192 +default max size of queue (bytes) = 16384 + + + + + +Resources + +Following is a list of references to further information on using DB2 V7.1 for Linux: + + + +Newsgroups + + + + +comp.databases.ibm-db2 + + +Covers the use of DB2 Universal Database on all platforms, including Linux and +other Unices, OS/2, OS/390, OS/400, and Windows. This forum is quite active. + + + + +ibm.software.db2.udb.v7beta on the news.software.ibm.com NNTP server + + +Although this newsgroup was meant to serve users trying out the DB2 V7.1 beta code, +there are a lot of general questions about DB2 on Linux that might help answer your +questions. Now that the final release is available, activity on this forum has +slowed down significantly. + + + + + + + + +Web sites + + + +DB2 Library + + +IBM publishes many books on installing, administering, and developing applications with DB2. +If you decide not to install the documentation when you install DB2, you can always access the +documentation online in HTML format or download PDF versions of the books. + + + + +DB2 Application Development + + +This web site contains the latest information about restrictions, workarounds, or additional +documentation for developing applications with DB2. + + + + +DB2 for Linux + + +This web site contains general information about using DB2 for Linux, including a link +to the free download +of DB2 Personal Developers Edition. + + + + +DB2 Magazine + + +This web site is the online version of DB2 Magazine, which publishes articles about using DB2 +on Linux and other platforms. You can also sign up a free subscription to the print version +of the magazine. + + + + +DB2 White Papers + + +This web site contains white papers published by IBM about DB2. White papers typically +provide overviews or introductions to new technology or new releases of a product. + + + + +International DB2 Users Group (IDUG) + + +IDUG holds a number of international conferences on DB2 and has regional user groups. +While IDUG has traditionally focused on DB2 for OS/390 and OS/400, they have increasingly +included information on DB2 for Linux, other Unices, OS/2, and Windows. The IDUG web site +includes online discussion forums and links to other DB2 resources. + + + + + +DB2 on Debian + + +Andika Triwidada contributed most of the information in this document +about installing DB2 on Debian, using rpm to +install the DB2 packages. The web page is the original source of that information. +For those interested in installing previous releases of DB2 for Linux on Debian, +Andika also includes information on running DB2 Version 5.2 and DB2 Version 6.1 on Debian. + + + + + +Agnostic DB2 V7.1 for GNU/Linux + + +Another page on installing DB2 on a platform that favours the +dpkg package manager, written by Tiago Antao. +His approach uses rpm and alien to convert +the packages tgz archives, then decompress the packages +using tar and gzip. + + + + + +Full text searching with DB2 on Linux and SWISH++ + + +The Text Extender allows you to perform full-text indexing and searches of databases +on DB2. Unfortunately, the Text Extender is not yet available for DB2 for Linux. + + +To fill the void, Kevin Sangalee has put together an excellent page on an alternative +method of providing similar function. From the site: +
+ +This document describes way to provide this functionality using the +text indexing package SWISH++, a User Defined Function (in this case, written in C), +and a Perl script. It should be taken as an overview guide rather than as detailed +instructions, since the solution may require some coercing to fit with other applications. + +
+
+
+
+ +
+
+
+
+
+
+ + + +GNU General Public License +GPL +GNU General Public License + +
+ +Version 2, June 1991 + + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +
+ + +Preamble + +The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + + + The precise terms and conditions for copying, distribution and +modification follow. + + + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + + + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + + + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + + + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + + + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + + + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + + + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + + + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + + + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + + + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + + + NO WARRANTY + + + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + + + END OF TERMS AND CONDITIONS + + + +How to Apply These Terms to Your New Programs + + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + +one line to give the program's name and a brief idea of what it does. +Copyright (C) yyyy name of author + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + + + +Also add information on how to contact you by electronic and paper mail. + + + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + +Gnomovision version 69, Copyright (C) year name of author +Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. +This is free software, and you are welcome to redistribute it +under certain conditions; type `show c' for details. + + + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + + + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + +Yoyodyne, Inc., hereby disclaims all copyright interest in the program +`Gnomovision' (which makes passes at compilers) written by James Hacker. + +signature of Ty Coon, 1 April 1989 +Ty Coon, President of Vice + + + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. + + + +
+ +