]> sjero.net Git - wget/blobdiff - INSTALL
Minor doc updates.
[wget] / INSTALL
diff --git a/INSTALL b/INSTALL
index 676deb873d044680e1a5860419bf828713141c6b..581ec11ba1127a18ee3dc06c129048614d95c186 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -1,21 +1,76 @@
-                                                                   -*- text -*-
-                       Installation Procedure
-
-0) Preparation
-
-To build and install GNU Wget, you need to unpack the archive (which
-you have presumably done, since you are reading this), and read on.
-Like most GNU utilities, Wget uses the GNU Autoconf mechanism for
-build and installation; those of you familiar with compiling GNU
-software will feel at home.
-
-1) Configuration
-
-To configure Wget, run the configure script provided with the
-distribution.  You may use all the standard arguments configure
-scripts take.  The most important ones are:
-
-  --help                  print help message
+                                                            -*- text -*-
+                  GNU Wget Installation Procedure
+                   ===============================
+
+0. Introduction
+---------------
+
+This document describes how to build Wget from source code on
+Unix-like systems.  If you want to install a precompiled Wget, this
+document is not for you -- refer to the documentation provided by the
+distributors instead.  If you already have Wget and want to learn how
+to use it, refer to Wget's Info documentation or man page which you
+should have received with your system.  If you are using Windows
+(except for Cygwin), read windows/README instead.  If you want to
+compile Wget from source code on a Unix-like system, read on.
+
+The preferred form of building Wget is to get a release archive and
+unpack it (which you have presumably done, since you are reading
+this).  If you have obtained the source code via the Mercurial
+repository, please follow the instructions in `README.checkout' before
+continuing, as the sources from the Mercurial repository do not include
+some files that are present in official distributions; these additional
+files must be generated first.
+
+1. Dependencies
+---------------
+
+To build Wget, your system must support a Unix-like command-line
+development environment, including the text-processing utilities (sh,
+grep, awk, sed, etc.) and a functional C compiler.  On some GNU/Linux
+systems, this means that you will need to install packages such as
+`gcc', `glibc-devel' (or `libc6-dev') and `make'.  Most systems come
+with these packages preinstalled, but it doesn't hurt to check.  If
+you have successfully compiled other software from source, you
+probably have them all.
+
+In addition to the C development environment, Wget can use a number of
+optional libraries to provide additional features, such as translated
+messages and support for "https" URLs.  The "external" dependencies
+include:
+
+  - OpenSSL -- for "https" URLs.
+  - GNU gettext -- for translated messages.
+  - GNU libidn -- for IDN/IRI support.
+  - GNU libiconv -- for IDN/IRI support (not needed on GNU).
+
+To be usable for building Wget, the listed libraries must be installed
+with their "development" header files.  On GNU/Linux systems this
+typically means installing the corredponsing "lib<name>-devel" or
+"lib<name>-dev" package along with the package with "lib<name>".
+
+2. Configuration
+----------------
+
+Before compiling Wget, you need to "configure" it using the
+`configure' script provided with the distribution.  Configuration
+serves two distinct purposes: it enables Wget's build system to
+inspect certain features of your operating system for more robust
+compilation, and it enables you to choose which features you want the
+resulting Wget to have.
+
+As is the case with most GNU software, Wget's configure script was
+generated with GNU Autoconf.  If you're not familiar with
+Autoconf-generated scripts, read on.
+
+The most straightforward way to configure Wget is by running the
+configure script without any arguments.  After running some
+compilation-related tests, it will create the Makefiles needed to
+build Wget.  However, you may wish to customize Wget's configuration
+by providing arguments to `configure'.  Wget's configure script
+accepts standard Autoconf arguments, the most important ones being:
+
+  --help                  display a help message and exit
 
   --prefix=PREFIX         install architecture-independent files in PREFIX
                           (/usr/local by default)
@@ -23,12 +78,22 @@ scripts take.  The most important ones are:
   --infodir=DIR           info documentation in DIR [PREFIX/info]
   --mandir=DIR            man documentation in DIR [PREFIX/man]
 
-  --build=BUILD           configure for building on BUILD [BUILD=HOST]
-  --host=HOST             configure for HOST [guessed]
-  --target=TARGET         configure for TARGET [TARGET=HOST]
+For example, if you are not root and want to install Wget in
+subdirectories of your home directory, you can use:
 
---enable and --with options recognized (mostly Wget-specific):
-  --with-ssl[=SSL_ROOT]   link with libssl [in SSL_ROOT/lib] for https: support
+    ./configure --prefix=$HOME
+
+In addition to the above generic options, Wget's configuration
+supports a number of options more or less specific to Wget.  Options
+beginning with "--disable", such as `--disable-opie' or
+`--disable-ntlm', allow you to turn off certain built-in functionality
+you don't need in order to reduce the size of the executable.  Options
+beginning with "--with" turning off autodetection and use of external
+software Wget can link with, such as the SSL libraries.  Recognized
+"--enable" and "--with" options include:
+
+  --without-ssl           disable SSL autodetection (used for https support)
+  --with-libssl-prefix=DIR search for libssl in DIR/lib
   --disable-opie          disable support for opie or s/key FTP login
   --disable-digest        disable support for HTTP digest authorization
   --disable-ntlm          disable support for HTTP NTLM authorization
@@ -36,53 +101,89 @@ scripts take.  The most important ones are:
   --disable-nls           do not use Native Language Support
   --disable-largefile     omit support for large files
   --disable-ipv6          disable IPv6 support
-
-So, if you want to configure Wget for installation in your home
-directory, you can type:
-
-    ./configure --prefix=$HOME
-
-You can customize many default settings by editing Makefile and
-config.h.  The program will work very well without your touching these
-files, but it is useful to have a look at things you can change there.
-
-If you have OpenSSL libraries installed in one of the default
-directories, such as /usr/local/lib or /usr/local/ssl/lib, you can
-simply `configure --with-ssl'.  If you have it installed elsewhere,
-you need to specify your alternate OpenSSL root directory.  For
-instance, if libcrypto.* and libssl.* are in /opt/openssl/lib, you
-need to `configure --with-ssl=/opt/openssl'.
-
-To configure Wget on Windows, read the instructions in
-`windows/README'. If this doesn't work for any reason, talk to the
-Windows developers listed there; I do not maintain the port.  That
-does not apply to the "Cygwin" environment, where Wget should compile
-out of the box as described here.
-
-2) Compilation
-
-To compile the program, type make and cross your fingers.  If you do
-not have an ANSI compiler, Wget will try to KNR-ize its sources "on
-the fly".  This should make GNU Wget compilable on almost any
-Unix-like system out there.
-
-After the compilation a ready to use `wget' executable should reside
-in the src directory.  I do not have any kind of test-suite as of this
-moment, but it should be easy enough to test whether the basic stuff
-works.
-
-3) Installation
+  --disable-rpath         do not hardcode runtime library paths
+  --disable-iri           disable IDN/IRIs support
+
+For the full list, see the output of `./configure --help'.
+
+You can inspect decisions made by configure by editing the generated
+Makefiles and the `src/config.h' include file.  The defaults should
+work without intervention, but if you know what you are doing, editing
+the generated files before compilation is fine -- they will not be
+regenerated until you run configure again.
+
+`configure' will try to find a compiler in your PATH, defaulting to
+`gcc', but falling back to `cc' if the former is unavailable.  This is
+a reasonable default on most Unix-like systems, but sometimes you
+might want to override it.  The compiler choice is overridden by
+setting the `CC' environment variable to the desired compiler file
+name.  For example, to force compilation with the Unix `cc' compiler,
+invoke configure like this:
+
+    ./configure CC=cc
+
+This assumes that `cc' is in your path -- if it is not, simply use
+CC=/path/to/cc instead.  Note that environment variables that affect
+configure can be set with the usual shell syntax `VAR=value ./configure'
+(assuming sh syntax), but can also be specified as arguments to
+configure, as shown above.  The latter method, while being specific to
+configure, works unmodified in all shells, and in addition allows
+configure to detect when that setting has been changed across
+invocations.
+
+Environment variables that affect `configure' include: CFLAGS for C
+compiler flags, CPPFLAGS for C preprocessor flags, LDFLAGS for linker
+flags, and LIBS for libraries.
+
+Barring the use of --without-* flags, configure will try to autodetect
+external libraries needed by Wget, currently only the OpenSSL
+libraries.  If they are installed in the system library directories or
+in the same prefix where you plan to install Wget, configure should be
+able to autodetect them.  If they are installed elsewhere, use the
+`--with-libNAME' option to specify the root directory under which
+libraries reside in the `lib/' subdirectory and the corresponding
+header files reside in the `include/' subdirectory.  For example, if
+the OpenSSL libraries are installed under the /usr/local/ssl prefix,
+use `--with-libssl=/usr/local/ssl'.
+
+Sometimes external libraries will be installed on the system, but the
+header files will be missing.  This often happens on GNU/Linux if you
+forget to install the "-devel" or "-dev" package that corresponds to
+the library and that is typically *not* installed by default.  In that
+case configure will not find the library and you will not be able to
+use the features provided by the library until you install the devel
+package and rerun configure.  If you believe you have the necessary
+headers, but configure still fails to detect the library, please
+report it as a bug.
+
+3. Compilation
+--------------
+
+To compile GNU Wget after it has been configured, simply type make.
+Wget requires a compiler and standard library compliant with the 1990
+ISO C standard, which includes the vast majority of compilation
+environments present on systems in use today.
+
+After the compilation a ready-to-use `wget' executable should reside
+in the src directory.  At this point there is no formal test suite for
+testing the binary, but it should be easy enough to test whether the
+basic functionality works.
+
+4. Installation
+---------------
 
 Use `make install' to install GNU Wget to directories specified to
-configure.  The standard prefix is "/usr/local/", which can be changed
-using the `--prefix' configure option.
+configure.  To install it in a system directory (which is the
+default), you will need to be root.  The standard prefix is
+"/usr/local/", which can be changed using the `--prefix' configure
+option.
 
 The installation process will copy the wget binary to $PREFIX/bin,
-install the wget.info* info pages to $PREFIX/info, the autogenerated
+install the wget.info* info pages to $PREFIX/info, the generated
 manual page (where available) wget.1 to $PREFIX/man/man1, and the
 default config file to $PREFIX/etc, unless a config file already
 exists there.  You can customize these directories either through the
 configuration process or making the necessary changes in the Makefile.
 
-To delete the files created by Wget installation, you can use make
-uninstall.
+To delete the files created by Wget installation, you can use `make
+uninstall'.