69115a758f2d15218d8f063c0573c8c987177681
[gnupg.git] / INSTALL
1 Installation instructions for GnuPG
2 ====================================
3   Copyright 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
4
5   This file is free software; as a special exception the author gives
6   unlimited permission to copy and/or distribute it, with or without
7   modifications, as long as this notice is preserved.
8
9   This file is distributed in the hope that it will be useful, but
10   WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
11   implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12
13 Please read the Basic Installation section somewhere below.
14
15 Configure options for GNUPG
16 ===========================
17
18 --enable-static-rnd=<name>  Force the use of the random byte gathering
19                      module <name>.  Default is either to use /dev/random
20                      or the standard Uix module.  Value for name:
21                        egd - Use the module which accesses the
22                              Entropy Gathering Daemon. See the webpages
23                              for more information about it.
24                       unix - Use the standard Unix module which does not
25                              have a very good performance.
26                      linux - Use the module which accesses /dev/random.
27                              This is the first choice and the default one
28                              for GNU/Linux or *BSD.
29                       none - Do not linkl any module in but rely on
30                              a dynmically loaded modules.
31
32 --with-egd-socket=<name>  This is only used when EGD is used as random
33                      gatherer. GnuPG uses by default "~/.gnupg/entropy"
34                      as the socket to connect EGD.  Using this option the
35                      socket name can be changed.  You may use any filename
36                      here with 2 exceptions:  a filename starting with
37                      "~/" uses the socket in the homedirectory of the user
38                      and one starting with a "=" uses a socket in the
39                      GnuPG homedirectory which is bye default "~/.gnupg".
40    
41 --with-included-zlib Forces usage of the local zlib sources. Default is
42                      to use the (shared) library of the system.
43
44 --with-included-gettext Forces usage of the local gettext sources instead of
45                     the one provided by your system.
46
47 --disable-nls       Disable NLS support (See the file ABOUT-NLS)
48
49 --enable-m-guard    Enable the integrated malloc checking code. Please
50                     note that this feature does not work on all CPUs
51                     (e.g. SunOS 5.7 on UltraSparc-2) and might give
52                     you a Bus error.
53
54 --disable-dynload   If you have problems with dynamic loading, this option
55                     disables all dynamic loading stuff.
56
57 --disable-asm       Do not use assembler modules.  It is not possible to
58                     use this on some CPU types.
59
60
61
62 Problems
63 ========
64
65 If you get unresolved externals "gettext" you should run configure again
66 with the option "--with-included-gettext"; this is version 0.10.35 which
67 is available at alpha.gnu.org.
68
69 If you have other compile problems, try the configure options
70 "--with-included-zlib" or "--disable-nls" (See ABOUT-NLS)
71 or --disable-dynload.
72
73 I can't check all assembler files, so if you have problems assembling them
74 (or the program crashes) use --disable-asm with ./configure.
75 The configure scripts may consider several subdirectories to get all
76 available assembler files; be sure to delete the correct ones. The
77 assembler replacements are in C and in mpi/generic; never delete udiv-qrnnd.S
78 in any CPU directory, because there may be no C substitute.
79 Don't forget to delete "config.cache" and run "./config.status --recheck".
80
81 Some make tools are broken - the best solution is to use GNU's make.  Try
82 gmake or grab the sources from a GNU archive and install them.
83
84 On some OSF you may get unresolved externals.  This is a libtool problem and
85 the workaround is to manually remove all the "-lc -lz" but the last one from
86 the linker line and execute them manually.
87
88 On some architectures you get warnings like:
89   longlong.h:175: warning: function declaration isn't a prototype
90 or
91   http.c:647: warning: cast increases required alignment of target type
92 This doesn't matter and we know about it (actually it is due to the some
93 warning options which we have enabled for gcc)
94
95
96 Specific problems on some machines
97 ==================================
98
99   * IBM RS/6000 running AIX:
100
101         Due to a change in gcc (since version 2.8) the MPI stuff may
102         not build. In this case try to run configure using:
103             CFLAGS="-g -O2 -mcpu=powerpc" ./configure
104
105   * Compaq C V6.2 for alpha:
106
107         You may want to use the option "-msg-disable ptrmismatch1"
108         to get rid of the sign/unsigned char mismatch warnings.
109
110   * SVR4.2 (ESIX V4.2 cc)
111
112         Due to problems with the ESIX as, you probably want to do
113             CFLAGS="-O -K pentium" ./configure --disable-asm
114         Reported by Reinhard Wobst.
115
116
117
118 The Random Device
119 =================
120 Random devices are available in Linux, FreeBSD and OpenBSD.
121 The random device files may not exist on your system, please check whether
122 they do and create them if needed.
123
124 The Linux files should look like this:
125     cr--r--r--   1 root     sys        1,   8 May 28  1997 /dev/random
126     cr--r--r--   1 root     sys        1,   9 Feb 16 08:23 /dev/urandom
127 You can create them with:
128     mknod /dev/random c 1 8
129     mknod /dev/urandom c 1 9
130
131 The FreeBSD files [from the 970202 snapshot]:
132     crw-r--r--  1 root  wheel    2,   3 Feb 25 16:54 /dev/random
133     crw-r--r--  1 root  wheel    2,   4 Feb 25 16:54 /dev/urandom
134 You can create them with:
135     mknod /dev/random  c 2 3
136     mknod /dev/urandom c 2 4
137
138 Unices without a random devices must use another entropy collector.  One
139 entropy collector called rndunix and available as an extension module. You
140 should put this in your ~/.gnupg/options file:
141 ===8<====================
142 load-extension rndunix
143 ===>8====================
144 This collector works by running a lot of commands that yield more or
145 less unpredictable output and feds this as entropy into the random
146 generator - It should work reliably but you should check whether
147 it produces good output for your version of Unix. There are some debug
148 options to help you (see cipher/rndunix.c).
149
150
151
152 Installation
153 ============
154 gpg is not installed as suid:root; if you want to do that, do it manually.
155 We will use capabilities in the future.
156
157 The ~/.gnupg directory will be created if it does not exist.  Your first
158 action should be to create a key pair: "gpg --gen-key".
159
160 Due to limitations in the automake system, the Info format versions of
161 the man pages are not installed.  You have to convert the Texinfo
162 files by hand (use makeinfo) and copy them to the appropriate place.
163
164
165
166 Creating a RPM package
167 ======================
168 The file scripts/gnupg.spec is used to build a RPM package (both
169 binary and src):
170     1. copy the spec file into /usr/src/redhat/SPECS
171     2. copy the tar file into /usr/src/redhat/SOURCES
172     3. type: rpm -ba SPECS/gnupg.spec
173
174 Or use the -t (--tarbuild) option of rpm:
175     1. rpm -ta gnupg-x.x.x.tar.gz
176
177 The binary rpm file can now be found in /usr/src/redhat/RPMS, source
178 rpm in  /usr/src/redhat/SRPMS
179
180 Please note that to install gnupg binary rpm you must be root, as
181 gnupg needs to be suid root, at least on Linux machines
182
183
184 Basic Installation
185 ==================
186
187    These are generic installation instructions.
188
189    The `configure' shell script attempts to guess correct values for
190 various system-dependent variables used during compilation.  It uses
191 those values to create a `Makefile' in each directory of the package.
192 It may also create one or more `.h' files containing system-dependent
193 definitions.  Finally, it creates a shell script `config.status' that
194 you can run in the future to recreate the current configuration, a file
195 `config.cache' that saves the results of its tests to speed up
196 reconfiguring, and a file `config.log' containing compiler output
197 (useful mainly for debugging `configure').
198
199    If you need to do unusual things to compile the package, please try
200 to figure out how `configure' could check whether to do them, and mail
201 diffs or instructions to the address given in the `README' so they can
202 be considered for the next release.  If at some point `config.cache'
203 contains results you don't want to keep, you may remove or edit it.
204
205    The file `configure.in' is used by the program `autoconf' to create
206 `configure'.  You only need `configure.in' if you want to change it or
207 regenerate `configure' using a newer version of `autoconf'.
208
209 The simplest way to compile this package is:
210
211   1. `cd' to the directory containing the package's source code and type
212      `./configure' to configure the package for your system.  If you're
213      using `csh' on an old version of System V, you might need to type
214      `sh ./configure' instead to prevent `csh' from trying to execute
215      `configure' itself.
216
217      Running `configure' takes a while.  While running, it prints some
218      messages telling which features it is checking for.
219
220   2. Type `make' to compile the package.
221
222   3. Optionally, type `make check' to run any self-tests that come with
223      the package.
224
225   4. Type `make install' to install the programs and any data files and
226      documentation.
227
228   5. You can remove the program binaries and object files from the
229      source code directory by typing `make clean'.  To also remove the
230      files that `configure' created (so you can compile the package for
231      a different kind of computer), type `make distclean'.  There is
232      also a `make maintainer-clean' target, but that is intended mainly
233      for the package's developers.  If you use it, you may have to get
234      all sorts of other programs in order to regenerate files that came
235      with the distribution.
236
237 Compilers and Options
238 =====================
239
240    Some systems require unusual options for compilation or linking that
241 the `configure' script does not know about.  You can give `configure'
242 initial values for variables by setting them in the environment.  Using
243 a Bourne-compatible shell, you can do that on the command line like
244 this:
245      CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
246
247 Or, on systems that have the `env' program, you can do it like this:
248      env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
249
250 Compiling For Multiple Architectures
251 ====================================
252
253    You can compile the package for more than one kind of computer at
254 the same time by placing the object files for each architecture in
255 their own directory.  To do this, you must use a version of `make',
256 such as GNU `make', that supports the `VPATH' variable.  `cd' to the
257 directory where you want the object files and executables to go and
258 run the `configure' script; please use a relative filename name to
259 invoke `configure'.  `configure' automatically checks for the source
260 code in the directory that `configure' is in and in `..'.
261
262    If you have to use a `make' that does not supports the `VPATH'
263 variable, you have to compile the package for one architecture at a time
264 in the source code directory.  After you have installed the package for
265 one architecture, use `make distclean' before reconfiguring for another
266 architecture.
267
268 Installation Names
269 ==================
270
271    By default, `make install' will install the package's files in
272 `/usr/local/bin', `/usr/local/man', etc.  You can specify an
273 installation prefix other than `/usr/local' by giving `configure' the
274 option `--prefix=PATH'.
275
276    You can specify separate installation prefixes for
277 architecture-specific files and architecture-independent files.  If you
278 give `configure' the option `--exec-prefix=PATH', the package will use
279 PATH as the prefix for installing programs and libraries.
280 Documentation and other data files will still use the regular prefix.
281
282    In addition, if you use an unusual directory layout you can give
283 options like `--bindir=PATH' to specify different values for particular
284 kinds of files.  Run `configure --help' for a list of the directories
285 you can set and what kinds of files go in them.
286
287    If the package supports it, you can cause programs to be installed
288 with an extra prefix or suffix on their names by giving `configure' the
289 option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
290
291 Optional Features
292 =================
293
294    Some packages pay attention to `--enable-FEATURE' options to
295 `configure', where FEATURE indicates an optional part of the package.
296 They may also pay attention to `--with-PACKAGE' options, where PACKAGE
297 is something like `gnu-as' or `x' (for the X Window System).  The
298 `README' should mention any `--enable-' and `--with-' options that the
299 package recognizes.
300
301    For packages that use the X Window System, `configure' can usually
302 find the X include and library files automatically, but if it doesn't,
303 you can use the `configure' options `--x-includes=DIR' and
304 `--x-libraries=DIR' to specify their locations.
305
306 Specifying the System Type
307 ==========================
308
309    There may be some features `configure' can not figure out
310 automatically, but needs to determine by the type of host the package
311 will run on.  Usually `configure' can figure that out, but if it prints
312 a message saying it can not guess the host type, give it the
313 `--host=TYPE' option.  TYPE can either be a short name for the system
314 type, such as `sun4', or a canonical name with three fields:
315      CPU-COMPANY-SYSTEM
316
317 See the file `config.sub' for the possible values of each field.  If
318 `config.sub' isn't included in this package, then this package doesn't
319 need to know the host type.
320
321    If you are building compiler tools for cross-compiling, you can also
322 use the `--target=TYPE' option to select the type of system they will
323 produce code for and the `--build=TYPE' option to select the type of
324 system on which you are compiling the package.
325
326 Sharing Defaults
327 ================
328
329    If you want to set default values for `configure' scripts to share,
330 you can create a site shell script called `config.site' that gives
331 default values for variables like `CC', `cache_file', and `prefix'.
332 `configure' looks for `PREFIX/share/config.site' if it exists, then
333 `PREFIX/etc/config.site' if it exists.  Or, you can set the
334 `CONFIG_SITE' environment variable to the location of the site script.
335 A warning: not all `configure' scripts look for a site script.
336
337 Operation Controls
338 ==================
339
340    `configure' recognizes the following options to control how it
341 operates.
342
343 `--cache-file=FILE'
344      Use and save the results of the tests in FILE instead of
345      `./config.cache'.  Set FILE to `/dev/null' to disable caching, for
346      debugging `configure'.
347
348 `--help'
349      Print a summary of the options to `configure', and exit.
350
351 `--quiet'
352 `--silent'
353 `-q'
354      Do not print messages saying which checks are being made.  To
355      suppress all normal output, redirect it to `/dev/null' (any error
356      messages will still be shown).
357
358 `--srcdir=DIR'
359      Look for the package's source code in directory DIR.  Usually
360      `configure' can determine that directory automatically.
361
362 `--version'
363      Print the version of Autoconf used to generate the `configure'
364      script, and exit.
365
366 `configure' also accepts some other, not widely useful, options.
367