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