                                Firewall Builder

Requirements

   Our main development platform is RedHat. Curently we use machines running
   RedHat 7.2 and 7.3. We make sure the package builds and runs on RedHat 8.0
   and MAndrake 9.0 systems and plan to upgrade build machine to RedHat 8.0
   soon. We run occasional test builds on Solars 8, FreeBSD 4.7 and OpenBSD
   3.0, but these are not our main development machines. We could not test it
   on Debian, SuSe distributions, although we've got positive feedback saying
   it works there, provided that correct libstdc++ and gtkmm packages are
   installed.

                   What is needed to run binary distribution

   Generally speaking, you need the following packages:

     * libstdc++ version 2.9 or newer
     * gdk-pixbuf version 0.11 or newer
     * gtkmm version 1.2.8 or newer
     * libsigc++ version 1.0 or newer
     * libxml2 version 2.4.10 or newer
     * libxslt version 1.0.7 or newer
     * ucd-snmp version 4.2.3 or newer
     * openssl version 0.9.6b or newer

Red Hat 7.2 and 7.3

   If your system is configured as "Gnome Workstation" or Ximian Gnome is
   installed, then you already have proper gtk+, gtkmm and libsigc++
   packages. If you are using KDE, then you may need to add these packages.

   We build using gtkmm and libsigc++ packages that come with Ximian Gnome.
   These RPM can be downloaded from their ftp site directly, or obtained as
   part of Ximian Gnome or using Red Carpet. libsigc++ now comes on disk #2
   with RedHat 7.3. Users of RedHat 7.2 systems can also get it from the home
   page at http://libsigc.sourceforge.net/

   libxml2 and libxslt come as part of RedHat 7.3 or can be downloaded from
   http://xmlsoft.org We recommend using the latest available versions of
   both libxml2 and libxslt.

   Firewall Builder implements number of features which make use of SNMP,
   therefore you will need ucd-snmp RPM installed, too. RPMs we distribute
   are built using ucd-snmp v4.2.3 (as of Feb 2002)

   Here is the list of recommended packages and where you can get them from:

+------------------------------------------------------------------------------+
|gtkmm-1.2.8-1       |ftp://ftp.ximian.com/pub/ximian-gnome/redhat-73-i386/    |
|--------------------+---------------------------------------------------------|
|gdk-pixbuf-0.16.0   |Ximian Gnome or RedHat updates                           |
|--------------------+---------------------------------------------------------|
|libsigc++-1.0.4-1   |RedHat 7.3 disk #2 or                                    |
|                    |ftp://ftp.ximian.com/pub/ximian-gnome/redhat-73-i386/    |
|--------------------+---------------------------------------------------------|
|libxml2-2.4.19      |RedHat 7.3 distribution or                               |
|                    |ftp://ftp.gnome.org/pub/GNOME/stable/redhat/i386/libxml/ |
|--------------------+---------------------------------------------------------|
|libxslt-1.0.15-1    |RedHat 7.3 distribution or                               |
|                    |ftp://ftp.gnome.org/pub/GNOME/stable/redhat/i386/libxslt/|
|--------------------+---------------------------------------------------------|
|ucd-snmp-4.2.3      |RedHat distribution                                      |
|--------------------+---------------------------------------------------------|
|ucd-snmp-utils-4.2.3|RedHat distribution                                      |
|--------------------+---------------------------------------------------------|
|openssl-0.9.6       |RedHat distribution                                      |
+------------------------------------------------------------------------------+

