Go to the previous, next section.

Installation

Basic Installation

Here are the steps that you will need to take in order to install GNU Finger.

  1. Pick a machine which will be the local finger server for your network. Create a `clients' file, and install it in `/usr/local/etc/fingerdir' (or the EtcDir as specified in `config.h'). Put the names of all hosts that should report to the finger server in this file. Don't forget to include the finger server itself.

  2. For each client (the designated server is also a client), do the following,

  3. Change your working directory to be the top of the GNU Finger sources. For instance, if you have placed the source in `/src/gnu/finger' you would type `cd /src/gnu/finger'.

  4. In the source directory, type `make clean' and `./configure' if this host is different from the previous one. If you're using csh on an old version of System V, you might need to type `sh ./configure' instead to prevent csh from trying to execute configure itself.

    The configure shell script attempts to guess correct values for various system-dependent variables used during compilation, and creates the Makefile(s) (one in each subdirectory of the source directory). In some packages it creates a C header file containing system-dependent definitions. It also creates a file `config.status' that you can run in the future to recreate the current configuration.

    Running configure takes a minute or two. While it is running, it prints some messages that tell what it is doing. If you don't want to see the messages, run configure with its standard output redirected to `/dev/null'; for example, `./configure >/dev/null'.

    To compile the package in a different directory from the one containing the source code, you must use a version of make that supports the VPATH variable, such as GNU make. `cd' to the directory where you want the object files and executables to go and run configure. configure automatically checks for the source code in the directory that configure is in and in `..'. If for some reason configure is not in the source code directory that you are configuring, then it will report that it can't find the source code. In that case, run configure with the option `--srcdir=DIR', where DIR is the directory that contains the source code.

    You can tell `configure' to figure out the configuration for your system, and record it in `config.status', without actually configuring the package (creating `Makefile' and perhaps a configuration header file). To do this, give configure the `--no-create' option. Later, you can run ./config.status to actually configure the package for a particular host. This option is useful mainly in `Makefile' rules for updating `config.status' and `Makefile'. You can also give `config.status' the `--recheck' option, which makes it re-run configure with the same arguments you used before. This is useful if you change configure.

    `configure' ignores any other arguments that you give it.

    If you want to install the GNU Finger configuration files somewhere other than `/usr/local/etc/fingerdir', then you should edit the files `./config.h' and `include/fingerpaths.h' now. You need to specify the alternate locations of where the configuration files will be kept. If you want to include the unsupported code for mugshots, then you should now also choose one of the face formats, as well as edit `lib/Makefile.in', `lib/site/Makefile.in', and `src/Makefile.in' to compile and link in the files necessary.

    If your system requires unusual options for compilation or linking that configure doesn't know about, you can give configure initial values for some variables by setting them in the environment. In Bourne-compatible shells, you can do that on the command line like this:

    CC='gcc -traditional' DEFS=-D_POSIX_SOURCE ./configure
    

    The `make' variables that you might want to override with environment variables when running configure are:

    (For these variables, any value given in the environment overrides the value that `configure' would choose:)

    CC
    C compiler program. Default is `cc', or `gcc' if `gcc' is in your search path.
    INSTALL
    Program to use to install files. Default is `install' if you have it, `cp' otherwise.

    (For these variables, any value given in the environment is added to the value that `configure' chooses:)

    DEFS
    Configuration options, in the form `-Dfoo -Dbar ...'
    LIBS
    Libraries to link with, in the form `-lfoo -lbar ...'

  5. To build and/or install the GNU Finger executables and standard targets, issue one of the following commands:

    `make server'
    To build and install all executables, plus install the finger-specific server configuration files. Use this if the host is the designated finger server.

    `make client'
    To build all executables, but install only those used by the non-server clients. Use this unless the host is the designated finger server.

    `make all'
    To build all executables, but perform no installation.

    The above commands build `lib/libfinger.a' and the main programs in `src': finger, in.fingerd, and in.cfingerd, as well as fingerd on the server. If you want to, you can override the `make' variables CFLAGS and LDFLAGS like this:

    make CFLAGS=-O2 LDFLAGS=-s
    

  6. Modify the system configuration so that the client has (refer to the system documentation for details on how to do this on a particular system):

  7. When you have performed the above steps for each client, log onto the designated GNU Finger server.

  8. Start the server daemon, fingerd. You should arrange to have fingerd started every time the server host is rebooted. For exact details on how to do this, please refer to the server host's system documentation.

  9. If you chose to include the mugshots option, now might be a good time to install the mugshots. But first, try getting a face from another site running GNU Finger! For example, you might try
    finger --face bfox@aurel.cns.caltech.edu
    

  10. Modify the files `x-.help' and `x-.site' in `/usr/local/etc/fingerdir/targets' for your site.

Now you're all set! You might like to read through the section on Configuration Files.

Configuration Files

This section describes the format of the GNU Finger configuration files.

The `clients' file

The `/usr/local/etc/fingerdir/clients' file contains a list of clients that the GNU Finger server fingerd is supposed to poll. You can edit this file and then send the finger server a SIGHUP to tell it that the configuration has changed. Each line in the file should be either the name of a host or a comment. The name can be preceded by @port, to tell the finger server to poll the particular host by using a port other than 2003. A comment is any line that starts with a hash sign (#). Below is a sample `clients' file:

# This file contains all GNU Finger clients on the gnu.ai.mit.edu
# network. Apple-gunkies is the GNU Finger server (see "serverhost").
apple-gunkies.gnu.ai.mit.edu

# Albert is the mail exchanger (see "mailhost").
albert.gnu.ai.mit.edu

# Spiff is a Sony, so port 2003 is already used for `mbanks'.
# Use port 2010 instead.
@2010 spiff.gnu.ai.mit.edu

churchy.gnu.ai.mit.edu
mole.gnu.ai.mit.edu
geech.gnu.ai.mit.edu
wookumz.gnu.ai.mit.edu
nutrimat.gnu.ai.mit.edu
kropotkin.gnu.ai.mit.edu
goldman.gnu.ai.mit.edu
hal.gnu.ai.mit.edu
wombat.gnu.ai.mit.edu

Although this sample `clients' file contains the fully qualified domain names of the hosts, it's usually enough to specify only the host name portion. Explicit IP addresses can be used too, but this is a practise strongly discouraged. Notice that the server is also in the clients file and has a in.cfingerd; this is necessary in order for the server to correctly poll itself.

The `serverhost' file

The `/usr/local/etc/fingerdir/serverhost' file holds the name of the GNU Finger server host; this is as the name implies, the host that the GNU Finger server fingerd runs on. Lines starting with a hash sign (#) are treated as comments. Below is a sample `serverhost' file:

# A-g does all the finger stuff
apple-gunkies.gnu.ai.mit.edu

The `mailhost' file

The `/usr/local/etc/fingerdir/mailhost' file holds the name of the mail exchanger host for the network. This host should know how to talk SMTP; this file should never hold the name of a host that can't. It's contacted to obtain mail forwarding information and to expand mailing lists if a `.forward' file can't be found in the user's home directory. GNU Finger always looks and reports on user `.forward' files regardless of whether `mailhost' exists or not. Any lines in this file that start with a hash sign (#) are treated as comments.

The `forwardhost' file

The `/usr/local/etc/fingerdir/forwardhost' file holds the name of the host to forward finger requests to when the current finger server can't find a matching user name or mail alias. No forwarding takes place if this file doesn't exist. Any lines that start with a hash sign (#) are treated as comments. This is a sample output of what it can look like when a request is forwarded:

% finger -l nosuchuser@gnu.ai.mit.edu
[No user nosuchuser@apple-gunkies.gnu.ai.mit.edu, forwarding
 request to life.ai.mit.edu]
Login name: nosuchuser			In real life: ???

The `ttylocs' file

The `/usr/local/etc/fingerdir/ttylocs' file holds explanations for the hosts or terminal lines that users have logged in from or through. Each client host has its own copy of this file. Each line consists of a host name followed by a description. The name and description are separated by one or more blanks or TABs.

spiff.gnu.ai.mit.edu            NE43 Hall
susie.gnu.ai.mit.edu            NE43 Sony 427 x8568
spike.gnu.ai.mit.edu            NE43 Sony 427 x8568
apple-gunkies.gnu.ai.mit.edu    NE43 427        
sugar-bombs.gnu.ai.mit.edu      Elsewhere
pogo.gnu.ai.mit.edu             NE43 447
albert.gnu.ai.mit.edu           Noisy Machine Room
128.52.46.42                    The salt mines
churchy.gnu.ai.mit.edu          NE43 426
mole.gnu.ai.mit.edu             NE43 430
geech.gnu.ai.mit.edu            NE43 426
wookumz.gnu.ai.mit.edu          NE43 427
calvin.gnu.ai.mit.edu           NE43
gnu.gnu.ai.mit.edu              NE43
kropotkin.gnu.ai.mit.edu        Total anarchy

Site Specific Functions

If you are interested in customizing GNU Finger's output, then the `lib/site' directory is the right place to start. If you would like to add new code for displaying faces, or have a particularly interesting "long" information output format, I would be glad to include it as unsupported code in the next release of GNU Finger. (I will direct correspondence regarding your code to you.) You can find other contributed code in `lib/site', most notably different user info formats and code to handle different bit map file formats. The only file supported in `lib/site' is `userinfo.c'.

Configuration Options

The following definitions in `config.h' control the behavior of GNU Finger:

SUPPORT_FINGERRC
Undefine to prevent users from writing `.fingerrc' scripts. Defined by default.

CHECK_OWNER_FINGERRC
Define to make sure `.fingerrc' is owned by the user in whose directory it's found.

CHECK_RDONLY_FINGERRC
Define to make sure `.fingerrc' isn't writable by anyone other than its owner.

FINGERRC_SHELL
The shell to use to execute `.fingerrc'. Undefine to use user's login shell.

DEFAULT_POLL_INTERVAL
Define to be the delay between polls, in seconds, unless an interval is explicitly given to fingerd with the `--interval' option.

BASENAME_IS_SERVICE
Undefine if you always want the finger client to use the `finger' service. Otherwise the service is deduced from the basename of the client. Defined by default.

INFO_IS_DEFAULT
Define if you prefer `finger --info' to be the default, undefine if you prefer `finger --brief' to be the default.

Go to the previous, next section.