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


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  psupdate is no longer built by default.  Older systems may have trouble
     compiling if BFD_CAPABLE is defined.  Try ELF_CAPABLE or simply don't
     build psupdate -- ps doesn't need it if it can find System.map.
     In the Makefile, comment out the definition of BFD_CAPABLE and
     uncomment the definition of ELF_CAPABLE, or simply leave commented the
     mention of psupdate in the definition of SPROG
  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 on by default,
     so change the value of SHARED if you want.
  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. 
  o  You may need to change the INCDIRS definition if your system is
     not very standard.  The current definition has been tested to work
     on several different systems, though.

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 0.5 minutes on a Pentium-166 with SCSI
    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 and snice will set their scheduling priority to the most favorable
possible if they have root permissions.  See the skill documentation.


Miscellaneous Notes
===================

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.  As of ps 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!


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