Red Hat 8.0

   Requirements are pretty much the same as for RH 7.x. Here is the list of
   packages that need to be installed:

   The following packages come with RedHat 8.0:

     * gdk-pixbuf-0.18.0-4
     * gdk-pixbuf-gnome-0.18.0-4
     * bind-utils-9.2.1-9
     * bind-9.2.1-9
     * net-snmp-5.0.1-6
     * net-snmp-utils-5.0.1-6
     * openssl-0.9.6b-29

   Unfortunately RedHat 8.0 does not come with libgtkmm and libsigc++ which
   are needed for fwbuilder. There are different ways you can get around this
   problem. You can recompile these two libraries yourself, using source rpm
   packages from earlier RedHat distribution. This can be done, but some
   tweaking of the source code is required. Sooner or later, RedHat and other
   vendors are going to start distributing pre-built binary RPMs of these
   libraries. Mandrake already does that; my experience shows that Mandrake's
   binary RPMs of these libraries work on RedHat 8.0. Another place where
   these binary RPM can be found is site http://freshrpms.net/.

   Mandrake packages can be found on on www.rpmfind.net:

     * libgtkmm1.2-1.2.9-3mdk.i586.rpm
     * libsigc++1.0-1.0.4-5mdk.i586.rpm

   On http://freshrpms.net/ look under Custom packages : RedHat 8.0 (Psyche),
   then browse down to gtkmm and libsigc++

Mandrake 8.1 and 8.2

   Requirements are very similar to those for Red Hat 7.2. If the system is
   configured as "Gnome Workstation" or Ximian Gnome is installed, the you
   don't need to add gtk+, gtkmm and libsigc++ packages. If you use KDE, you
   will need to add these packages though.

   Here is the list of recommended packages. All these packages come with
   standard Mandrake distribution, but you may need to install some of them
   by hand. What packages need to be installed depends on the configuration
   of OS. Some of these packages can be found on CD #1, while some others are
   on CD #2. Use can use rpmdrake to install these.

   +-----------------------+
   | libglib1.2-1.2.10     |
   |-----------------------|
   | libstdc++2.10-2.96    |
   |-----------------------|
   | libgtkmm1.2-1.2.8     |
   |-----------------------|
   | libgdk-pixbuf2-0.16.0 |
   |-----------------------|
   | libsigc++1.0-4.0.4    |
   |-----------------------|
   | libxml2-2.4.16        |
   |-----------------------|
   | libxslt1-1.0.12       |
   |-----------------------|
   | libxslt-proc-1.0.12   |
   |-----------------------|
   | libsnmp0-4.2.3        |
   |-----------------------|
   | ucd-snmp-utils-4.2.3  |
   |-----------------------|
   | libopenssl0-0.9.6c    |
   +-----------------------+

Mandrake 9.0

   Here is the list of packages you need to install to run pre-built binary
   packages on this distribution (all these packages come with Mandrake 9.0):

     * libgtkmm1.2-1.2.9-3mdk
     * libxml2-utils-2.4.23-4mdk
     * libxml2-2.4.23-4mdk
     * libxslt1-1.0.19-4mdk
     * libsigc++1.0-1.0.4-5mdk
     * ucd-snmp-4.2.3-4mdk
     * ucd-snmp-utils-4.2.3-4mdk
     * libsnmp0-4.2.3-4mdk
     * libopenssl0-0.9.6g-1mdk
     * openssl-0.9.6g-1mdk
     * libgdk-pixbuf-xlib2-0.18.0-3mdk.i586.rpm

   Another option is to download binary packages built by Mandrake. They
   follow our releases and add new packages to Cooker. You can find these
   packages on http://www.rpmfind.net/. Here is the procedure supplied by one
   of our users:

     * go to www.rpmfind.net and click on "Go directly to RPM database"
     * type 'fwbuilder' in search box and download newest one listed from
       Distribution "Mandrake" or "Mandrake Cooker"
     * type 'libfwbuilder3' and download the newest one from mandrake or
       mandrake cooker
     * type 'libfwbuilder3-devel' and download the one that matches the one
       d/l in part 3.
     * as root: "rpm -Uvh libfwbuilder3*.rpm fwbuilder*.rpm"

               How to build Firewall Builder from source tarball

