Clarify the GPL upgrades policy a bit, and propose an addition
[elinks/images.git] / INSTALL
blob36d35987f22e442dd832157253e173ff303dd1bf
1 Elinks installation guidelines
2 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4   Quick guide for the impatient:
6         ./configure && make && make install
8   Check out the bottom of this file if you're upgrading from Links or an older
9 ELinks! And be sure to look at doc/ecmascript.txt if you want ECMAScript
10 (that's JavaScript) support.
12 ##########
14   In order to check out the latest tree from CVS:
16 $ export CVSROOT=check_file_SITES_for_value_of_this
17 $ cvs login
18 (empty password)
19 $ cvs -z3 co elinks
20 $ cd elinks
21 ...
23   To update your existing tree to the latest CVS version, do:
25 $ cvs -z3 update -dP
27   If you downloaded a nightly snapshot, it already contains CVS/ directories
28 etc.  Thus, you should be able to update your tree with the above command as if
29 you had previously done a full cvs checkout.
31   Note that if you obtained the sources directly from CVS, you NEED to run
32 ./autogen.sh!  (It should be enough to do it once, automake should be smart
33 enough to rerun itself when needed - however, if you have build problems, try
34 running this first.)  Also, you obviously need automake and autoconf installed
35 on your system (note that autoconf-2.13 a automake-1.4p5 are supported, newer
36 ones may cause problems thanks to the auto* developers who don't know how to
37 maintain backwards compatibility).  Otherwise, you have to use the nightly CVS
38 snapshot - you don't need to do this there.
41 ##########
43   If you want to compile elinks, first check the directory named contrib/, it
44 may contain patches that are of use to you.  If you're interested in any of
45 them, try to apply them by doing (for each one):
47 $ patch -p0 < contrib/that-patch
49   They may not apply - I don't update patches in contrib/ regularly - if you
50 want, feel free to go ahead and update the patch for the current tree and send
51 me the newer version.
53   Usually, even after strip, the ELinks binary can grow a lot these days; I plan
54 on spawning various external files optionally, containing boring stuff like
55 various translations etc; later, even DSO modules may come, etc.  But even
56 nowadays, you can reduce the resulting binary size by throwing out stuff you
57 don't like.  First, if you want better performance and a smaller binary, don't
58 compile it with debug.  It won't hurt if you do, though, and ELinks will tell
59 you about any memory leaks, incorrect memory manipulation etc, which may be
60 helpful to us if you report it.  Next, disable any optional features you are not
61 going to use, they can make the resulting binary smaller (although it'll probably
62 have no non-marginal performance impact) - especially go through the
63 features.conf file in the project root directory.  Also, you may try to override
64 the build system to build a dynamically linked binary, which can be a lot
65 smaller as well.  Lastly, you can go to the Unicode/ and intl/ directories, then
66 edit index.txt and remove any codepages or translations you don't like;
67 especially for translations, it can significantly reduce the resulting binary
68 size as well.
70   !BEWARE!  If you _distribute_ a binary of ELinks with OpenSSL linked to it,
71 and the OpenSSL library is not part of your base system, you are VIOLATING THE
72 GPL (although I believe that for this absurd case no ELinks copyright holder
73 will sue you, and it's not a problem for the OpenSSL people as well, as they
74 have explicitly told me).  So, people who are making ELinks binaries for systems
75 with no OpenSSL in the base system and who decided to link OpenSSL against the
76 ELinks binary may wish NOT to publish or distribute such a binary, as it's
77 breaking GPL 2(b), if they like to have everything legally perfect (like Debian
78 people ;).  As a semi-solution to this for those people, GNUTLS support was
79 introduced; if you want to distribute ELinks binaries with HTTPS support,
80 compile ELinks with the --with-gnutls configure option (assuming that you have
81 GNUTLS 0.5.0 or later [tested with 0.5.4] installed).  However, as GNUTLS is not
82 yet 100% stable and its support in ELinks is not so well tested yet, it's
83 recommended for users to give a strong preference to OpenSSL whenever possible.
85   Good luck!
87   The basic compilation looks like:
89   Unix - just doing:
91          $ ./configure
92          $ make
94          should be enough.  However, in some FreeBSD 3 distributions you have to
95          set CFLAGS=-aout before running ./configure.  Also, you may want to
96          adjust some compile-time options through ./configure - do
97          ./configure --help and it'll print out a list of them. You can more
98          finely control what's going to be included in the binary in the
99          features.conf file, and some really detailed tuning can be performed in
100          the src/setup.h.
102          Also, a nice idea is to compile ELinks outside of the source tree.
103          Make another directory and run path_to_source_tree/configure from it.
104          Typically, it looks like:
106          $ mkdir ../elinks-build
107          $ cd ../elinks-build
108          $ ../elinks/configure
109          $ make
111   OS/2 - you can use ./configure.
113          The only supported compiler is EMX, you probably won't be able to
114          compile it with anything else.
116          Configure under OS/2 needs to know paths to gcc, make and bash.
117          Set (for example):
119          SET HOSTTYPE=i586
120          SET MACHTYPE=i586-pc-os2
121          SET CONFIG_SHELL=d:/prg/gnu/bin/bash.exe
122          SET CC=d:/prg/emx/bin/gcc.exe
123          SET MAKE=d:/prg/emx/bin/make.exe
124          SET EMXOPT=-h100
126   Dos, Windows - port it by yourself.
129 ##########
131   Ok, now let's install it:
133   Unix - # make install
135   OS/2 -
136         Copy file links.exe somewhere to your path or create CMD file that runs
137         links.
139          WARNING: EMX has a nasty limit on open files.  Links will work badly or
140          won't work with the default settings.  Set the variable EMXOPT=-h100
141          before you run links.
143   Now, check the contrib/ directory again.  There may be some useful config
144 file examples there, along with a few support tools and some Lua scripts - you
145 probably want them ;) so just copy the hooks.lua to ~/.elinks, and edit the
146 configuration part - it adds various functionality to ELinks, like
147 decompression of gzipped files or user-defined protocols.
150 ##########
152   If you're upgrading from Links or older ELinks (0.4pre7 or older), you will
153 notice that several things have changed.  First, the binary name is elinks, not
154 links, now; however, the basic usage is almost the same and it still looks like
155 the old (E)Links, so you probably want to make a links symlink pointing to
156 elinks.
158   Then, note that configuration files were moved from /etc to /etc/elinks and
159 from ~/.links to ~/.elinks, because the name and format of parts of them were
160 changed:
162   links.cfg became elinks.conf and you need to convert it with
163 contrib/conv/conf-links2elinks.pl; html.cfg was merged into elinks.conf
165   bookmarks are still bookmarks, but you need to convert it with
166 old_to_new_bookmarks.sh.
168   links.his became gotohist and the format is the same.
170   history became globhist and the format is the same.
172   cookies are still cookies, but you need to convert it with tr " " "\t"
175 ##########
177 $Id: INSTALL,v 1.29 2004/09/22 16:17:23 pasky Exp $
178 vim: textwidth=80