$Id$

NOTE: this document applies to the Wireshark source releases and
buildbot source tarballs.  It does not apply to source code checked
out directly from Subversion, as files such as the configuration
script are not checked into Subversion, but need to be generated
from the autoconf and automake files.
See http://wiki.wireshark.org/Development if you would like to build
the source code checked out directly from Subversion.

Installation
============

These are installation instructions for Unix and Unix-like systems
that can run the "configure" script in this same directory. These
are not the installation instructions for Windows systems; see
README.windows for those instructions.

0. This is software.  Beware.

1. If you wish to build Wireshark, make sure you have GTK+ and GLib
   installed. Try running 'pkg-config glib-2.0 --modversion' to see if
   you have GLib 2.x installed and, if that fails, try running
   'glib-config --version' to see if you have GLib 1.2[.x] installed.
   Then try running 'pkg-config gtk+-2.0 --modversion' to see if you
   have GTK+ 2.x installed and, if that fails, try running
   'gtk-config --version' to see if you have GTK+ 1.2[.x] installed.
   Wireshark needs versions 1.2.0 or above of both these packages.
   If you need to install or re-install GTK+ or GLIB, you can find
   the packages at:

        http://www.gtk.org

   If you installed GTK+ from a binary package, you may have to
   install a "development" package; there may be separate "user's"
   and "developer's" packages, with the former not including
   header files and the like.  For example, Red Hat users will
   need to install a "gtk-devel" .rpm.

   Note also that Wireshark configuration defaults to using GTK+ and
   GLib 2.x; you need to configure with --disable-gtk2 to use GTK+
   1.2[.x].

   Please also note that GTK+ 1.2[.x] is only supported up to 
   Wireshark 1.0.x. From Wireshark 1.1.x onwards only GTK+ 2.x
   is supported.

2. If you wish to build TShark, the line-mode version of Wireshark,
   make sure you have GLIB installed.  See note #1 above for instructions
   on checking if you have GLIB installed. You can download GLIB from
   the same site as GTK.

3. If you want to capture packets, make sure you have libpcap
   installed.  The latest "official" version can be found at

        http://www.tcpdump.org .

   If you've downloaded the 0.5.2 version, make sure you install
   the headers ('make install-incl') when you install the library.
   The CVS snapshots will install the headers if you do 'make
   install', and have no 'install-incl' target.

   If you installed libpcap from a binary package, you may have to
   install a "development" package; for example, there's
   apparently a "libpcap0" Debian package, but it just includes a
   shared library, a copyright notice, changelog files, and a
   README file - you also need to install a "libpcap-dev" package
   to get header files, a non-shared library, and the man page.
   Similarly, Red Hat 5.x users will need to install a "libpcap-devel"
   .rpm to go along with the "libpcap" .rpm.

4. Building Wireshark requires Perl (specifically the pod2man program)
   so that the documentation can be built.

