Lynx Installation Guide
This file describes how to compile and install Lynx. A description of Lynx
can be found in the README file. Lynx has been ported to UN*X, VMS, Win32
and 386DOS. The procedures for compiling these ports are quite divergent
and are detailed respectively in Sections II, III, IV and V. General
installation, problem solving and environment variables are covered in
Sections VI and VII. There is also a PROBLEMS file in the same directory
as INSTALLATION which contains advice for special problems people have
encountered, especially for particular machines and operating systems.
If you still have difficulties, send an e-mail message to the Lynx-Dev mailing
list (see the README file). Try to include information about your system,
the name and version of your compiler, which curses library you are using
and the compile-time errors. Be sure to say what version and image-number
of Lynx you are trying to build (alternately the top date of the CHANGES file).
If you don't understand what one of the defines means, try the README.defines
and *.announce files in the docs subdirectory. The docs/CHANGES* files record
the entire development history of Lynx and are an invaluable resource for
understanding how Lynx should perform.
First, you must configure Lynx for your system regardless of the port you use.
Follow the instructions given immediately below to configure for your system,
and then go to the respective section concerning the port you wish to compile.
I. General configuration instructions (all ports).
Step 1. Compile-time Variables.
There are a few variables that MUST be defined if Lynx is to build
and there are others you may want to change.
Lynx MUST be able to find lynx.cfg at start-up: using configure
(e.g. with UNIX or Cygwin), its location is best set with --sysconfdir ;
you can check in lynx_cfg.h after configure has run, if you wish.
otherwise, you can use LYNX_CFG_FILE in userdefs.h ,
environment variable LYNX_CFG or the -cfg command-line option.
If you are using configure, you need not make any changes in userdefs.h .
There are a few variables you can't define with configure --options
but can define in userdefs.h , e.g. numbering fields as well as links.
Many variables which can be defined with configure or userdefs.h
can also be defined in lynx.cfg or via the Options Menu.
Lynx implements Native Language Support. Read "ABOUT-NLS", if you want
to build an international version of Lynx or tailor status-line prompts,
messages and warnings to the requirements of your site.
Step 2. Run-time Variables.
Read lynx.cfg thoroughly, as many Lynx features and how to use them
are explained there, in some cases ONLY there. Set up local printers,
downloaders, assumed character set, key mapping and colors in lynx.cfg .
Also see the sample mime.types, mailcap and jumps files
in the samples subdirectory.
Step 3. Alternative Character Sets.
You may skip this, if you are not interested in special characters
and all local files or WWW pages you will view will use the ISO-8859-1
"ISO Latin 1" Western European character set.
If you will be running Lynx in an environment with different incompatible
character sets, configure CHARACTER_SET (the Display character set)
and ASSUME_LOCAL_CHARSET to work correctly before creating bookmark files
and other such items: read lynx.cfg for detailed instructions.
Additional character sets and their properties may be defined with tables
in the src/chrtrans directory: see the README.* files therein.
Step 4. News.
Set NNTPSERVER in lynx.cfg to your site's NNTP server
or set the environment variable externally. For posting to be enabled,
NEWS_POSTING must be TRUE in userdefs.h or lynx.cfg.
Also define LYNX_SIG_FILE in userdefs.h or lynx.cfg ,
so that it points to users' signature files for appending to messages.
Step 5. Anonymous Accounts *** VERY IMPORTANT!!!!! ***
If you are building Lynx for personal use only, you can skip this.
If you are setting up anonymous accounts to use Lynx captively,
i.e. making Web access publicly available to users who should not
be allowed any other type of access to your system,
you are STRONGLY advised to use the -anonymous command-line option:
if you do not use this option, users may be able to gain access
to all readable files on your machine!
Many implementations of telnetd allow passing of environment variables,
which might be used to modify the environment in anonymous accounts,
allowing mischief or damage by malicious users, so make sure the wrapper
uses the -cfg and -homepage switches to specify lynx.cfg and start-file,
rather than relying on variables LYNX_CFG, LYNX_CFG_FILE and WWW_HOME.
II. Compile instructions -- UNIX
1a. Auto-configure. The auto-configure script uses autoconf2.13 to generate a
Bourne shell script, configure, which creates "makefile" and "lynx_cfg.h".
If you are on a UNIX platform, the easiest way to build Lynx is to type:
./configure
and
make
NOTE: Configure has a number of useful options. Please see below.
NOTE: The 'configure' script generates auxiliary files "config.status"
"config.cache" and "config.log". Normally you will not notice these;
they are created automatically and removed by a "make distclean".
+ If you wish to rebuild Lynx with a new host, or change ANY of the
parameters which are stored in config.cache, you MUST first remove
the config.cache file before running configure; its options do NOT
override the settings in that file.
+ The config.status file is a script which creates (or regenerates)
the files created by the configure script.
Please report problems in the configure/make process by including a copy
of config.status, config.cache and config.log, as well as the pertinent
compiler diagnostics.
See the note in aclocal.m4 for special instructions if you must modify the
configure script.
NOTE: Lynx is a curses-based application, so you must have a curses
library available to link to. Native curses (on the system when it was
installed) are often broken, so you may get superior performance if you
have either "ncurses" ("ftp://invisible-island.net/ncurses") or "slang"
("ftp://space.mit.edu/pub/davis/slang"). If you install these libraries
in your home directory or a non-default location, you may need to set the
CPPFLAGS (full path to include files) and LIBS (full path to library files)
environment variables BEFORE running configure. See "1d. Environment".
Use the "--with-screen=ncurses" or "--with-screen=slang" option.
Note that while lynx will build with a variety of versions of curses and
ncurses, some will be less satisfactory. Versions of ncurses before
1.9.9g will not render color properly. Some other versions of curses do
not display color at all. Likewise, lynx may not build with old versions
of slang, e.g., before 0.99-38, because slang's interfaces change
periodically.
Note compiler/system specific problems below. See also:
http://invisible-island.net/ncurses/ncurses.faq.html
1b. Platforms. Configure should work properly on any Unix-style system.
It has been tested on the following platforms.
AIX 3.2.5 (cc w/ curses) BeOS 4.5 (gcc w/ ncurses)
CLIX (cc w/ curses & ncurses) DGUX
Digital Unix 3.2C and 4.0 (gcc & cc w/ curses, ncurses & slang)
FreeBSD 2.1.5, 3.1 (gcc 2.6.3 w/ curses & ncurses)
HP-UX (K&R and ANSI cc, gcc w/ curses, ncurses & slang)
IRIX 5.2 and 6.2 (cc & gcc w/ curses, ncurses & slang)
Linux 2.0.0 (gcc 2.7.2 w/ curses, ncurses & slang)
MkLinux 2.1.5 (gcc 2.7.2.1) NetBSD
NEXTSTEP 3.3 (gcc 2.7.2.3 w/ curses)
OS/2 EMX 0.9c (ncurses) SCO OpenServer (cc w/ curses)
Solaris 2.5, 2.6 & 2.7 (cc & gcc w/ curses, ncurses & slang)
SunOS 4.1 (cc w/ curses, gcc w/ ncurses & slang)
OS390 and BS2000.
NOTE: SunOS and HP-UX come with a bundled K&R compiler, which is only
useful for compiling with the bundled curses. Both ncurses and slang
require a compiler that recognizes prototypes.
1c. Options
To get a list of the configure script's options, type "./configure --help".
Below is an alphabetical listing of the Lynx-specific options. The actual
order shown by the -help option is different. See "docs/README.defines"
for information on defines for which there are no option switches.
--datadir
Defines the location where you want the documentation files installed.
The configure script constructs makefile actions to install lynx.cfg
modified to reflect this in the HELPFILE setting. (For platforms which
do not support a configure script, such as MS-DOS, Win32 and VMS, you
must edit lynx.cfg).
--disable-alt-bindings (prevent defining EXP_ALT_BINDINGS)
Compiles-in an alternative set of line-edit bindings, in addition
to the default bindings.
--disable-bibp-urls (define DISABLE_BIBP)
Disable (do not compile code) support for bibp: URLs.
--disable-color-style (define USE_COLOR_STYLE)
Use this option to disable optional color style. This is implemented
for modern curses implementations, e.g., those that support color.
Before lynx 2.8.6dev.18, this option was disabled by default.
You can achieve a similar color effect to match the non-color-style
(but still allowing users to use color-style) by using the
--without-lss-file option.
--disable-config-info (define NO_CONFIG_INFO)
Use this option to disable extended browsable configuration information
(a screen that shows the result of the configuration script, as well
as extended lynx.cfg viewing with a pointer to the lynx.cfg file and
additional functionality).
--disable-dired (prevent defining DIRED_SUPPORT)
Use this option to disable the optional directory-editor.
Lynx supports directory editing (DirEd) for local directories.
This allows users to do things like view, copy and remove files
using a tabular display of the directory and single-keystroke
commands instead of using the command line. From inside Lynx, the
keystroke sequence "g." switches Lynx to DirEd mode on the
current directory. If you're building a Lynx that is to be used as
a kind of restricted shell for users who do not have access to the
command line and should not have access to equivalent capabilities,
you probably want to disable DirEd with this option. You can also
disable some DirEd functions while allowing others. If you have
disabled DirEd completely, you can ignore all the more specific
DirEd options.
All DirEd menu functions that were enabled on compilation can be
disabled or modified at run time via DIRED_MENU symbols in lynx.cfg.
--disable-dired-dearchive (define ARCHIVE_ONLY)
Use this option to prevent DirEd from extracting files from an
archive file.
--disable-dired-gzip (prevent defining OK_GZIP)
Use this option to prevent DirEd from using gzip and gunzip.
--disable-dired-override (prevent defining OK_OVERRIDE)
Normally, in DirEd directory viewing mode some key mappings are
overridden. Use this option to disable DirEd keymap overriding.
--disable-dired-permit (prevent defining OK_PERMIT)
Use this option to prevent DirEd from changing the permissions
on directories or files (i.e., from doing what the Unix chmod
command or the DOS attrib command does).
--disable-dired-tar (prevent defining OK_TAR)
Use this option to prevent DirEd from using the tar program.
--disable-dired-uudecode (prevent defining OK_UUDECODE)
Use this option to prevent DirEd from using uudecode.
--disable-dired-xpermit (define NO_CHANGE_EXECUTE_PERMS)
Use this option if you do not disable out the dired-permit
option, but want to restrict changes of the eXecute permission
to directories (i.e., not allow it to be changed for files). If
you don't do this, you can still block changes of the eXecute
permission for files but not directories via the
"change_exec_perms" command line restriction.
--disable-dired-zip (prevent defining OK_ZIP)
Use this option to prevent DirEd from using zip and unzip.
--disable-echo
Use this option to suppress the "compiling" commands during a build.
Doing this makes it easier to find and read warning messages.
--disable-extended-dtd (define NO_EXTENDED_HTMLDTD)
disable extended HTML DTD logic. This should revert to old-style
(2.7.1/2.7.2) behavior, but is not well-tested.
--disable-file-upload (define USE_FILE_UPLOAD)
Compile-in support for form-based file-upload.
--disable-finger (define DISABLE_FINGER)
Do not compile-in code used to connect to "finger" URLs.
--disable-forms-options (define NO_OPTION_FORMS)
Disable the Form-based Options Menu (see --disable-menu-options).
The default is to compile key-based & form-based Options Menu code,
allowing users the final choice via FORMS_OPTIONS in lynx.cfg
or the -forms_options command-line switch.
--disable-ftp (define DISABLE_FTP)
Do not compile-in code used to connect to FTP servers.
--disable-full-paths
Use this option to control whether full pathnames are compiled in for
various utilities invoked by lynx as external commands. By default,
full pathnames are compiled in for the the locations where configure
finds these commands at configure time. Affected commands are chmod,
compress, cp, gzip, install, mkdir, mv, rm, tar, touch, gunzip, unzip,
bzip2, uudecode, zcat, zip, telnet, tn3270, rlogin. (Not all of them
are used on all systems or in all configurations.)
This option makes Lynx simpler to install, but potentially less secure,
since the commands are then set in the user's $PATH. All of these
commands may also be overridden individually by setting environment
variables before configuring. For example, you can disable the telnet
command by doing this:
setenv TELNET /bin/false
--disable-gopher (define DISABLE_GOPHER)
Do not compile-in code used to connect to GOPHER servers.
--disable-included-msgs
Do not use included messages, for i18n support. If NLS support is
requested, the configure script will otherwise use the messages in the
./po subdirectory.
--disable-justify-elts (define EXP_JUSTIFY_ELTS)
Do not use element-justification logic.
--disable-largefile (prevent defining LONG_LIST)
Use this option to disable the compiler and linker options that
provide largefile interfaces.
--disable-long-list (prevent defining LONG_LIST)
Use this option to disable long "ls -l" directory listings (when
enabled, the actual directory style is configurable from lynx.cfg).
--disable-menu-options (define NO_OPTION_MENU)
Disable the Key-based Options Menu.
See --disable-forms-options (above) for further details.
--disable-news (define DISABLE_NEWS)
Do not compile-in code used to connect to NNTP (netnews) servers.
--disable-parent-dir-refs (define NO_PARENT_DIR_REFERENCE)
Use this option to disable "Up-to" parent-links in directory listings.
--disable-partial (prevent defining DISP_PARTIAL)
Turn off code that lets Lynx display parts of a long page while loading
it.
--disable-persistent-cookies (prevent defining USE_PERSISTENT_COOKIES)
Use this option to tell configure whether to compile-in support for
saving cookies to a file, for subsequent reuse. Persistent cookie
support will use (or create) the file specified by the 'COOKIE_FILE'
option, or default to ".lynx_cookies" in the home directory.
(Currently there is no protection against conflict if several lynx
sessions are active from the same account).
--disable-prettysrc (define USE_PRETTYSRC)
Use this option to compile-in support for colorizing the source view of
HTML pages. If compiled-in, new source view mode is available with
-prettysrc command line option.
--disable-read-eta (define USE_READPROGRESS)
Enhance the read-progress message to show ETA (estimated time to
completion), as well as the amount of time stalled without any data
transferred.
--disable-source-cache (define USE_SOURCE_CACHE)
Use this option to compile-in support for caching HTML pages locally,
in files or in memory. Configurable from lynx.cfg
--disable-trace (define NO_LYNX_TRACE)
Turn off code that lets you trace internal details of Lynx's operation.
We recommend that you leave this enabled, since we need this
information to diagnose problems with either Lynx or the sites to which
you connect.
--enable-addrlist-page (define EXP_ADDRLIST_PAGE)
Compiles-in an alternative list-page, bound to 'A' rather than 'l',
which always lists URLs rather than titles.
--enable-ascii-ctypes (define EXP_ASCII_CTYPES)
Compiles-in alternative case-conversion functions which ensure that
configuration names, etc., are compared in POSIX locale. This is
important for operating in some locale such as Turkish.
--enable-cgi-links (define LYNXCGI_LINKS)
Allows lynx to access a cgi script directly without the need for
a http daemon.
--enable-change-exec (define ENABLE_OPTS_CHANGE_EXEC)
Allow users to change the execution status within the options screen.
See EXEC_LINKS and EXEC_SCRIPTS.
--enable-charset-choice (define EXP_CHARSET_CHOICE)
Add logic for ASSUMED_DOC_CHARSET_CHOICE and DISPLAY_CHARSET_CHOICE in
lynx.cfg, allowing user to configure a subset of the compiled-in
charsets for normal use.
--enable-cjk (define CJK_EX)
Add experimental logic for supporting CJK documents. (This is not
necessary for CJK support and may go away in a future release.)
--enable-debug (The symbol DEBUG is always defined.)
Use this option to compile-in support for debugging.
Note that this flag is ignored if the CFLAGS environment
variable is set, in that case "-g" (or whatever) has to
be included in the CFLAGS value to get debugging.
Autoconf normally adds -g and -O options to CFLAGS if CFLAGS
was not set, and if the compiler supports those options.
--enable-default-colors (define USE_DEFAULT_COLORS)
Enable use of default-color background (ncurses/slang). Either
configuration supports the use of 'default' for colors even without
this option. That is, 'default' is interpreted as white (foreground)
or black (background) according to the context. When the default
colors configuration is built, the actual values for foreground and
background colors are determined by the terminal.
--enable-exec-links (define EXEC_LINKS)
Allows lynx to execute programs by accessing a link.
--enable-exec-scripts (define EXEC_SCRIPTS)
Allows lynx to execute programs inferred from a link.
--enable-externs (define USE_EXTERNALS)
Use this option to enable external application support. (See lynx.cfg.)
--enable-find-leaks (define LY_FIND_LEAKS)
Use this option to compile-in logic for testing memory leaks.
--enable-font-switch (define EXP_CHARTRANS_AUTOSWITCH)
Allow Lynx to automatically change the Linux console state (switch
fonts) according to the current Display Character Set. (Linux console
only. *Use with discretion.* See docs/README.chartrans.)
--enable-gnutls-compat (define USE_GNUTLS_FUNCS)
When --with-gnutls is used, tell whether to use GNUTLS's OpenSSL
compatibility library or use GNUTLS's low-level API directly.
--enable-gzip-help
Install the lynx help files in gzip'd format [*.gz] to save space.
--enable-htmlized-cfg
generate an HTMLized copy of lynx.cfg which will be installed with
the other help files.
--enable-internal-links (prevent defining DONT_TRACK_INTERNAL_LINKS)
With `internal links' (links within a document to a location within
the same document) enabled, Lynx will distinguish between, for example,
`' and `' within a document whose
URL is `foo'. It may handle such links differently, although practical
differences would appear only if the document containing them resulted
from a POST request or had a no-cache flag set. This feature attempts
to interpret URL-references as suggested by RFC 2396, and to prevent
mistaken resubmissions of form content with the POST method. An
alternate opinion asserts that the feature could actually result in
inappropriate resubmission of form content.
--enable-ipv6 (define ENABLE_IPV6)
use IPV6 (with IPV4) logic.
--enable-japanese-utf8 (define EXP_JAPANESEUTF8_SUPPORT)
use experimental Japanese UTF-8 logic.
--enable-kbd-layout (define EXP_KEYBOARD_LAYOUT)
Disabled by default, this option allows you to use translation
tables on the input keystrokes. Current tables include
ROT13'd keyboard layout
JCUKEN Cyrillic, for AT 101-key kbd
YAWERTY Cyrillic, for DEC LK201 kbd
--enable-local-docs
On install, modify link from help-page to point to the local
doc-directory, e.g., with README files. Normally this points
to the current release directory.
--enable-locale-charset (define USE_LOCALE_CHARSET)
Use nl_langinfo(CODESET) to determine initial value for display
charset, overrides character_set value in .lynxrc file.
--enable-nested-tables
Extends TRST to format nested tables, as well as be smarter about
and