wolfSSL: Use LIBWOLFSSL_VERSION_HEX to decide whether or not to use WOLFSSL_X509_V_OK
[privoxy.git] / doc / source / buildsource.sgml
1 <!--
2  File        :  doc/source/buildsource.sgml
3
4  Purpose     :  Entity included in other project documents.
5
6  Copyright (C) 2001-2018 Privoxy Developers https://www.privoxy.org/
7  See LICENSE.
8
9  ======================================================================
10   This file used for inclusion with other documents only.
11  ======================================================================
12
13  If you make changes to this file, please verify the finished
14  docs all display as intended.
15
16  This file is included into:
17
18   user-manual
19   INSTALL
20
21 -->
22 <para>
23  To build <application>Privoxy</application> from source,
24  <ulink url="http://www.gnu.org/software/autoconf/autoconf.html">autoconf</ulink>,
25  <ulink url="http://www.gnu.org/software/make/make.html">GNU make (gmake)</ulink>,
26  and, of course, a C compiler like
27  <ulink url="http://www.gnu.org/software/gcc/gcc.html">gcc</ulink> are required.
28 </para>
29
30 <para>
31  When building from a source tarball,
32  first unpack the source:
33 </para>
34
35 <screen>
36 tar xzvf privoxy-&p-version;<![%p-not-stable;[-beta]]><![%p-stable;[-stable]]>-src.tar.gz
37 cd privoxy-&p-version;<![%p-not-stable;[-beta]]><![%p-stable;[-stable]]>
38 </screen>
39
40 <para>
41  To build the development version, you can get the source code by doing:
42 </para>
43
44 <screen>
45 cd &lt;root-dir>
46 git clone https://www.privoxy.org/git/privoxy.git
47 </screen>
48
49 <para>
50  This will create a directory named <filename>&lt;root-dir>/privoxy/</filename>,
51  which will contain the source tree.
52 </para>
53
54 <para>
55  Note that source code in Git is development quality, and may not be
56  stable or well tested.
57 </para>
58
59 <!-- para>
60  You can also check out any <application>Privoxy</application>
61  <quote>branch</quote>, just exchange the <application>current</application>
62  name with the wanted branch name (Example: v_3_0_branch for the 3.0 cvs
63  tree).
64 </para -->
65
66 <para>
67  It is strongly recommended to not run <application>Privoxy</application>
68  as root. You should configure/install/run <application>Privoxy</application> as
69  an unprivileged user, preferably by creating a <quote>privoxy</quote> user
70  and group just for this purpose. See your local documentation for the correct
71  command line to do add new users and groups (something like
72  <command>adduser</command>, but the command syntax may vary from platform
73  to platform).
74 </para>
75
76 <para>
77  <filename>/etc/passwd</filename> might then look like:
78 </para>
79
80 <screen>privoxy:*:7777:7777:privoxy proxy:/no/home:/no/shell</screen>
81
82 <para>
83  And then <filename>/etc/group</filename>, like:
84 </para>
85
86 <screen>privoxy:*:7777:</screen>
87
88 <para>
89  Some binary packages may do this for you.
90 </para>
91
92 <para>
93  Then, to build from either unpacked tarball or Git checkout:
94 </para>
95
96 <screen>
97 autoheader
98 autoconf
99 ./configure      # (--help to see options)
100 make             # (the make from GNU, sometimes called gmake)
101 su               # Possibly required
102 make -n install  # (to see where all the files will go)
103 make -s install  # (to really install, -s to silence output)
104 </screen>
105
106 <para>
107   Using GNU <command>make</command>, you can have the first four steps
108   automatically done for you by just typing:
109 </para>
110
111 <screen>
112 make
113 </screen>
114
115 <para>
116   in the freshly downloaded or unpacked source directory.
117 </para>
118
119 <para>
120  To build an executable with security enhanced features so that
121  users cannot easily bypass the proxy (e.g. <quote>Go There Anyway</quote>), or
122  alter their own configurations, <command>configure</command> like this:
123 </para>
124 <screen>
125 ./configure  --disable-toggle  --disable-editor  --disable-force
126 </screen>
127 <para>
128  Note that all of these options can also be disabled through the configuration file.
129 </para>
130 <para>
131  <emphasis>WARNING:</emphasis> If installing as root, the install will fail
132  unless a non-root user or group is specified, or a <literal>privoxy</literal>
133  user and group already exist on the system. If a non-root user is specified,
134  and no group, then the installation will try to also use a group of the same name
135  as <quote>user</quote>. If a group is specified (and no user), then the
136  support files will be installed as writable by that group, and owned by the
137  user running the installation.
138 </para>
139
140 <para>
141  <command>configure</command> accepts <literal>--with-user</literal> and
142  <literal>--with-group</literal> options for setting user and group ownership
143  of the configuration files (which need to be writable by the daemon). The
144  specified <emphasis>user must already exist</emphasis>. When starting
145  <application>Privoxy</application>, it must be run as this same user to
146  insure write access to configuration and log files!
147 </para>
148
149 <para>
150  Alternately, you can specify <literal>user</literal> and <literal>group</literal>
151  on the <command>make</command> command line, but be sure both already exist:
152 </para>
153
154 <screen>
155 make -s install  USER=privoxy GROUP=privoxy</screen>
156
157 <para>
158  The default installation path for <command>make install</command> is
159  <filename>/usr/local</filename>. This may of course be customized with
160  the various <command>./configure</command> path options. If you are doing
161  an install to anywhere besides <filename>/usr/local</filename>, be
162  sure to set the appropriate paths with the correct configure options
163  (<command>./configure --help</command>). Non-privileged users must of course
164  have write access permissions to wherever the target installation is going.
165 </para>
166
167 <para>
168  If you do install to <filename>/usr/local</filename>, the install will use
169  <literal>sysconfdir=$prefix/etc/privoxy</literal> by default. All other
170  destinations, and the direct usage of <literal>--sysconfdir</literal> flag
171  behave like normal, i.e. will not add the extra <filename>privoxy</filename>
172  directory. This is for a safer install, as there may already exist another
173  program that uses a file with the <quote>config</quote> name, and thus makes
174  <filename>/usr/local/etc</filename> cleaner.
175 </para>
176
177 <para>
178  If installing to <filename>/usr/local</filename>, the documentation will go
179  by default to <filename>$prefix/share/doc</filename>. But if this directory
180  doesn't exist, it will then try <filename>$prefix/doc</filename> and install
181  there before creating a new <filename>$prefix/share/doc</filename> just for
182  <application>Privoxy</application>.
183 </para>
184
185 <para>
186  Again, if the installs goes to <filename>/usr/local</filename>, the
187  <literal>localstatedir</literal> (ie: <filename>var/</filename>) will default
188  to <filename>/var</filename> instead of <literal>$prefix/var</literal> so
189  the logs will go to <filename>/var/log/privoxy/</filename>, and the pid file
190  will be created in <filename>/var/run/privoxy.pid</filename>.
191 </para>
192
193 <para>
194  <command>make install</command> will attempt to set the correct values
195  in <filename>config</filename> (main configuration file). You should
196  check this to make sure all values are correct. If appropriate,
197  an init script will be installed, but it is up to the user to determine
198  how and where to start <application>Privoxy</application>. The init
199  script should be checked for correct paths and values, if anything other than
200  a default install is done.
201 </para>
202
203 <para>
204  If install finds previous versions of local configuration files, most of
205  these will not be overwritten, and the new ones will be installed with a
206  <quote>new</quote> extension. default.action and default.filter
207  <emphasis>will be overwritten</emphasis>. You will then need
208  to manually update the other installed configuration files as needed. The
209  default template files <emphasis>will</emphasis> be overwritten. If you have
210  customized, local templates, these should be stored safely in a separate
211  directory and defined in <filename>config</filename> by the
212  <quote>templdir</quote> directive. It is of course wise to always back-up any
213  important configuration files <quote>just in case</quote>. If a previous
214  version of <application>Privoxy</application> is already running, you will
215  have to restart it manually.
216 </para>
217
218 <para>
219  For more detailed instructions on how to build Redhat RPMs,
220  Windows self-extracting installers, building on platforms with
221  special requirements etc, please consult the <ulink
222  url="https://www.privoxy.org/developer-manual/newrelease.html">developer manual</ulink>.
223 </para>
224
225 <!-- print for README only -->
226 <!-- Actually this is now in INSTALL -->
227  <![%p-readme;[
228 <para>
229  The simplest command line to start <application>Privoxy</application> is
230  <command>$path/privoxy --user=privoxy  $path/etc/privoxy/config</command>.
231  See <command>privoxy --usage</command>, or the man page, for other options,
232  and configuration.
233 </para>
234 ]]>