OpenWBEM FAQ

# OpenWBEM Frequently Asked Questions

## Table of contents:

> - What do I need to build OpenWBEM?
> - How do I link a binary to the OpenWBEM libraries?
> - make check failed. What do I do now?
> - Why can't I authenticate using Linux-PAM authentication?
> - Why doesn't the configure script detect OpenSSL?
> - How do I build from OpenWBEM from CVS?
> - owcimomd closes the connection after authentication failed, and my client doesn't handle the Connection: close header. Is this a bug?

### What do I need to build OpenWBEM?

> To build OpenWBEM, you need gcc version 3.1 or higher, GNU make, and flex. Note that you currently can't use gcc 3.0.x due to some problems that gcc 3.0.x has with iostreams. gcc 3.1.x and 3.2 have been verified to work correctly. It is recommended that you also have OpenSSL to support HTTPS, and zlib if you want to support zlib (deflate) compression.

### How do I link a binary to the OpenWBEM libraries?

> All applications using OpenWBEM will need to link with libopenwbem.so. This is accomplished by adding `-lopenwbem` to your link flags. In addition, you may need some of the following flags, depending on how OpenWBEM was built.

> > - `-lssl -lcrypto` if OpenWBEM was built with OpenSSL.
> > - `-lz` if OpenWBEM was built with zlib.
> > - `-lpthread` if OpenWBEM was built with pthreads. This should be done on Linux only. On Unixware/OpenUnix, add `-pthread` to both the compile and link flags. On Solaris, add `-pthreads` to both the compile and link flags.
> > - `-lsocket -lnsl` if building on Solaris.
> > - `-lsocket` if building on UnixWare/OpenUnix

> To use the OpenWBEM client API, there are a number of other libraries that may be necessary, depending on what features you are using:
> - libowclient - necessary for all client applications
> - libowhttpclient - necessary if using the HTTPClient class
> - libowhttpcommon - necessary if using the HTTPClient class
> - libowhttpxmllistener - necessary if using the CIM listener
> - libowprovideragent - necessary if using the ProviderAgent
> - libowprovider
> - libowrepositoryhdb
> - libowrequesthandlerbinary
> - libowrequesthandlercimxml
> - libowserver
> - libowservicehttp
> - libowwqlcommon
> - libowwql
> - libowxml

> If your program needs to use the server components of OpenWBEM (i.e. you are writing a provider or an authentication module), you need to add the following link flags: `-lowserver -lowdb`.

> If you are writing an application that uses the OpenWBEM mof compiler library, add `-lowmofc` to your link flags.

### make check failed. What do I do now?

> If the acceptance test script failed, there are several log files which may help you determine what went wrong. The acceptance script installs OpenWBEM in test/acceptance/stage. The directory test/acceptance/stage/results contains the output from the various tests performed by the acceptance test script. You might start with owcimomd.output. You can also look in test/acceptance/stage for core files. If you are familiar with gdb, please create a backtrace from the core file(s) and email it to openwbem-devel@lists.sourceforge.net.

### Why can't I authenticate using Linux-PAM authentication?

> Make sure you have a /etc/pam.d/openwbem file that works. You should be able to copy the one from etc/pam.d/ in the source tar file. Also, make sure you are authenticating as a user listed in the owcimomd.allowed_users variable in openwbem.conf. For additional information, see the file AuthModule.HOWTO in the source tar file.

### Why doesn't the configure script detect OpenSSL?

> The configure script will look in the following places the the OpenSSL headers and libraries: `/usr/local/openssl /usr/lib/openssl /usr/local/ssl /usr/lib/ssl /usr/local /usr/pkg /opt /opt/openssl` If you have installed OpenSSL in another directory, then you must use the --with-ssl-dir switch to specify the path to the OpenSSL "installation", not the headers. This should be the directory containing `./include` and `./lib`. If you installed OpenSSL from the source tarball distribution, the default location is `/usr/local/ssl`, and should be found automatically.
> If OpenSSL is installed in one of the locations listed above, and the configure script is not finding it, then most likely you don't have the OpenSSL library directory in your `LD_LIBRARY_PATH`. If OpenSSL is installed in `/usr/local/ssl`, then `/usr/local/ssl/lib` must be in your `LD_LIBRARY_PATH`. configure tries to compile and run a small ssl program. If the program doesn't run, then the configure script will not detect OpenSSL. With `/usr/local/ssl/lib` in your `LD_LIBRARY_PATH`, the small test program should work, and configure will "find" OpenSSL in `/usr/local/ssl` automatically.

### How do I build from OpenWBEM from CVS?

> First run the cvsbootstrap.sh script, which will generate the Makefile.in files and the configure script. You must have autoconf and automake installed for this to work. Then you can run configure and finally make.

###

### owcimomd closes the connection after authentication failed, and my client doesn't handle the Connection: close header. Is this a bug?

> No, its not a bug, in fact, that's expected behavior. owcimomd closes the connection to prevent a denial of service attack. It's perfectly acceptable behavior according to the HTTP 1.1 rfc 2616 (see section 8, in particular 8.1.4: "A client, server, or proxy MAY close the transport connection at any time." and "This means that clients, servers, and proxies MUST be able to recover from asynchronous close events.") This is also normal http server behavior to close the connection when authorization fails. For some examples google for: 401 "Connection: close"

Last modified
Thu May 19 2005