Installing 0.4.0

Anonymous
2011-12-08
2013-03-15
1 2 > >> (Page 1 of 2)

  • Anonymous
    2011-12-08

    There are detailed instructions for installing "legacy" Guacamole 0.3.0.  There are instructions for building the 0.4.0 libraries and guacd, which I built from source.  What is just the "guacamole" 0.4.0 download in the file list?  Excuse my ignore but I'm completely new to java webapps.  Are there instructions for building and/or installing this?  The legacy 0.3.0 don't seem to apply.  There isn't a .war file in there.

     
  • Michael Jumper
    Michael Jumper
    2011-12-08

    The "guacamole" download is the web application. All components (web application, guacd, and the libraries) are required for Guacamole to work.

    The web application would be deployed to a servlet container like Tomcat, but the web application does not understand VNC or other remote desktop protocols - it only understands the Guacamole protocol (intended to be a text-based superset of the operations of most remote desktop protocols).

    To translate between VNC and other remote desktop protocols, guacd accepts connections from the web application and acts as a proxy. The web application is the only component that performs authentication, and it is the result of this authentication that decides what configuration to use (which protocol and server to use guacd to connect to, etc.) when connecting through guacd.

    While guacd provides the means for the web application to connect to other remote desktops using a common protocol, it also doesn't directly support the remote desktop protocols used. Client plugins (like libguac-client-vnc) provide protocol support, connecting as clients to whichever remote desktop server is requested, and drawing to the Guacamole client as a remote display using the Guacamole protocol.

    So, overall:

    guacamole - Web application containing the client users will actually interact with. Supports the Guacamole protocol, and requires guacd to connect to remote desktops.

    guacd - Proxy daemon which accepts connections from the web application and associates them with the client plugin supporting the protocol requested.

    libguac - Common library shared between guacd and all client plugins. libguac provides I/O facilities and Guacamole protocol functions.

    libguac-client-vnc - Client plugin for guacd providing VNC support.

    Let me know if anything here needs clarification. I would like to add an architectural description like this to the main docs, as yours is a common question.

     

  • Anonymous
    2011-12-08

    Ok.  That clarifies it some.  There are detailed instructions for building guacd, libguac, and libguac-client-vnc, but nothing that I can find on what to do with guacamole.  There are legacy instructions for guacamole 0.3.0, but the file structure is very much different in 0.4.0.  The instructions don't appear to apply.  For example, there is no .war file or the xml files mentioned in the instructions.  Can somebody point to instructions on how to setup 0.4.0 with tomcat?  I hope I don't sound incredibly clueless but I am completely new to tomcat and webapps.  I just installed tomcat two days ago to use guacamole.  So far, it works great but it sounds like I need to step up to 0.4.0 and eventually 0.5.0.

     
  • Michael Jumper
    Michael Jumper
    2011-12-08

    Building, Installing, and Configuring Guacamole … in a nutshell:

    You can build guacamole.war from source using Maven. Once you have Maven installed, just extract the guacamole web application source (guacamole-0.4.0.tar.gz), change into the guacamole-0.4.0 directory, and run:

    mvn package
    

    That will download all build dependencies, build the .war file, and place it in the "target" subdirectory. If you already have Tomcat installed, you just need to locate Tomcat's "webapps" directory and copy the .war file into there. Tomcat should automatically extract the contents of the .war and deploy the web application once it has been copied. You will probably want to copy the .war as "guacamole.war" instead of whatever Maven names it, as it is the base name of this file Tomcat will use as the root of the web application.

    Configuration of the newer versions of Guacamole use a .properties file (guacamole.properties) and a XML file containing user definitions and configurations (user-mapping.xml). Information for editing these files is on the wiki (http://guac-dev.org/Configuring%20Guacamole), and examples are included in the "doc" subdirectory of the web application source.

    The "guacamole.properties" file needs to be in the classpath of the web app. If you are using Tomcat 6, there will be a "lib" directory where it is installed (some distributions use /usr/share/tomcat6/lib). Place the properties file there. You can place user-mapping.xml wherever you like, but guacamole.properties must be edited to point to the location of the user-mapping.xml file. If you read over the Debian or Fedora install docs on the wiki, you might get a general idea for how things are intended to be set up.

    Once you've done all that, try restarting Tomcat and navigating to http://localhost:8080/guacamole/ (assuming the file you copied was named guacamole.war) and see if it works.

    Let me know if you have any problems. This thread is going to be the basis of new docs.

     

  • Anonymous
    2011-12-09

    For those following along with CentOS…

    Before starting, run this first:

    yum install mojo-maven2-jspc-compiler-tomcat6

     

  • Anonymous
    2011-12-12

    I'm trying to piece together a complete end-to-end installation from multiple pieces of installations.  Can you verify this for me and let me know what I'm doing wrong?

    1.  yum install mojo-maven2-jspc-compiler-tomcat6 to install maven
    2.  "mvn package"
    3.  Renamed the target/……war file to target/guacamole.war
    4.  Copy target/guacamole.war to /var/lib/guacamole/guacamole.war (similar to the legacy instructions)
    5.  Copy doc/example/user-mapping.xml to /var/lib/tomcat6/webapps/guacamole
    6.  Edit the user-mapping.xml to include a user, connecting to the VNC sever with the correct host and port and password (in plain text or md5).
    7.  Add /usr/local/lib to /etc/ld.so.conf (CentOS doesn't put things in /usr/local/lib)
    8.  Build libguac
    9.  Build guacd
    10.  Write /etc/init.d/guacd script
    11.  Start guacd service
    12.  Start tomcat6

    Probably is I get an "Internal error" message when I try logging to guacamole.  Is there a log that details what failed?

     

  • Anonymous
    2011-12-12

    "Problem", not "probably".  I wish there was an edit feature here. 

     
  • Michael Jumper
    Michael Jumper
    2011-12-12

    There are two logs available from Tomcat: catalina.out and localhost-DATE.log. One of those should contain the error. Where these log files are located is dependent on how Tomcat is configured.

    From the steps above, you are missing the guacamole.properties file, which should be installed in the classpath of Tomcat (there should be a lib directory like /usr/share/tomcat6/lib - I am unsure where this would be on CentOS). Without this file, Guacamole cannot locate user-mapping.xml or connect to guacd.

    You then need to edit guacamole.properties to point to the location of your user-mapping.xml file (which probably should not be in /var/lib/tomcat6/webapps/guacamole, as that directory is automatically created by Tomcat and should only contain the files from guacamole.war which it expands there).

    I usually create a directory /etc/guacamole and place both user-mapping.xml and guacamole.properties there, and leave a symbolic link to guacamole.properties in the lib directory of Tomcat.

    You will need to restart Tomcat once the guacamole.properties file is in place.

    And yes, I wish there were an edit feature, too. I've already had to migrate Trac away from SourceForge, and I'm guessing the forums will be the next thing that ends up moving.

     

  • Anonymous
    2011-12-12

    I was just about to post that I figured out where the logs were and found the guacamole.properties problem.  I think I had that fixed before I started thrashing about.  I still get "Internal error", but the logs don't complain of not finding the guacamole.properties file.  When I supply the incorrect credentials, it actually tells me its a login error.  But the correct credentials result in "Internal error".  The catalina log doesn't show anything remarkable.  Just that the login was successful.  The localhost log, however, says:

    Dec 12, 2011 11:38:36 AM org.apache.catalina.core.StandardWrapperValve invoke
    SEVERE: Servlet.service() for servlet Tunnel threw exception
    java.lang.NullPointerException
            at net.sourceforge.guacamole.io.ReaderGuacamoleReader.readInstruction(ReaderGuacamoleReader.java:131)
            at net.sourceforge.guacamole.protocol.ConfiguredGuacamoleSocket.<init>(ConfiguredGuacamoleSocket.java:69)
            at net.sourceforge.guacamole.net.basic.BasicGuacamoleTunnelServlet.doConnect(BasicGuacamoleTunnelServlet.java:87)
            at net.sourceforge.guacamole.servlet.GuacamoleTunnelServlet.handleTunnelRequest(GuacamoleTunnelServlet.java:79)
            at net.sourceforge.guacamole.servlet.GuacamoleTunnelServlet.doPost(GuacamoleTunnelServlet.java:54)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
            at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
            at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
            at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
            at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
            at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
            at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
            at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:861)
            at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579)
            at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1584)
            at java.lang.Thread.run(Thread.java:636)

     

  • Anonymous
    2011-12-12

    I found another thread that indicated a configuration change for Tomcat.  I added the following to /etc/tomcat6/catalina.policy:

    grant {
            permission java.net.SocketPermission "localhost:4822", "connect,resolve";
            permission java.net.SocketPermission "127.0.0.1:4822", "connect,resolve";
    };

    The other thread claimed that fixed the problem, but it didn't for me.  I restarted x11vnc, guacd, and tomcat6.

     
  • Michael Jumper
    Michael Jumper
    2011-12-12

    It looks like guacd is not successfully connecting to your VNC server. Does x11vnc report and errors when you try to connect? Do you see any errors in syslog (guacd logs errors to syslog)?

    Are you sure guacd is running?

     

  • Anonymous
    2011-12-12

    That was it.  libvncclient wasn't installed.  I might have removed it a while back.  If anybody else is trying to install Guacamole on CentOS and they're seeing the same thing.

    yum install libvncserver
    

    Now I have another minor problem.  I'm trying to replicate your install.  You said you put the user-mapping.xml in the /etc/guacamole directory.  I moved user-mapping.xml to /etc/guacamole, and made that change to my guacamole.properties file, which is also in /etc/guacamole.  Now guacamole complains that it can't find my user-mapping.xml. 

     
  • Michael Jumper
    Michael Jumper
    2011-12-12

    If you make changes to guacamole.properties, you will need to restart Tomcat for those changes to take effect, otherwise it will still look in the old location.

     

  • Anonymous
    2011-12-12

    Ok.  I figured out the user-mapping.xml problem.  I'm following along in installation instructions for various different platforms, but nothing for CentOS.  Apparently, my installation is reading /usr/share/java/tomcat6/guacamole.properties.

     

  • Anonymous
    2011-12-12

    Now back to the libvncclient problem.  When I ./configure on libguac-client-vnc, I get:

    configure:  error:  "libvncclient is required"
    

    This wasn't installed before, but now it is. 

    locate libvncclient
    /usr/lib/libvncclient.so.0
    /usr/lib/libvncclient.so.0.0.0
    /usr/lib64/libvncclient.so.0
    /usr/lib64/libvncclient.so.0.0.0
    

    I assume its looking for the header file.  So I:

    yum install libvncserver-devel
    

    However, this conflicts with x11vnc.  So I temporarily remove x11vnc just to build this library:

    yum remove x11vnc
    yum install libvncserver-devel
    

    then back to libguac-client-vnc

    ./configure
    

    Looks good.  Makefile generated.

    make
    /bin/sh ./libtool  --tag=CC   --mode=compile gcc -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DPACKAGE=\"libguac-client-vnc\" -DVERSION=\"0.4.0\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -DHAVE_LIBGUAC=1 -DHAVE_LIBCAIRO=1 -DHAVE_LIBVNCCLIENT=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_SYSLOG_H=1 -DHAVE_GUACAMOLE_CLIENT_H=1 -DHAVE_GUACAMOLE_GUACIO_H=1 -DHAVE_GUACAMOLE_PROTOCOL_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MALLOC=1 -I.    -Werror -Wall -pedantic -g -O2 -MT vnc_client.lo -MD -MP -MF .deps/vnc_client.Tpo -c -o vnc_client.lo `test -f 'src/vnc_client.c' || echo './'`src/vnc_client.c
    libtool: compile:  gcc -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DPACKAGE=\"libguac-client-vnc\" -DVERSION=\"0.4.0\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -DHAVE_LIBGUAC=1 -DHAVE_LIBCAIRO=1 -DHAVE_LIBVNCCLIENT=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_SYSLOG_H=1 -DHAVE_GUACAMOLE_CLIENT_H=1 -DHAVE_GUACAMOLE_GUACIO_H=1 -DHAVE_GUACAMOLE_PROTOCOL_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MALLOC=1 -I. -Werror -Wall -pedantic -g -O2 -MT vnc_client.lo -MD -MP -MF .deps/vnc_client.Tpo -c src/vnc_client.c  -fPIC -DPIC -o .libs/vnc_client.o
    cc1: warnings being treated as errors
    src/vnc_client.c: In function guac_vnc_cursor:
    src/vnc_client.c:81: warning: implicit declaration of function cairo_format_stride_for_width
    make: *** [vnc_client.lo] Error 1
    

    I had a problem with cairo before.  Do you have a simple fix before I start ripping apart my cairo installation again?

     
  • Michael Jumper
    Michael Jumper
    2011-12-12

    I'll check … do you know which version of libcairo you have?

     

  • Anonymous
    2011-12-12

    I added the "-w" switch to cppflags and it compiled successfully.  I finally get the VNC client page.  Yet another error, but I think I can debug this.

     

  • Anonymous
    2011-12-12

    Installed Packages
    Name       : cairo
    Arch       : i386
    Version    : 1.2.4
    Release    : 5.el5
    Size       : 1.1 M
    Repo       : installed
    Summary    : A vector graphics library
    URL        : http://cairographics.org
    License    : LGPL/MPL
    Description: Cairo is a vector graphics library designed to provide high-quality
               : display and print output. Currently supported output targets include
               : the X Window System, OpenGL (via glitz), in-memory image buffers, and
               : image files (PDF, PostScript, and SVG).  Cairo is designed to produce
               : identical output on all output media while taking advantage of display
               : hardware acceleration when available (eg. through the X Render
               : Extension or OpenGL).

    Name       : cairo
    Arch       : x86_64
    Version    : 1.2.4
    Release    : 5.el5
    Size       : 1.1 M
    Repo       : installed
    Summary    : A vector graphics library
    URL        : http://cairographics.org
    License    : LGPL/MPL
    Description: Cairo is a vector graphics library designed to provide high-quality
               : display and print output. Currently supported output targets include
               : the X Window System, OpenGL (via glitz), in-memory image buffers, and
               : image files (PDF, PostScript, and SVG).  Cairo is designed to produce
               : identical output on all output media while taking advantage of display
               : hardware acceleration when available (eg. through the X Render
               : Extension or OpenGL).

     

  • Anonymous
    2011-12-12

    I quickly got around the next problem.  Since I had to temporarily remove x11vnc, I just had to install it back:

    yum remove libvncserver-devel
    yum install x11vnc
    

    But now I have a new problem.  Here's a snipit from syslog:

    Dec 12 12:56:23 guacd: Spawning client
    Dec 12 12:56:23 guacd: VNC server supports protocol version 3.8 (viewer 3.8)
    Dec 12 12:56:23 guacd: We have 1 security types to read
    Dec 12 12:56:23 guacd: 0) Received security type 2
    Dec 12 12:56:23 guacd: Selecting security type 2 (0/1 in the list)
    Dec 12 12:56:23 guacd: Selected Security Scheme 2
    Dec 12 12:56:23 guacd: VNC authentication succeeded
    Dec 12 12:56:23 guacd: Desktop name "<nunya business what my server name is>:<numya business my display number>"
    Dec 12 12:56:23 guacd: Connected to VNC server, using protocol version 3.8
    Dec 12 12:56:23 guacd: VNC server default format:
    Dec 12 12:56:23 guacd:   16 bits per pixel.
    Dec 12 12:56:23 guacd:   Least significant byte first in each pixel.
    Dec 12 12:56:23 guacd:   TRUE colour: max red 31 green 63 blue 31, shift red 11 green 5 blue 0

    Guacamole just immediately displays a "Disconnected" message.  Clicking reconnect adds the above text to the syslog, and displays the "Disconnected" message again.  Looks like all is well, but it disconnects.

     

  • Anonymous
    2011-12-12

    I enabled verbose logging in x11vnc and got the following when I try to login:

    12/12/2011 14:00:08 Got connection from client 127.0.0.1
    12/12/2011 14:00:08   other clients:
    12/12/2011 14:00:08 check_access: checking against full string "127.0.0.1"
    12/12/2011 14:00:08 check_access: client 127.0.0.1 fullmatch matches host 127.0.0.1
    12/12/2011 14:00:08 Disabled X server key autorepeat.
    12/12/2011 14:00:08   to force back on run: 'xset r on' (3 times)
    12/12/2011 14:00:08 incr accepted_client=1 for 127.0.0.1:42418  sock=10
    12/12/2011 14:00:08 Client Protocol Version 3.8
    12/12/2011 14:00:08 Protocol version sent 3.8, using 3.8
    12/12/2011 14:00:08 rfbProcessClientSecurityType: executing handler for type 2
    12/12/2011 14:00:08 Pixel format for client 127.0.0.1:
    12/12/2011 14:00:08   32 bpp, depth 24, little endian
    12/12/2011 14:00:08   true colour: max r 255 g 255 b 255, shift r 0 g 8 b 16
    12/12/2011 14:00:08 rfbProcessClientNormalMessage: ignoring unsupported encoding type ultraZip
    12/12/2011 14:00:08 Using compression level 3 for client 127.0.0.1
    12/12/2011 14:00:08 Using image quality level 5 for client 127.0.0.1
    12/12/2011 14:00:08 Enabling X-style cursor updates for client 127.0.0.1
    12/12/2011 14:00:08 Enabling full-color cursor updates for client 127.0.0.1
    12/12/2011 14:00:08 Enabling cursor position updates for client 127.0.0.1
    12/12/2011 14:00:08 Enabling KeyboardLedState protocol extension for client 127.0.0.1
    12/12/2011 14:00:08 Enabling NewFBSize protocol extension for client 127.0.0.1
    12/12/2011 14:00:08 Enabling LastRect protocol extension for client 127.0.0.1
    12/12/2011 14:00:08 Enabling SupportedMessages protocol extension for client 127.0.0.1
    12/12/2011 14:00:08 Enabling SupportedEncodings protocol extension for client 127.0.0.1
    12/12/2011 14:00:08 Using tight encoding for client 127.0.0.1
    12/12/2011 14:00:08 client_count: 0
    12/12/2011 14:00:08 Restored X server key autorepeat to: 1
    12/12/2011 14:00:08 Client 127.0.0.1 gone
    12/12/2011 14:00:08 Statistics             events    Transmit/ RawEquiv ( saved)
    12/12/2011 14:00:08  FramebufferUpdate   :      1 |         0/        0 (  0.0%)
    12/12/2011 14:00:08  LastRect            :      1 |        12/       12 (  0.0%)
    12/12/2011 14:00:08  tight               :      1 |        16/  3145740 (100.0%)
    12/12/2011 14:00:08  SupportedEncoding   :      1 |        92/       92 (  0.0%)
    12/12/2011 14:00:08  SupportedMessage    :      1 |        76/       76 (  0.0%)
    12/12/2011 14:00:08  PointerPos          :      1 |        12/       12 (  0.0%)
    12/12/2011 14:00:08  RichCursor          :      1 |      1374/     1374 (  0.0%)
    12/12/2011 14:00:08  TOTALS              :      7 |      1582/  3147306 ( 99.9%)
    12/12/2011 14:00:08 Statistics             events    Received/ RawEquiv ( saved)
    12/12/2011 14:00:08  FramebufferUpdate   :      1 |        10/       10 (  0.0%)
    12/12/2011 14:00:08  SetEncodings        :      1 |        84/       84 (  0.0%)
    12/12/2011 14:00:08  SetPixelFormat      :      1 |        20/       20 (  0.0%)
    12/12/2011 14:00:08  TOTALS              :      3 |       114/      114 (  0.0%)
    

    Is there a verbose mode for guacd?

     

  • Anonymous
    2011-12-12

    Looks like that warning above did bite me in the butt.  When I run guacd directly from the command line, I get the following error that the logs did not have:

     guacd: symbol lookup error: /usr/local/lib/libguac-client-vnc.so: undefined symbol: cairo_format_stride_for_width
    

    What version of cairo are you expecting?

     
  • Michael Jumper
    Michael Jumper
    2011-12-12

    I've been developing using 1.8.10. Latest stable of cairo is 1.10.2. The symbol above (cairo_format_stride_for_width) was added in 1.6:

    http://cairographics.org/manual/index-1.6.html

     

  • Anonymous
    2011-12-12

    CentOS 5.7 has a deep dependency on cairo and the only version available is 1.2.  I downloaded and built cairo 1.6 from source (as well as pixman 0.10.0).  I'm getting deeper into deviating from CentOS 5.7 repos more than I really wanted to go.  When I try running make in the libguac-client-vnc (with that -w switch removed) I still get the same error.  I assume that its trying to link in the 1.2 version.  How do I specify the 1.6 version that I just built?

     
  • Michael Jumper
    Michael Jumper
    2011-12-12

    I believe we can just patch vnc_client.c to support the older libcairo:

    diff --git a/src/vnc_client.c b/src/vnc_client.c
    index a96bcf6..252b224 100644
    --- a/src/vnc_client.c
    +++ b/src/vnc_client.c
    @@ -78,7 +78,7 @@ void guac_vnc_cursor(rfbClient* client, int x, int y, int w, i
         GUACIO* io = gc->io;
    
         /* Cairo image buffer */
    -    int stride = cairo_format_stride_for_width(CAIRO_FORMAT_ARGB32, w);
    +    int stride = w * 4;
         unsigned char* buffer = malloc(h*stride);
         unsigned char* buffer_row_current = buffer;
         cairo_surface_t* surface;
    @@ -179,7 +179,7 @@ void guac_vnc_update(rfbClient* client, int x, int y, int w,
         }
    
         /* Init Cairo buffer */
    -    stride = cairo_format_stride_for_width(CAIRO_FORMAT_RGB24, w);
    +    stride = w * 4;
         buffer = malloc(h*stride);
         buffer_row_current = buffer;
    
     

  • Anonymous
    2011-12-12

    That might be easier, but I did finally get it to work.  I'm doing all this to a dev server and I eventually have to document this before we go into production.  I can post the steps required to get it to work in CentOS 5.7 once I document it.

     
1 2 > >> (Page 1 of 2)