aboutsummaryrefslogtreecommitdiff
path: root/doc/handbook/chapters/installation.texi
diff options
context:
space:
mode:
Diffstat (limited to 'doc/handbook/chapters/installation.texi')
-rw-r--r--doc/handbook/chapters/installation.texi135
1 files changed, 93 insertions, 42 deletions
diff --git a/doc/handbook/chapters/installation.texi b/doc/handbook/chapters/installation.texi
index a907a1046..ad848b4a0 100644
--- a/doc/handbook/chapters/installation.texi
+++ b/doc/handbook/chapters/installation.texi
@@ -12,9 +12,9 @@ package manager.
12* Create @code{gnunet} user and group:: 12* Create @code{gnunet} user and group::
13* Preparing and Compiling the Source Code:: 13* Preparing and Compiling the Source Code::
14* Installation:: 14* Installation::
15* MOVED FROM USER Checking the Installation:: 15* Checking the Installation::
16* MOVED FROM USER The graphical configuration interface:: 16* The graphical configuration interface::
17* MOVED FROM USER Config Leftovers:: 17* Config Leftovers::
18@end menu 18@end menu
19 19
20@c ----------------------------------------------------------------------- 20@c -----------------------------------------------------------------------
@@ -27,36 +27,54 @@ link to the project websites.
27 27
28The mandatory libraries and applications are 28The mandatory libraries and applications are
29@itemize @bullet 29@itemize @bullet
30@item libtool
31@item autoconf 2.59 or above 30@item autoconf 2.59 or above
32@item automake 1.11.1 or above 31@item automake 1.11.1 or above
33@item pkg-config 32@item gettext
33@item glibc (read below, other libcs should work)
34@item gnutls 3.2.12 or above, recommended to be linked against libunbound
35@item iptables (on Linux systems)
36@item libtool 2.2 or above
37@item libltdl (part of libtool)
34@item libgcrypt 1.6 or above 38@item libgcrypt 1.6 or above
35@item libextractor 39@item libextractor
36@item libidn 40@item libidn2 or libidn
37@item libmicrohttpd 0.9.52 or above 41@item libmicrohttpd 0.9.52 or above
38@item libnss
39@item libunistring 42@item libunistring
40@item gettext
41@item glibc
42@item libgmp 43@item libgmp
43@item gnutls 44@item libgnurl or libcurl (libcurl has to be linked to GnuTLS) 7.35.0 or above
44@item libcurl (has to be linked to GnuTLS) or libgnurl 45@item Texinfo 5.2 or above (for building the documentation)
46@item Texlive 2012 or above (for building the documentation, and for gnunet-bcd)
47@item makeinfo 4.8 or above
45@item zlib 48@item zlib
46@end itemize 49@end itemize
47 50
51Glibc is required for certain NSS features:
52
53@example
54One mechanism of integrating GNS with legacy applications via NSS is
55not available if this is disabled. But applications that don't use the
56glibc for NS resolution won't work anyway with this, so little is lost
57on BSD systems.
58GNS via direct use or via the HTTP or DNS proxies is unaffected.
59@end example
60
61Other libcs should work, the resulting builds just don't include the
62glibc NSS specific code. One example is the build against NetBSD's libc
63as detailed in @uref{https://bugs.gnunet.org/view.php?id=5605}.
64
48In addition GNUnet needs one of of these three databases 65In addition GNUnet needs one of of these three databases
49@itemize @bullet 66@itemize @bullet
50@item sqlite + libsqlite (the default, requires no further configuration) 67@item sqlite + libsqlite 3.8 or above (the default, requires no further configuration)
51@item postgres + libpq 68@item postgres + libpq
52@item mysql + libmysqlclient 69@item mysql + libmysqlclient
53@end itemize 70@end itemize
54 71
55These are the dependencies only required for certain features 72These are the dependencies only required for certain features
56@itemize @bullet 73@itemize @bullet
57@item Texinfo (for building the documentation) 74@item guile 1.6.4 for gnunet-download-manager
58@item Texlive (for building the documentation)
59@item miniupnpc (for traversing NAT boxes more reliably) 75@item miniupnpc (for traversing NAT boxes more reliably)
76@item libnss
77@item libglpk 4.45 or above for experimental code
60@item libopus (for running the GNUnet conversation telephony application) 78@item libopus (for running the GNUnet conversation telephony application)
61@item libpulse (for running the GNUnet conversation telephony application) 79@item libpulse (for running the GNUnet conversation telephony application)
62@item libogg (for running the GNUnet conversation telephony application) 80@item libogg (for running the GNUnet conversation telephony application)
@@ -65,6 +83,24 @@ These are the dependencies only required for certain features
65(for attribute-based encryption and the identity provider subsystem) 83(for attribute-based encryption and the identity provider subsystem)
66@item libgabe 84@item libgabe
67(for attribute-based encryption and the identity provider subsystem) 85(for attribute-based encryption and the identity provider subsystem)
86@item texi2mdoc (for automatic mdoc generation)
87@item perl5 for some utilities
88@end itemize
89
90These are the test suite requirements:
91@itemize @bullet
92@item python3.7
93@item gnunet (installation first)
94@item which(1)
95@item a shell (possibly Bash, maybe just POSIX sh)
96@end itemize
97
98These are runtime requirements:
99@itemize @bullet
100@item nss (the certutil binary, for gnunet-gns-proxy-setup-ca)
101@item openssl (openssl binary, for gnunet-gns-proxy-setup-ca)
102@item python2.7 for gnunet-qr (at the moment only python2.7 supported)
103@item python-zbar 0.10 or above for gnunet-qr
68@end itemize 104@end itemize
69 105
70@c ----------------------------------------------------------------------- 106@c -----------------------------------------------------------------------
@@ -82,7 +118,7 @@ The archive can be found at
82@uref{https://ftpmirror.gnu.org/gnu/gnunet/}. Extract it using a graphical 118@uref{https://ftpmirror.gnu.org/gnu/gnunet/}. Extract it using a graphical
83archive tool or @code{tar}: 119archive tool or @code{tar}:
84@example 120@example
85tar xzvf gnunet-0.11.0pre66.tar.gz 121tar xzvf gnunet-@value{VERSION}.tar.gz
86@end example 122@end example
87 123
88In the next chapter we will assume that the source code is available 124In the next chapter we will assume that the source code is available
@@ -116,17 +152,24 @@ running @code{configure} the following options can be specified to
116customize the compilation and installation process: 152customize the compilation and installation process:
117 153
118@itemize @bullet 154@itemize @bullet
119@item @code{--disable-documentation} - don't build the configuration documents 155@item @code{--disable-documentation} - don't build the documentation
120@item @code{--enable-looging=[LOGLEVEL]} - choose a loglevel (@code{debug}, @code{info}, @code{warning} or @code{error}) 156@item @code{--enable-looging=[LOGLEVEL]} - choose a loglevel (@code{debug}, @code{info}, @code{warning} or @code{error})
121@item @code{--prefix=[PATH]} - the directory where the GNUnet libraries and binaries will be installed 157@item @code{--prefix=[PATH]} - the directory where the GNUnet libraries and binaries will be installed
122@item @code{--with-extractor=[PATH]} - the path to libextractor 158@item @code{--with-extractor=[PATH]} - the path to libextractor
123@item @code{--with-libidn=[PATH]} - the path to libidn 159@item @code{--with-libidn=[PATH]} - the path to libidn
160@item @code{--with-libidn2=[PATH]} - the path to libidn2 (takes priority over libidn if both are found)
124@item @code{--with-microhttpd=[PATH]} - the path to libmicrohttpd 161@item @code{--with-microhttpd=[PATH]} - the path to libmicrohttpd
125@item @code{--with-sqlite=[PATH]} - the path to libsqlite 162@item @code{--with-sqlite=[PATH]} - the path to libsqlite
126@item @code{--with-zlib=[PATH]} - the path to zlib 163@item @code{--with-zlib=[PATH]} - the path to zlib
127@item @code{--with-sudo=[PATH]} - path to the sudo binary (no need to run @code{make install} as root if specified) 164@item @code{--with-sudo=[PATH]} - path to the sudo binary (no need to run @code{make install} as root if specified)
128@end itemize 165@end itemize
129 166
167Note that the list above is not always up to date and you
168should check the output of @code{./configure --help}, read
169the @file{configure.ac} or send an email asking for assistance
170if you are in doubt of any configure options or require fixes
171for your operating system.
172
130The following example configures the installation prefix 173The following example configures the installation prefix
131@code{/usr/lib} and disables building the documentation 174@code{/usr/lib} and disables building the documentation
132@example 175@example
@@ -216,9 +259,9 @@ PLUGINS = tcp
216 259
217 260
218 261
219@node MOVED FROM USER Checking the Installation 262@node Checking the Installation
220@section MOVED FROM USER Checking the Installation 263@section Checking the Installation
221@c %**end of header 264
222 265
223This section describes a quick, casual way to check if your GNUnet 266This section describes a quick, casual way to check if your GNUnet
224installation works. However, if it does not, we do not cover 267installation works. However, if it does not, we do not cover
@@ -240,7 +283,7 @@ as part of this handbook!.
240@cindex GTK user interface 283@cindex GTK user interface
241@node gnunet-gtk 284@node gnunet-gtk
242@subsection gnunet-gtk 285@subsection gnunet-gtk
243@c %**end of header 286
244 287
245The @command{gnunet-gtk} package contains several graphical 288The @command{gnunet-gtk} package contains several graphical
246user interfaces for the respective GNUnet applications. 289user interfaces for the respective GNUnet applications.
@@ -251,17 +294,24 @@ Currently these interfaces cover:
251@item Peer Information 294@item Peer Information
252@item GNU Name System 295@item GNU Name System
253@item File Sharing 296@item File Sharing
254@item Identity Management
255@item Conversation 297@item Conversation
298@item Setup
256@end itemize 299@end itemize
257 300
301Previously, many of these interfaces were combined into one application
302called @command{gnunet-gtk}, with different tabs for each interface. This
303combined application has been removed in version 0.11.0, but each of the
304interfaces is still available as a standalone application
305(@command{gnunet-statistics-gtk} for statistics, @command{gnunet-fs-gtk}
306for filesharing, etc).
307
258@node Statistics 308@node Statistics
259@subsection Statistics 309@subsection Statistics
260@c %**end of header 310
261 311
262We assume that you have started gnunet via @code{gnunet-arm} or via your 312We assume that you have started gnunet via @code{gnunet-arm} or via your
263system-provided method for starting services. 313system-provided method for starting services.
264First, you should launch GNUnet gtk. 314First, you should launch GNUnet's graphical statistics interface.
265You can do this from the command-line by typing 315You can do this from the command-line by typing
266 316
267@example 317@example
@@ -274,7 +324,7 @@ least if your peer has been running for more than a few seconds). The
274lines indicate how many other peers your peer is connected to (via 324lines indicate how many other peers your peer is connected to (via
275different mechanisms) and how large the entire overlay network is 325different mechanisms) and how large the entire overlay network is
276currently estimated to be. The X-axis represents time (in seconds 326currently estimated to be. The X-axis represents time (in seconds
277since the start of @command{gnunet-gtk}). 327since the start of @command{gnunet-statistics-gtk}).
278 328
279You can click on "Traffic" to see information about the amount of 329You can click on "Traffic" to see information about the amount of
280bandwidth your peer has consumed, and on "Storage" to check the amount 330bandwidth your peer has consumed, and on "Storage" to check the amount
@@ -290,10 +340,10 @@ whatever it is you are looking at the Gtk+ interface describes a
290 340
291@node Peer Information 341@node Peer Information
292@subsection Peer Information 342@subsection Peer Information
293@c %**end of header
294 343
295First, you should launch the graphical user interface. You can do 344
296this from the command-line by typing 345First, you should launch the peer information graphical user interface.
346You can do this from the command-line by typing
297 347
298@example 348@example
299$ gnunet-peerinfo-gtk 349$ gnunet-peerinfo-gtk
@@ -310,8 +360,8 @@ configuration.
310 360
311@c NOTE: Inserted from Installation Handbook in original ``order'': 361@c NOTE: Inserted from Installation Handbook in original ``order'':
312@c FIXME: Move this to User Handbook. 362@c FIXME: Move this to User Handbook.
313@node MOVED FROM USER The graphical configuration interface 363@node The graphical configuration interface
314@section MOVED FROM USER The graphical configuration interface 364@section The graphical configuration interface
315 365
316If you also would like to use @command{gnunet-gtk} and 366If you also would like to use @command{gnunet-gtk} and
317@command{gnunet-setup} (highly recommended for beginners), do: 367@command{gnunet-setup} (highly recommended for beginners), do:
@@ -347,7 +397,7 @@ If you also would like to use @command{gnunet-gtk} and
347* Configuring the GNUnet VPN:: 397* Configuring the GNUnet VPN::
348* Bandwidth Configuration:: 398* Bandwidth Configuration::
349* Configuring NAT:: 399* Configuring NAT::
350* Peer configuration for distributions:: 400* Peer configuration for distributors (e.g. Operating Systems)::
351@end menu 401@end menu
352 402
353@node Configuring your peer 403@node Configuring your peer
@@ -358,7 +408,7 @@ This chapter will describe the various configuration options in GNUnet.
358The easiest way to configure your peer is to use the 408The easiest way to configure your peer is to use the
359@command{gnunet-setup} tool. 409@command{gnunet-setup} tool.
360@command{gnunet-setup} is part of the @command{gnunet-gtk} 410@command{gnunet-setup} is part of the @command{gnunet-gtk}
361application. You might have to install it separately. 411package. You might have to install it separately.
362 412
363Many of the specific sections from this chapter actually are linked from 413Many of the specific sections from this chapter actually are linked from
364within @command{gnunet-setup} to help you while using the setup tool. 414within @command{gnunet-setup} to help you while using the setup tool.
@@ -837,7 +887,7 @@ a @code{gn090} table here, it probably works.
837 887
838@node Configuring the datacache 888@node Configuring the datacache
839@subsection Configuring the datacache 889@subsection Configuring the datacache
840@c %**end of header 890
841 891
842The datacache is what GNUnet uses for storing temporary data. This data is 892The datacache is what GNUnet uses for storing temporary data. This data is
843expected to be wiped completely each time GNUnet is restarted (or the 893expected to be wiped completely each time GNUnet is restarted (or the
@@ -889,7 +939,8 @@ strength of the adversary).
889@node Configuring logging 939@node Configuring logging
890@subsection Configuring logging 940@subsection Configuring logging
891 941
892Logging in GNUnet 0.9.0 is controlled via the "-L" and "-l" options. 942Since version 0.9.0, logging in GNUnet is controlled via the
943@code{-L} and @code{-l} options.
893Using @code{-L}, a log level can be specified. With log level 944Using @code{-L}, a log level can be specified. With log level
894@code{ERROR} only serious errors are logged. 945@code{ERROR} only serious errors are logged.
895The default log level is @code{WARNING} which causes anything of 946The default log level is @code{WARNING} which causes anything of
@@ -1765,7 +1816,7 @@ The other options as shown on the gnunet-setup tool are:
1765@node IPv4 address for interface 1816@node IPv4 address for interface
1766@subsubsection IPv4 address for interface 1817@subsubsection IPv4 address for interface
1767 1818
1768This is the IPv4 address the VPN interface will get. You should pick an 1819This is the IPv4 address the VPN interface will get. You should pick a
1769'private' IPv4 network that is not yet in use for you system. For example, 1820'private' IPv4 network that is not yet in use for you system. For example,
1770if you use @code{10.0.0.1/255.255.0.0} already, you might use 1821if you use @code{10.0.0.1/255.255.0.0} already, you might use
1771@code{10.1.0.1/255.255.0.0}. 1822@code{10.1.0.1/255.255.0.0}.
@@ -1920,29 +1971,29 @@ connect to NATed peers using autonomous NAT traversal, you need to check
1920the "Enable connecting to NATed peers using ICMP method" box. 1971the "Enable connecting to NATed peers using ICMP method" box.
1921 1972
1922 1973
1923@node Peer configuration for distributions 1974@node Peer configuration for distributors (e.g. Operating Systems)
1924@subsection Peer configuration for distributions 1975@subsection Peer configuration for distributors (e.g. Operating Systems)
1925 1976
1926The "GNUNET_DATA_HOME" in "[path]" in @file{/etc/gnunet.conf} should be 1977The "GNUNET_DATA_HOME" in "[path]" in @file{/etc/gnunet.conf} should be
1927manually set to "/var/lib/gnunet/data/" as the default 1978manually set to "/var/lib/gnunet/data/" as the default
1928"~/.local/share/gnunet/" is probably not that appropriate in this case. 1979"~/.local/share/gnunet/" is probably not that appropriate in this case.
1929Similarly, distributions may consider pointing "GNUNET_RUNTIME_DIR" to 1980Similarly, distributors may consider pointing "GNUNET_RUNTIME_DIR" to
1930"/var/run/gnunet/" and "GNUNET_HOME" to "/var/lib/gnunet/". Also, should a 1981"/var/run/gnunet/" and "GNUNET_HOME" to "/var/lib/gnunet/". Also, should a
1931distribution decide to override system defaults, all of these changes 1982distributor decide to override system defaults, all of these changes
1932should be done in a custom @file{/etc/gnunet.conf} and not in the files 1983should be done in a custom @file{/etc/gnunet.conf} and not in the files
1933in the @file{config.d/} directory. 1984in the @file{config.d/} directory.
1934 1985
1935Given the proposed access permissions, the "gnunet-setup" tool must be 1986Given the proposed access permissions, the "gnunet-setup" tool must be
1936run as use "gnunet" (and with option "-c /etc/gnunet.conf" so that it 1987run as use "gnunet" (and with option "-c /etc/gnunet.conf" so that it
1937modifies the system configuration). As always, gnunet-setup should be run 1988modifies the system configuration). As always, gnunet-setup should be run
1938after the GNUnet peer was stopped using "gnunet-arm -e". Distributions 1989after the GNUnet peer was stopped using "gnunet-arm -e". Distributors
1939might want to include a wrapper for gnunet-setup that allows the 1990might want to include a wrapper for gnunet-setup that allows the
1940desktop-user to "sudo" (i.e. using gtksudo) to the "gnunet" user account 1991desktop-user to "sudo" (i.e. using gtksudo) to the "gnunet" user account
1941and then runs "gnunet-arm -e", "gnunet-setup" and "gnunet-arm -s" in 1992and then runs "gnunet-arm -e", "gnunet-setup" and "gnunet-arm -s" in
1942sequence. 1993sequence.
1943 1994
1944@node MOVED FROM USER Config Leftovers 1995@node Config Leftovers
1945@section MOVED FROM USER Config Leftovers 1996@section Config Leftovers
1946 1997
1947This section describes how to start a GNUnet peer. It assumes that you 1998This section describes how to start a GNUnet peer. It assumes that you
1948have already compiled and installed GNUnet and its' dependencies. 1999have already compiled and installed GNUnet and its' dependencies.
@@ -2201,7 +2252,7 @@ However, as TCP is generally less efficient and it is rarely the case
2201that a single GNUnet peer is supposed to serve an entire local network, 2252that a single GNUnet peer is supposed to serve an entire local network,
2202the default configuration should disable TCP access to all GNUnet 2253the default configuration should disable TCP access to all GNUnet
2203services on systems with support for UNIX domain sockets. 2254services on systems with support for UNIX domain sockets.
2204As of GNUnet 0.9.2, configuration files with TCP access disabled should be 2255Since GNUnet 0.9.2, configuration files with TCP access disabled should be
2205generated by default. Users can re-enable TCP access to particular 2256generated by default. Users can re-enable TCP access to particular
2206services simply by specifying a non-zero port number in the section of 2257services simply by specifying a non-zero port number in the section of
2207the respective service. 2258the respective service.