
Debian package installation:
============================
GKrellM is in the Debian archives, you can install using apt-get:

  apt-get update
  apt-get install gkrellm



RedHat package installation:
============================
Fresh install:
  rpm -i gkrellm-X.Y.Z-1.i386.rpm
or, upgrade
  rpm -U gkrellm-X.Y.Z-1.i386.rpm



Installation from source:
=========================
First untar the tarball:
------------------------
  tar -xvjf gkrellm-X.Y.Z.tar.bz2
  cd gkrellm-X.Y.Z

Next compile and install GKrellM for your target system.
BSD systems need to use gmake (GNU make) instead of the BSD make.
See below for custom gkrellmd server installs and for installs
into specific directories.
--------------------------------------------------------

Linux
-----
  make
  make install


FreeBSD 2.x
-----------
  make freebsd2
  make install_freebsd


FreeBSD 3.x and 4.x or later
----------------------------
  make freebsd
  make install_freebsd


NetBSD 2.X, 3.X and later
---------------------------------
  make netbsd2
  make install_netbsd


NetBSD 1.5 - 1.6.X
---------------------------------
  make netbsd1
  make install_netbsd


OpenBSD
---------------------------------
  make openbsd
  make install_openbsd

Note: install_openbsd makes gkrellm setgid kmem so it can be run non-root, ie:
  chgrp kmem /usr/local/bin/gkrellm
  chmod g+sx /usr/local/bin/gkrellm


Solaris 2.x (8 tested so far)
-----------------------------
  make solaris
  make install_solaris

Note: install_solaris makes gkrellm setgid sys so it can be run non-root, ie:
  chgrp sys /usr/local/bin/gkrellm
  chmod g+s /usr/local/bin/gkrellm
  (see below for additional Solaris install notes)


Windows 2000/XP (Vista is untested)
-----------------------------
  make windows
  make INSTALLROOT=C:\gkrellm install_windows