Build environment

   First of all, you need to establish build environment. You will need to
   install the same libraries you would need to run our binary distribution,
   plus development packages of all the same libraries. That is, if you use
   RedHat or Mandrake, then you would need to install gtkmm-devel in addition
   to gtkmm RPM, libxml2-devel in addition to libxml2 and so on. See below
   for the list of packages for other OS and distributions.

   We tested with different versions of libxml2 and libxstl starting from
   libxml2-2.4.0 and libxslt-1.0.0, although we recommend using the latest
   which at the moment of writing this document are libxml2 2.4.19 and
   libxslt 1.0.15. Gnome ships with libxml-1.8 but you do not need to remove
   this one, just install libxml2 in addition, they do not conflict.

   You will also need relatively new resolver library (libresolv). I do not
   know how to determine version of libresolv itself since RedHat now ships
   it as part of glibc and glibc-devel package. You should be fine if you use
   any fresh distribution. If your glibc is 2.2 then your copy of libresolv
   is fine. RedHat 6.2 ships old resolver though, so unfortunately you can
   not build Firewall Builder with support for advanced DNS features on
   RedHat 6.2.

   Make sure you have both bind and bind-devel packages installed and it
   should be bind 8 or 9

   If you want to be able to use SNMP to collect some information about
   hosts/firewalls, you need to have ucd-snmp package installed. We tested
   with version 4.1.3 and newer. Home page: http://net-snmp.sourceforge.net/
   If snmp library is not installed on your system, then support for features
   requiring SNMP will be automatically disabled by configure script.

   If you would like to build online class reference for the API, then you
   need to install DOC++ package. Home page: http://docpp.sourceforge.net/.
   If it is not present no error message will be shown, but class reference
   will not be generated.

   Firewall Builder has been translated into several languages and uses GNU
   gettext to support internationalization. This means you will need this
   package on your system to build Firewall Builder. Some OS and
   distributions come with it by default, while others do not. See below for
   details.

   To build from source, download and unpack two tar.gz archives:
   libfwbuilder-N.N.N.tar.gz and fwbuilder-M.M.M.tar.gz. First you need to
   build and install libfwbuilder because fwbuilder depends on it. The build
   procedure is the same for both modules, so I'll describe it only once
   using libfwbuilder as an example.

   In order to build, you basically need to do the following:

 $ zcat libfwbuilder-0.10.8.tar.gz | tar xvf -
 $ cd libfwbuilder
 $ ./autogen.sh --prefix=/usr/local
 $ make
 $ su
 # make install

   Note that you should run script autogen.sh instead of configure, this
   script regenrates configure and number of other autoconf scripts using
   templates specific your OS and distribution.

   This installs the following files on your system (actual directory paths
   may differ on different OS and distributions and also depend on the value
   of parameter --prefix given to autogen.sh ):

     * libraries libfwbd, libfwbuilder, libfwcompiler in ${prefix}/lib
     * few documentation files in /usr/share/doc/libfwbuilder-${VERSION}
     * XML DTD file fwbuilder.dtd /usr/share/libfwbuilder/
     * autoupgrade scripts in /usr/share/libfwbuilder/migration

   Once you installed libfwbuilder, you can execute the same sequence of
   commands for fwbuilder. Module fwbuilder builds and installs the
   following:

     * GUI - executable file "fwbuilder", installed in ${prefix}/bin
     * few documentation files in /usr/share/doc/fwbuilder-${VERSION}
     * examples in /usr/share/doc/fwbuilder-${VERSION}/examples
     * various auxiliary files and scripts in /usr/share/fwbuilder
     * locale files in /usr/share/locale/
     * man pages in /usr/share/man/
     * icons in /usr/share/pixmaps/fwbuilder/
     * Policy compiler for iptables - file "fwb_ipt", installed in
       ${prefix}/bin
     * Policy compiler for pf - file "fwb_pf", installed in ${prefix}/bin
     * Policy compiler for ipfilter - file "fwb_ipf", installed in
       ${prefix}/bin

Packages that need to be installed on particular OS and distributions

  Red Hat 7.3

   Here is the list of recommended packages for RedHat 7.3 and where you can
   get them from:

