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