Needed software for building gkrellm on win32 systems:
  - MinGW
  - MSYS (gkrellm Makefiles are NOT compatible with cmd.exe)
  - GTK >= 2.4 Development files (see http://www.gtk.org/download-windows.html)
  - OpenSSL (optional), GnuTLS is not recommended on win32
  - libntlm (optional)

Note: Installing gkrellm on windows needs INSTALLROOT set, the default path
      (/usr/local) probably won't work


BSD make Problems
-----------------
On BSD systems, errors like:
    "Makefile", line 21: Missing dependency operator
result from using BSD make.  You need to use gmake.

If you get the error:
    ld: invalid command option `-E'
re-run the make without any link flags, eg:
    gmake openbsd LINK_FLAGS=


==========================================================================
Customizing the install directory locations
-------------------------------------------
The default install is under the INSTALLROOT /usr/local, and this is the
default directory install tree:

/usr/local                        INSTALLROOT
          /bin/                    both gkrellm and gkrellmd
          /include/gkrellm2/       development include files
          /share/locale/XX/        LC_MESSAGES/gkrellm.mo (XX is cs, de, ...)
          /man/man1/               gkrellm.1 and gkrellmd.1
          /lib/pkgconfig/          gkrellm.pc

The INSTALLROOT and/or individual install directory locations may be changed.
For example, use INSTALLROOT to install everything under /usr:

    make install INSTALLROOT=/usr

For package maintainers convenience, INSTALLROOT may be constructed from
DESTDIR and PREFIX.  So if INSTALLROOT is not specified, you can then
set either or both of DESTDIR and PREFIX to construct your effective
INSTALLROOT.  For example, a /foo/usr INSTALLROOT would result from:

    make install DESTDIR=/foo PREFIX=/usr

For finer grained control of individual install directories, use INSTALLDIR
(for gkrellm), INCLUDEDIR, MANDIR (for gkrellm.1), LOCALEDIR, SINSTALLDIR
(for gkrellmd), and SMANDIR (for gkrellmd.1).  When a DIR variable is given,
INSTALLROOT is ignored for that directory and the complete directory path
must be given.

For example, this command installs under /usr for all except the gkrellmd
server which is put in /opt/sbin:

    make install INSTALLROOT=/usr SINSTALLDIR=/opt/sbin

The install of i18n translation files is additionally sensitive to the
environment variable LOCALEDIR if it set.  A command line LOCALEDIR takes
precedence over an environment variable LOCALEDIR. See the po/README file
for examples.  Also, the install of translation files may be omitted with:

    make install enable_nls=0


==========================================================================
Custom gkrellmd server installs:
--------------------------------
1) The default top level make will compile a gkrellmd server using glib2.
   However, a gkrellmd server using glib-1.2 can be compiled for systems
   without the glib2 version with:

      make glib12=1

2) If the target server has glib installed but no gtk or Xlibs, then gkrellmd
   may be built on the target server by working in the gkrellmd server
   directory:

      cd gkrellm-2.x.y/server

      make
   or
      make glib12=1

      make install

   If not on Linux, remember to specify a make target as for a top level
   make.  That is, use "make freebsd", etc and "make install_freebsd", etc.
   This installs gkrellmd into /usr/local/bin and gkrellmd.1 into
   /usr/local/share/man/man1, but if you want to install somewhere else,
   do for example:

      make SMANDIR=/usr/share/man/man1 SINSTALLDIR=/usr/bin install
or
      make INSTALLROOT=/usr install


==========================================================================
Other make flags:
-----------------
To compile a binary with debugging symbols (-g compiler option):

	make debug=1



============================================================================
Making a RPM package from the source tarball:
---------------------------------------------

Copy the gkrellm.spec file from inside the tarball to:

    /usr/src/RPM_DIR/SPECS

where you should substitute for "RPM_DIR" something like "redhat", "RPMS", or
whatever is appropriate for your distribution.
Make this "RPM_DIR" substitution in the steps below.
Also, it's possible some distributions will require an edit of the
gkrellm.spec "Requires" line.  For example, on Mandrake you may have
to change it to:
Requires:	gtk+2.0 >= 2.0, glib2 >= 2.0

If your rpm can't handle tar.bz2 files, you need to convert the source tarball
gkrellm-X.Y.Z.tar.bz2 into a gkrellm-X.Y.Z.tar.gz with an untar and tar.

Copy the gkrellm source tarball to:

    /usr/src/RPM_DIR/SOURCES

Then make the RPMs:

    cd /usr/src/RPM_DIR/SPECS
    rpm -ba --clean gkrellm.spec

Then you should have for a GKrellM version X.Y.Z the RPM packages:

    /usr/src/RPM_DIR/RPMS/$ARCH/gkrellm-X.Y.Z-1.rpm
    /usr/src/RPM_DIR/SRPMS/gkrellm-X.Y.Z-1.src.rpm




==========================================================================
==========================================================================
Solaris install notes:
----------------------
Tested to be built as 32bit application with gcc on UltraSPARC only.
It should work on both 32bit and 64bit kernel. The Solaris port currently
utilizes kvm to get a value for proc.n_forks. It imposes a few restrictions: 

1) gkrellm for Solaris should be setgid sys as mentioned above. 

2) On Solaris, 32bit binary of gkrellm cannot run on 64bit kernel while 
   maintaining its full functionality and vice versa. 

   a) It cannot acquire "number of forks" on a different data model of 
      the kernel image from its own origin (i.e. binary incompatibility 
      between 32bit and 64bit). This is caused by restriction of kvm just
      as mentioned above. For more details, refer to kvm_open(3kvm).
   b) Since a single driver called 'sd' takes control over both hard drives 
      and cdroms, "Disks" monitor includes not just i/o activity of hard 
      drives but of CDROM or CD-RW's. I don't like this, so a function 
      called isharddisk() is implemented in order to exclude i/o activity 
      of removable media. If you don't use "composite disk" for monitoring 
      and pick drives of your interest, this wouldn't bother you anyway.

   Failure of these functions is silently ignored and it proceeds without
   the failed functionalities. Separate executable should be built for each 
   data models (32bit and 64bit kernel) to enjoy full functionality 
   including ones described above. 

Functionalities not supported currently are: Battery, CPU/Motherboard 
sensor, Net Timer (PPP) and swap in/out chart.


==========================================================================
libgtop install notes:
----------------------
If you have libgtop (plus development libs) installed, you can make
a version that uses libgtop to read system data.   A libgtop version
will not have a disk, internet, or battery monitor because libgtop does not
report these stats.

--If you have gnome (plus libgnome-dev) and either libgtop 1.1.x or 1.0.x:
	make gnome-gtop
	make install

--If you have libgtop 1.1.x:
	make gtop
	make install

--If you have libgtop 1.0.x edit the top level Makefile to uncomment GTOP lines
	make gtop1.0
	make install