+---------------------------------------------------------------------------------+
|gtkmm-1.2.8-1          |ftp://ftp.ximian.com/pub/ximian-gnome/redhat-73-i386/    |
|-----------------------+---------------------------------------------------------|
|gtkmm-devel-1.2.8-1    |ftp://ftp.ximian.com/pub/ximian-gnome/redhat-73-i386/    |
|-----------------------+---------------------------------------------------------|
|gdk-pixbuf-devel-0.16.0|Ximian Gnome or RedHat updates                           |
|-----------------------+---------------------------------------------------------|
|libsigc++-1.0.4-1      |ftp://ftp.ximian.com/pub/ximian-gnome/redhat-73-i386/    |
|-----------------------+---------------------------------------------------------|
|libsigc++-devel-1.0.4-1|RedHat 7.3 or http://www.hvrlab.org/pub/gtkmm/           |
|-----------------------+---------------------------------------------------------|
|libxml2-2.4.19         |RedHat 7.3 or                                            |
|                       |ftp://ftp.gnome.org/pub/GNOME/stable/redhat/i386/libxml/ |
|-----------------------+---------------------------------------------------------|
|libxml2-devel-2.4.19   |RedHat 7.3 or                                            |
|                       |ftp://ftp.gnome.org/pub/GNOME/stable/redhat/i386/libxml/ |
|-----------------------+---------------------------------------------------------|
|libxslt-1.0.15-1       |RedHat 7.3 or                                            |
|                       |ftp://ftp.gnome.org/pub/GNOME/stable/redhat/i386/libxslt/|
|-----------------------+---------------------------------------------------------|
|libxslt-devel-1.0.15-1 |RedHat 7.3 or                                            |
|                       |ftp://ftp.gnome.org/pub/GNOME/stable/redhat/i386/libxslt/|
|-----------------------+---------------------------------------------------------|
|doc++-3.4.8-1          |http://docpp.sourceforge.net/download.html               |
|-----------------------+---------------------------------------------------------|
|ucd-snmp-4.2.3         |RedHat distribution                                      |
|-----------------------+---------------------------------------------------------|
|ucd-snmp-devel-4.2.3   |RedHat distribution                                      |
|-----------------------+---------------------------------------------------------|
|ucd-snmp-utils-4.2.3   |RedHat distribution                                      |
|-----------------------+---------------------------------------------------------|
|openssl-0.9.6b         |RedHat distribution                                      |
|-----------------------+---------------------------------------------------------|
|openssl-devel-0.9.6b   |RedHat distribution                                      |
|-----------------------+---------------------------------------------------------|
|gettext-0.11.1 or newer|RedHat distribution                                      |
+---------------------------------------------------------------------------------+

  Red Hat 8.0

   Generally build environment is the same. Here is the list of packages you
   will need to build Firewall Builder on RH 8.0:

   These packages come with RH 8.0:

     * gdk-pixbuf-0.18.0-4
     * gdk-pixbuf-gnome-0.18.0-4
     * gdk-pixbuf-devel-0.18.0-4
     * bind-utils-9.2.1-9
     * bind-devel-9.2.1-9
     * bind-9.2.1-9
     * net-snmp-5.0.1-6
     * net-snmp-utils-5.0.1-6
     * net-snmp-devel-5.0.1-6
     * libxml2-2.4.23-1
     * libxml2-devel-2.4.23-1
     * libxslt-1.0.19-1
     * libxslt-devel-1.0.19-1

   get these on www.rpmfind.net:

     * libgtkmm1.2-1.2.9-3mdk.i586.rpm
     * libgtkmm1.2-devel-1.2.9-3mdk.i586.rpm
     * libsigc++1.0-1.0.4-5mdk.i586.rpm
     * libsigc++1.0-devel-1.0.4-5mdk.i586.rpm

  Mandrake 8.1 and 8.2

   Here is the list of recommended packages for Mandrake 8.1 and where you
   can get them from:

   +----------------------------------------------------------------------+
   |libglib1.2-1.2.10          |CD #1                                     |
   |---------------------------+------------------------------------------|
   |libglib1.2-devel-1.2.10    |CD #1                                     |
   |---------------------------+------------------------------------------|
   |libgtkmm1.2-1.2.8          |CD #1                                     |
   |---------------------------+------------------------------------------|
   |libgtkmm1.2-devel-1.2.8    |CD #2                                     |
   |---------------------------+------------------------------------------|
   |libgdk-pixbuf2-0.16.0      |CD #1                                     |
   |---------------------------+------------------------------------------|
   |libgdk-pixbuf2-devel-0.16.0|CD #2                                     |
   |---------------------------+------------------------------------------|
   |libsigc++1.0-1.0.4         |CD #2                                     |
   |---------------------------+------------------------------------------|
   |libsigc++1.0-devel-1.0.4   |CD #2                                     |
   |---------------------------+------------------------------------------|
   |libxml2-2.4.16             |CD #1                                     |
   |---------------------------+------------------------------------------|
   |libxml2-devel-2.4.16       |CD #2                                     |
   |---------------------------+------------------------------------------|
   |libxslt1-1.0.12            |CD #2                                     |
   |---------------------------+------------------------------------------|
   |libxslt1-devel-1.0.12      |CD #2                                     |
   |---------------------------+------------------------------------------|
   |libsnmp0-4.2.3             |CD #1                                     |
   |---------------------------+------------------------------------------|
   |libsnmp0-devel-4.2.3       |CD #3                                     |
   |---------------------------+------------------------------------------|
   |ucd-snmp-utils-4.2.3       |CD #1                                     |
   |---------------------------+------------------------------------------|
   |ucd-snmp-4.2.3             |CD #2                                     |
   |---------------------------+------------------------------------------|
   |libopenssl0-0.9.6c         |CD #1                                     |
   |---------------------------+------------------------------------------|
   |openssl-0.9.6c             |CD #1                                     |
   |---------------------------+------------------------------------------|
   |libopenssl0-devel-0.9.6c   |CD #2                                     |
   |---------------------------+------------------------------------------|
   |gettext-0.10.40            |CD #2                                     |
   |---------------------------+------------------------------------------|
   |doc++-3.4.8-1              |http://docpp.sourceforge.net/download.html|
   +----------------------------------------------------------------------+

   We use SGML DocBook to generate HTML version of FAQ, so if you want to
   regenerate it, you would need openjade and docbook-utils packages as well.
   These are part of Mandrake Cooker, or you can find them on rpmfind.net.

  Mandrake 9.0

   Again, just like in case of RH 8.0, basic requirements are the same and
   the only difference is in version numbers. Here is the list:

     * libgtkmm1.2-1.2.9-3mdk
     * libgtkmm1.2-devel-1.2.9-3mdk
     * libxml2-utils-2.4.23-4mdk
     * libxml2-devel-2.4.23-4mdk
     * libxml2-2.4.23-4mdk
     * libxslt1-1.0.19-4mdk
     * libxslt1-devel-1.0.19-4mdk
     * libsigc++1.0-1.0.4-5mdk
     * libsigc++1.0-devel-1.0.4-5mdk
     * ucd-snmp-4.2.3-4mdk
     * libsnmp0-devel-4.2.3-4mdk
     * ucd-snmp-utils-4.2.3-4mdk
     * libsnmp0-4.2.3-4mdk
     * libopenssl0-0.9.6g-1mdk
     * libopenssl0-devel-0.9.6g-1mdk
     * openssl-0.9.6g-1mdk
     * libnetpbm9-devel-9.24-4mdk.i586.rpm
     * libgdk-pixbuf2-devel-0.18.0-3mdk.i586.rpm
     * libgdk-pixbuf-xlib2-0.18.0-3mdk.i586.rpm

  Solaris 8:

   You need to install GNU development environment, in particular gcc version
   2.95.3 or newer, GNU ld which is part of binutils-2.11.2 , GNU make,
   autoconf, automake, libtool and GNU gettext. These packages can be
   downloaded from http://www.sunfreeware.com

   Here is the list of recommended packages. Precompiled xml2 and xslt
   libraries for Solaris 8 can be downloaded from this site:
   http://garypennington.net/libxml2/ The rest can be found either on
   http://www.unixrealm.com/downloads/ or on http://www.sunfreeware.com

   +------------------------------------------------------------------------+
   | autoconf-2.53     |                                                    |
   |-------------------+----------------------------------------------------|
   | automake-1.6      |                                                    |
   |-------------------+----------------------------------------------------|
   | libtool-1.4       |                                                    |
   |-------------------+----------------------------------------------------|
   | gettext-0.10.37   | GNU gettext                                        |
   |-------------------+----------------------------------------------------|
   |                   |                                                    |
   |-------------------+----------------------------------------------------|
   | gcc-2.95.3        |                                                    |
   |-------------------+----------------------------------------------------|
   | binutils-2.11.2   | Need this for GNU ld                               |
   |-------------------+----------------------------------------------------|
   | make-3.79.1       | GNU make                                           |
   |-------------------+----------------------------------------------------|
   |                   |                                                    |
   |-------------------+----------------------------------------------------|
   | glib-1.2.10       |                                                    |
   |-------------------+----------------------------------------------------|
   | gtk+-1.2.10       |                                                    |
   |-------------------+----------------------------------------------------|
   | gtkmm-1.2.8       |                                                    |
   |-------------------+----------------------------------------------------|
   | gdk-pixbuf-0.13.0 | See comment for libpng below                       |
   |-------------------+----------------------------------------------------|
   |                   | Do not use any other version; pre-built gdk-pixbuf |
   | libpng-1.0.6      | v0.13 found on SunFreeware.com requires            |
   |                   | specifically libpng 1.0.6                          |
   |-------------------+----------------------------------------------------|
   | libsigc++-1.0.4   |                                                    |
   |-------------------+----------------------------------------------------|
   | libxml2-2.4.16    |                                                    |
   |-------------------+----------------------------------------------------|
   | libxslt-1.0.12    |                                                    |
   |-------------------+----------------------------------------------------|
   | openssl-0.9.6c    | Try openssl_noshared-0.9.6c package if configure   |
   |                   | does not find openssl even though it is installed  |
   |-------------------+----------------------------------------------------|
   | ucdsnmp-4.2.3     |                                                    |
   |-------------------+----------------------------------------------------|
   | doc++-3.4.2       |                                                    |
   +------------------------------------------------------------------------+

   Certain patches are also critical. Make sure you have at least patch
   109326 which replaces some header files and libraries we use. It is a good
   idea to install all latest recommended patches anyway.

   Since all the packages downloaded from SunFreeware or Unixworld install in
   /usr/local, you need to set environment variables PATH to begin with
   "/usr/local/bin" and LD_LIBRARY_PATH to include /usr/local/lib before you
   run script configure.

  FreeBSD (tested on 4.5, 4.6 and now 4.7)

   We use lots of ports, which were updated with cvsup.

   Here is the list of ports that need to be installed before you can compile
   libfwbuilder and fwbuilder:

     * devel/autoconf
     * devel/automake
     * devel/libtool
     * devel/m4-1.4_1
     * devel/gettext
     * devel/glib12
     * devel/gmake-3.79.1
     * devel/libsigc++
     * lang/glibstdc++28
     * x11-toolkits/gtk12
     * x11-toolkits/gtk--
     * graphics/gdk-pixbuf
     * security/openssl
     * net/net-snmp
     * net/bind9
     * textproc/libxml2
     * textproc/libxslt
     * devel/doc++

   Make sure you use gmake to build and set the following environment
   variables:

 export GLIB_CONFIG=/usr/local/bin/glib12-config
 export LD_LIBRARY_PATH=/usr/local/lib

  OpenBSD 3.0 and 3.1

   You need the same packages as for FreeBSD and should be using gmake to
   build.

  GCC 3.2

   As of October 2002 (version 1.0.7) both libfwbuilder and fwbuilder compile
   and run just fine on systems based on gcc 3.2 (RedHat 8.0 and Mandrake
   9.0). Please note that the whole system, including all the libraries, must
   be compiled with the same compiler. This happens because gcc 3.x uses
   different name mangling algorithm for C++ code than previous versions of
   gcc; therefore it produces code that is incompatible with code compiled
   with previous versions of the compiler. For example, RedHat 8.0 does not
   ship libraries libsigc++ and libgtkmm which we use for the GUI. You either
   need to compile these libraries yourself, or use pre-built packages from
   MAndrake 9.0. Binary packages of these libraries built for RedHat 7.3
   won't work!
