116
116
After you have configured OpenIPMI, type "make" to build it. To
117
117
install it in the prefix you defined, do "make install".
119
OpenIPMI requires the following packages:
122
* curses, ncurses or termcap
124
OpenIPMI can use, but does not require, the following packages:
126
* netsnmp or ucdsnmp - netsnmp is the preferred SNMP package, but
127
it will use either of these. Without this, the sample programs
128
will not be able to receive SNMP traps, but there is no functional
129
change to the library.
130
* openssl - This is required for IPMI 2.0 RMCP+ encryption and
131
authentication support.
132
* glib (along with pkgconfig) - glib 2.0 is preferred, but glib 1.2
133
will be used if 2.0 is not available. This is simply an OS handler
134
for glib and it not used for anything else in OpenIPMI itself, but
135
is useful for users using glib. Note that OpenIPMI will be able to
136
use both glib 1.2 an glib 2.0 at the same time, but this is difficult
138
* swig 1.3.21 or later - This is required for perl and python language
139
support. Without it, perl, python, and the GUI will not work.
140
* perl - Support for writing scripts in the perl language that use
141
the OpenIPMI library.
142
* python - Support for writing scripts in the python language that use
143
the OpenIPMI library.
144
* Tcl/Tk - There is no Tcl language support (someone may contribute
145
that, though). However, A Tcl OS handler is provided so that
146
Perl and Python may use the Tk widgets. Without this, the GUI will
147
not work. Note that getting Tcl/Tk to work right can be difficult,
148
see below for more details.
149
* Tkinter/Tix - Python GUI libraries. Required for the GUI to work.
150
* gdbm - This is used on *nix for local SDR caching. This is not
151
required, but it *really* speeds up startup.
153
Note you need to install the development packages (generally ending in
154
-dev) of most of these for OpenIPMI to pick it up. You can examine
155
the output of configure to make sure they are properly discovered.
158
Getting Tcl/Tk to work
159
======================
161
Tcl is installed in various places, and the configure script probably
162
won't find it. If it doesn't, you must specify the install location
164
--with-tclcflags=flags --with-tcllibs=lib
165
For instance, on my Debian Linux system, I have to specify:
166
./configure --with-tclcflags="-I /usr/include/tcl8.4" --with-tcllibs=-ltcl8.4
167
to make it work right.
169
If you don't get this right, you don't get a GUI!
126
178
for more details.
184
The GUI is cleverly named openipmigui and provides a GUI interface to
185
most of OpenIPMI. It also has the standard command language (like
186
ipmish) available in a window, so it has all the power of ipmish.
188
To use the GUI, you have to have the following optional packages:
189
* swig 1.3.21 or later
194
The GUI is documented in the openipmigui man page.
140
208
what you use. ipmish and the sample code is a much better example.
211
Perl/Python and OpenIPMI
212
========================
146
OpenIPMI has perl bindings using swig. The public interface of
147
OpenIPMI is available, but the private interfaces are not (and a few
148
other things like SNMP trap support, PET, PEF, and LANPARM support).
149
It is still somewhat new, but fairly functional.
214
OpenIPMI has perl and python bindings using swig. The public
215
interface of OpenIPMI is available, but the private interfaces are not
216
(and a few other things like SNMP trap support). It is fully
151
219
I was hoping that swig would generate documentation from the comments,
152
220
but it turns out that it does not do that. You can look at
153
221
swig/OpenIPMI.i for the documentation on all the interfaces, and
154
swig/perl/sample for a piece of sample code that uses most of the
222
swig/perl/sample and the gui in swig/python/openipmigui.py for a piece
223
of sample code that uses most of the interfaces.
157
225
The interface is object-oriented, so you have to know how to do OO
158
Perl to use this. It is like this because that is the most natural
159
way to use SWIG (and it makes more OO languages like python easier).
226
Perl or Pythong to use this. It is like this because that is the most
227
natural way to use SWIG (and it makes more OO languages like python
162
231
OpenIPMI and SNMP
235
304
The source tree here consists of the following directories:
237
include - Most of the include files used by the systems, all the
240
utils - Basic utilities (mostly authentication) that other parts of
241
the system use. This is a non-shared library that the other shared
242
libraries pick up stuff from.
244
lib - The main library for OpenIPMI.
246
ui - A cheesy user interface for OpenIPMI, mostly for testing.
248
lanserv - An IPMI LAN server, it turns an SMI interface into a LAN
251
sample - Some sample code, and the ipmicmd utility.
253
doc - The documentation.
306
+---cmdlang - A command-line interpreter that gives access to the
307
| OpenIPMI library. Includes a user interface named
308
| openipmish that demonstrates how to use it.
310
+--- doc - The main documentation for OpenIPMI
312
+---glib - A glib OS handler.
315
| +---linux - linux-specific include files
316
| \---OpenIPMI - User-visible include files for OpenIPMI
317
| \---internal - Internal include files, only for plugins
319
+---lanserv - Code to provide a LAN interface to an IPMI device and
320
| to provide an IPMI simulator
322
+---lib - The man OpenIPMI code. This is where all the logic for the
323
| handling of IPMI messages is.
325
+---libedit - A readline replacement that provides cmdlang/openipmish
326
| | with command line editing.
327
| \---editline - Include files for libedit
329
+---man - The man pages for the
331
+---sample - Sample code and utilities that use the OpenIPMI library.
333
+---swig - The main interpreter interface. swig is a program that
334
| | takes a general description of a C/C++ interface and
335
| | provides the equivalent interface in various interpreters.
336
| +---perl - Perl-specific code for swig, including sample code and
338
| \---python - Python-specific code for swig.
339
| \---openipmigui - A GUI for OpenIPMI, written in Python.
341
+---tcl - A TCL OS handler
343
+---ui - A depracated UI for OpenIPMI.
345
+---unix - A POSIX OS handler, one for threaded and one for
346
| non-threaded applications/
348
\---utils - General utility code used by both the OpenIPMI library
349
and by the lanserv code.