* certdump.c (print_dn_part): Always print a leading slash,
[gnupg.git] / INSTALL
diff --git a/INSTALL b/INSTALL
index 3520356..55a4c85 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -4,55 +4,84 @@ Please read the Basic Installation section somewhere below.
 Configure options for GNUPG
 ===========================
 
+--enable-static-rnd=<name>  Force the use of the random byte gathering
+                    module <name>.  Default is either to use /dev/random
+                    or the standard Uix module.  Value for name:
+                      egd - Use the module which accesses the
+                            Entropy Gathering Daemon. See the webpages
+                            for more information about it.
+                     unix - Use the standard Unix module which does not
+                            have a very good performance.
+                    linux - Use the module which accesses /dev/random.
+                            This is the first choice and the default one
+                            for GNU/Linux or *BSD.
+                     none - Do not linkl any module in but rely on
+                            a dynmically loaded modules.
+
 --with-included-zlib Forces usage of the local zlib sources. Default is
                     to use the (shared) library of the system.
 
---disable-nls      Disable NLS support (See ABOUT-NLS)
+--with-included-gettext Forces usage of the local gettext sources instead of
+                   the one provided by your system.
+
+--disable-nls      Disable NLS support (See the file ABOUT-NLS)
+
+--enable-m-guard    Enable the integrated malloc checking code.
+
+--disable-dynload   If you have problems with dynamic loading, this option
+                   disables all dynamic loading stuff.
 
---enable-m-debug    Compile with the integrated malloc debugging stuff.
-                   This makes the program slower but is checks every
-                   free operation and can be used to create statistics
-                   of memory usage. If this option is used the program
-                   option "--debug 32" displays every call to a a malloc
-                   function (this makes the program *really* slow), the
-                   option "--debug 128" displays a memory statistic after
-                   the program run.
+--disable-asm      Do not use assembler modules.  It is not possible to
+                   use this on some CPU types.
 
---disable-m-guard   Disable the integrated malloc checking code. As a
-                   side-effect, this removes all debugging code and uses
-                   the -O2 flag for all C files.
 
 
 Problems
 ========
 
-If you have compile problems, use the configure options "--with-zlib" and
-"--disable-nls" (See ABOUT-NLS).
+If you get unresolved externals "gettext" you should run configure again
+with the option "--with-included-gettext"; this is version 0.10.35 which
+is available at alpha.gnu.org.
 
-I cant check all assembler files; so if you have problems assembling them
-(or the program crashes), simply delete the files in the mpi/<cpu> directory.
+If you have other compile problems, try the configure options
+"--with-included-zlib" or "--disable-nls" (See ABOUT-NLS)
+or --disable-dynload.
+
+I can't check all assembler files, so if you have problems assembling them
+(or the program crashes) use --disable-asm with ./configure.
 The configure scripts may consider several subdirectories to get all
 available assembler files; be sure to delete the correct ones. The
 assembler replacements are in C and in mpi/generic; never delete udiv-qrnnd.S
-in any CPU directory, because there maybe no C substitute.
+in any CPU directory, because there may be no C substitute.
 Don't forget to delete "config.cache" and run "./config.status --recheck".
 
+Some make tools are broken - the best solution is to use GNU's make.  Try
+gmake or grab the sources from a GNU archive and install them.
+
+On some OSF you may get unresolved externals.  This is a libtool problem and
+the workaround is to manually remove all the "-lc -lz" but the last one from
+the linker line and execute them manually.
+
+On some architectures you get warnings like:
+  longlong.h:175: warning: function declaration isn't a prototype
+or
+  http.c:647: warning: cast increases required alignment of target type
+This doesn't matter and we know about it (actually it is due to the some
+warning options which we have enabled for gcc)
+
 
 The Random Device
 =================
-The current version of GNUPG needs the support of a random device.
-If there is no such device, it uses a very simple RNG, which does
-not generate strong random numbers.
 Random devices are available in Linux, FreeBSD and OpenBSD.
