INSTALL for procps version 0.99
===============================
Please read the NEWS and BUGS files, also.
==========================================

Installing without really compiling
===================================
To install all the distributed binaries in all the default locations without
re-compiling anything you may do the following in the distribution directory:
    su             # assuming you are not already root
    ./do_install
The do_install script is actually generated from mkinstall and the Makefiles,
so any changes in the Makefiles will carry over automagically.  See below
under compatiblity notes to decide if you can use these distributed binaries.

Re-compiling the package
========================
You want to examine the first 30 or so lines of the Makefile (up to the
configurability note). The destinations of various things attempt FSSTND
compliance, and are pretty standard.  The CC/LD flags and which libraries you
use for curses/termcap are here also.  It is all annotated there and in a
readily understood format: directories, program to installdir mapping,
sub-packages to build, and compilation options.  A few extra points worth
mentioning are:

  o  The SUBDIRS variable is essentially just a list of subdirectories to
     perform a recursive make or make install in.
  o  There is also an option to build and link against a libproc.so which
     reduces 'ps' and 'top' sizes by a large fraction.  It is off by default,
     so change the value of SHARED if you want it.
  o  'make libinstall' will install the library and header files into standard
     system directories for developers of /proc utilities.  There are no library
     man pages yet, but the headers are fairly well documented. 

Once you are satisfied with the top-level Makefile options (and possibly those
in subdirectories) you compile and install the package like so:
(ignore innocuous `rcsid' defined-but-not-used warnings.)

    make distclean # clean-out everything to re-make from scratch
    make           # takes about 2 minutes on a Pentium-90
    su             # for suid-root XConsole and write/chown-perms on sys dirs
    make install
    # ldconfig -v  # update ld.so to use new libproc if SHARED=1
    /bin/ps        # force creation/update of /etc/psdevtab from /dev
    exit
    make distclean # remove anything that can be rebuilt

SUID-ROOT programs
==================
XConsole is made suid root but it is pretty safe.  It doesn't accept input of
any kind, and only reads /proc/kmsg.  Indeed, reading /proc/kmsg is the only
reason why it is suid root.  Just don't run any other program which reads kmsg.

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! DON'T USE XCONSOLE IF YOU ARE USING ANY OTHER SYSLOG PACKAGE !!
!! THIS IS VITALLY IMPORTANT -- I WOULDN'T YELL OTHERWISE...    !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Skill or snice will set their scheduling priority to the most favorable possible
if they have root permissions.  See the skill documentation.

Micellaneous Notes
==================
COMPATIBILITY
    The binaries in this package may only work with kernel versions 1.[23].x and
    later.  They have really not been well tested on 0.x or 1.[01].x, systems.
    Furthermore the binaries distributed are ELF and were compiled against libc
    5.3.12 with gcc 2.7.2.  You will need to compile the package (very easy) if
    you don't have a minimal ELF setup (libc, ld.so, and a recent kernel and
    libc).  I use ncurses for my curses/termcap support and built these with
    ncurses 1.9.9e.

    In the unlikely event that you don't have `install' you can get it from the
    GNU `fileutil' package -- prep.ai.mit.edu:/pub/gnu/fileutils-3.12.tar.gz.

PS/TOP WCHAN FIELD
    In past releases, in order to get WCHAN output for ps, you had to have a
    psdatabase for each zImage kernel that you generated from the vmlinux
    unstripped binary with /sbin/psupdate.  You can still do this if you want,
    but as of 1.00 you can simply use the System.map automatically generated by
    Linus' makefile.  'ps' and 'top' will first use the contents of an
    environment variable "PS_SYSTEM_MAP" and then look for either System.map
    files or psdatabase files along the followin search path:
        /boot/System.map-V, /boot/System.map, /lib/modules/V/System.map,
        /boot/psdatabase, /boot/psdatabase-V, /lib/modules/V/psdatabase.
    Here 'V' is the output of "uname -r" and looks like "2.0.0".  Don't forget
    the dash!

W
    Another version of w, which doesn't always work right, is provided in w2.c.
    Use at your own risk.  It seems to work on systems where utmp is always
    maintained in perfect condition.

PARTIAL INSTALLATION
    If you just want to install one program use the targets install_progname and
    install_progname.X (where X is the man section) instead.  E.g.
        make install_ps install_ps.1
    Likewise for component packages, e.g.
        make install_psmisc