5. Run './configure' in the Wireshark distribution directory.
   Running './configure --help' displays a complete list of options.
   The file 'INSTALL.configure' contains general instructions for
   using 'configure' and 'make'. Some of the Wireshark non-generic
   configure options are as follows:

    --sysconfdir=DIR
        Wireshark installs a support file (manuf) in ${PREFIX}/etc by
        default, where ${PREFIX} comes from --prefix=DIR. If you do not
        specify any --prefix option, ${PREFIX} is "/usr/local".
        You can change the location of the manuf file with the --sysconfdir
        option.

    --disable-usr-local
        By default 'configure' will look in /usr/local/{include,lib} for
        additional header files and libraries. Using this switch keeps
        'configure' from looking there

    --disable-wireshark
        By default, if 'configure' finds the GTK+ libraries, the Makefile
        builds Wireshark, the GUI packet analyzer. You can disable the
        build of the GUI version of Wireshark with this switch.

    --disable-gtk2
        Build Glib/Gtk+ 1.2[.x]-based wireshark.
        Note: not supported from Wireshark 1.1.x onwards

    --disable-tshark
        By default the line-mode packet analyzer, TShark, is built.
        Use this switch to avoid building it.

    --disable-editcap
        By default the capture-file editing program is built.
        Use this switch to avoid building it.

     --disable-capinfos
        By default the capture-file statistics reporting pogram
        is built. Use this switch to avoid building it.

    --disable-mergecap
        By default the capture-file merging program is built.
        Use this switch to avoid building it.

    --disable-text2pcap
        By default the hex-dump-to-capture file conversion program
        is built. Use this switch to avoid building it.

    --disable-dftest
        By default the display-filter-compiler test program is built.
        Use this switch to avoid building it.

    --disable-randpkt
        By default the program which creates random packet-capture files
        is built. Use this switch to avoid building it.

    --disable-dumpcap
        By default the network traffic capture program is built.
        Use this switch to avoid building it.

    --disable-reordercap
        By default the capture-file reordering program is built.
        Use this switch to avoid building it.

    --disable-rawshark
        By default the program used to dump and analyze raw libpcap data
        is built. Use this switch to avoid building it.

    --disable-ipv6
        If 'configure' finds support for IPv6 name resolution on
        your system, the packet analyzers will make use of it.
        To avoid using IPv6 name resolution if you have the support for it,
        use this switch.

    --enable-setuid-install
        Wireshark and TShark rely on dumpcap for packet capture. Setting this
        flag installs dumpcap with setuid root permissions, which lets any user
        on the system capture live traffic. If this is not desired, you can
        restrict dumpcap's permissions so that only a single user or group can
        run it. This can be used in conjunction with --with-libcap described
        below.

        Running Wireshark or TShark as root is not recommended.

    --without-libcap
        By default, if 'configure' finds libcap (the POSIX capabilities
        library) dumpcap will be built so that if it is installed setuid
        root, it will attempt to retain CAP_NET_RAW and CAP_NET_ADMIN
        before dropping root privileges. Use this option to disable this
        behavior.

    --with-libcap=DIR
        Use this option to tell 'configure' where libcap is installed,
        if it is installed in a non-standard location. Note that libcap
        (the POSIX capabilities library, sans "p") and libpcap (the
        packet capture library, avec "p") are two very different things.

    --without-pcap
        If you choose to build a packet analyzer that can analyze
        capture files but cannot capture packets on its own, but you
        *do* have libpcap installed, or if you are trying to build
        Wireshark on a system that doesn't have libpcap installed (in
        which case you have no choice but to build a version that can
        analyze capture files but cannot capture packets on its own),
        use --without-pcap to avoid using libpcap.

    --with-pcap=DIR
        Use this to tell Wireshark where you have libpcap installed, if
        it is installed in a non-standard location.

    --without-zlib
        By default, if 'configure' finds zlib (a.k.a, libz), the
        wiretap library will be built so that it can read compressed
        capture files. If you have zlib but do not wish to build
        it into the wiretap library, used by Wireshark, TShark, and
        the capture-file utilities that come in this package, use
        this switch.

    --with-zlib=DIR
        Use this to tell Wireshark where you have zlib installed, if it
        is installed in a non-standard location.

    --without-plugins
        By default, if your system can support run-time loadable modules,
        the packet analyzers are build with support for plugins.
        Use this switch to build packet analyzers without plugin support.

    --with-plugins=DIR
        By default, plugins are installed in
        ${LIBDIR}/wireshark/plugins/${VERSION}

        ${LIBDIR} can be set with --libdir, or defaults to ${EPREFIX/lib}
        ${EPREFIX} can be set with --exec-prefix, or defaults to ${PREFIX}
        ${VERSION} is the Wireshark version.

        Use this switch to change the location where plugins
        are installed.

6. After running './configure', you will see a summary of some
   of the options you chose. Ensure that the summary reflects
   what you want. If it doesn't, re-run './configure' with new options.

7. Run 'make'.  Hopefully, you won't run into any problems.

8. Run './wireshark' or './tshark' or ./dumpcap, and make sure things are
   working. You must have root privileges in order to capture live data.

9. Run 'make install'.  If you're running a system that supports
   the Apt, RPM, OSX, or System V Release 4 packaging systems, you can
   run one of

        make debian-package	# Builds a binary package using dpkg
        make rpm-package	# Builds a binary package using rpm
        make srpm-package	# Builds a source package using rpm
        make svr4-package	# Builds a binary package using pkgmk
        make solaris-package	# Same as "make svr4-package"
        make osx-package	# Builds a binary package for OSX

   to make an installable package for your system.

If you have trouble with the build or installation process, you can
find assistance on the wireshark-users and wireshark-dev mailing lists.
See http://www.wireshark.org/lists/ for details.