-The device files may not exist on your system, please check this
-and create them if needed.
+The random device files may not exist on your system, please check whether
+they do and create them if needed.
 
 The Linux files should look like this:
     cr--r--r--  1 root     sys        1,   8 May 28  1997 /dev/random
     cr--r--r--  1 root     sys        1,   9 Feb 16 08:23 /dev/urandom
 You can create them with:
     mknod /dev/random c 1 8
-    mknod /dev/random c 1 8
+    mknod /dev/urandom c 1 9
 
 The FreeBSD files [from the 970202 snapshot]:
     crw-r--r-- 1 root  wheel    2,   3 Feb 25 16:54 /dev/random
@@ -61,17 +90,48 @@ You can create them with:
     mknod /dev/random  c 2 3
     mknod /dev/urandom c 2 4
 
+Unices without a random devices must use another entropy collector.  One
+entropy collector called rndunix and available as an extension module. You
+should put this in your ~/.gnupg/options file:
+===8<====================
+load-extension rndunix
+===>8====================
+This collector works by running a lot of commands that yield more or
+less unpredictable output and feds this as entropy into the random
+generator - It should work reliably but you should check whether
+it produces good output for your version of Unix. There are some debug
+options to help you (see cipher/rndunix.c).
+
 
 
 Installation
 ============
-gpg is not installed as suid:root; if you want to do it, do it manually.
+gpg is not installed as suid:root; if you want to do that, do it manually.
+We will use capabilities in the future.
 
 The ~/.gnupg directory will be created if it does not exist.  Your first
 action should be to create a key pair: "gpg --gen-key".
 
 
 
+Creating a RPM package
+======================
+The file scripts/gnupg.spec is used to build a RPM package (both
+binary and src):
+    1. copy the spec file into /usr/src/redhat/SPECS
+    2. copy the tar file into /usr/src/redhat/SOURCES
+    3. type: rpm -ba SPECS/gnupg.spec
+
+Or use the -t (--tarbuild) option of rpm:
+    1. rpm -ta gnupg-x.x.x.tar.gz
+
+The binary rpm file can now be found in /usr/src/redhat/RPMS, source
+rpm in /usr/src/redhat/SRPMS
+
+Please note that to install gnupg binary rpm you must be root, as
+gnupg needs to be suid root, at least on Linux machines
+
+
 Basic Installation
 ==================
 
@@ -93,9 +153,9 @@ diffs or instructions to the address given in the `README' so they can
 be considered for the next release.  If at some point `config.cache'
 contains results you don't want to keep, you may remove or edit it.
 
-   The file `configure.in' is used to create `configure' by a program
-called `autoconf'.  You only need `configure.in' if you want to change
-it or regenerate `configure' using a newer version of `autoconf'.
+   The file `configure.in' is used by the program `autoconf' to create
+`configure'.  You only need `configure.in' if you want to change it or
+regenerate `configure' using a newer version of `autoconf'.
 
 The simplest way to compile this package is:
 
@@ -105,7 +165,7 @@ The simplest way to compile this package is:
      `sh ./configure' instead to prevent `csh' from trying to execute
      `configure' itself.
 
-     Running `configure' takes awhile.  While running, it prints some
+     Running `configure' takes a while.  While running, it prints some
      messages telling which features it is checking for.
 
   2. Type `make' to compile the package.
@@ -135,19 +195,19 @@ a Bourne-compatible shell, you can do that on the command line like
 this:
      CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
 
-Or on systems that have the `env' program, you can do it like this:
+Or, on systems that have the `env' program, you can do it like this:
      env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
 
 Compiling For Multiple Architectures
 ====================================
 
-   You can compile the package for more than one kind of computer at the
-same time, by placing the object files for each architecture in their
-own directory. To do this, 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
-the `configure' script.  `configure' automatically checks for the
-source code in the directory that `configure' is in and in `..'.
+   You can compile the package for more than one kind of computer at the same
+time by placing the object files for each architecture in their own
+directory.  To do this, you must use a version of `make', such as GNU `make',
+that supports the `VPATH' variable.  `cd' to the directory where you want the
+object files and executables to go and run the `configure' script.
+`configure' automatically checks for the source code in the directory that
+`configure' is in and in `..'.
 
    If you have to use a `make' that does not supports the `VPATH'
 variable, you have to compile the package for one architecture at a time