aboutsummaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rw-r--r--doc/documentation/chapters/installation.texi97
1 files changed, 69 insertions, 28 deletions
diff --git a/doc/documentation/chapters/installation.texi b/doc/documentation/chapters/installation.texi
index f5e38fd3d..23de13184 100644
--- a/doc/documentation/chapters/installation.texi
+++ b/doc/documentation/chapters/installation.texi
@@ -1,11 +1,17 @@
1@node Installing GNUnet 1@node Installing GNUnet
2@chapter Installing GNUnet 2@chapter Installing GNUnet
3 3
4This guide is intended for those who want to install Gnunet from source. For instructions on how to install GNUnet as a binary package please refer to the official documentation of your operating system or package manager. 4This guide is intended for those who want to install Gnunet from
5source. For instructions on how to install GNUnet as a binary package
6please refer to the official documentation of your operating system or
7package manager.
5 8
6@node Getting the Source Code 9@node Getting the Source Code
7@section Installing dependencies 10@section Installing dependencies
8GNUnet needs few libraries and applications for being able to run and another few optional ones for using certain features. Preferably they should be installed with a package manager. Just in case we include a link to the project websites. 11GNUnet needs few libraries and applications for being able to run and
12another few optional ones for using certain features. Preferably they
13should be installed with a package manager. Just in case we include a
14link to the project websites.
9 15
10The mandatory libraries and applications are 16The mandatory libraries and applications are
11@itemize @bullet 17@itemize @bullet
@@ -43,30 +49,40 @@ These are the dependencies only required for certain features
43@item libpulse (for running the GNUnet conversation telephony application) 49@item libpulse (for running the GNUnet conversation telephony application)
44@item libogg (for running the GNUnet conversation telephony application) 50@item libogg (for running the GNUnet conversation telephony application)
45@item bluez (for bluetooth support) 51@item bluez (for bluetooth support)
46@item libpbc (for attribute-based encryption and the identity provider subsystem) 52@item libpbc
47@item libgabe (for attribute-based encryption and the identity provider subsystem) 53(for attribute-based encryption and the identity provider subsystem)
54@item libgabe
55(for attribute-based encryption and the identity provider subsystem)
48@end itemize 56@end itemize
49 57
50 58
51@section Getting the Source Code 59@section Getting the Source Code
52You can either download the source code using git (you obviously need git installed) or as an archive. 60You can either download the source code using git (you obviously need
61git installed) or as an archive.
53 62
54Using git type 63Using git type
55@example 64@example
56git clone https://gnunet.org/git/gnunet.git 65git clone https://gnunet.org/git/gnunet.git
57@end example 66@end example
58 67
59The archive can be found at @uref{https://gnunet.org/downloads}. Extract it using a graphical archive tool or @code{tar}: 68The archive can be found at
69@uref{https://gnunet.org/downloads}. Extract it using a graphical
70archive tool or @code{tar}:
60@example 71@example
61tar xzvf gnunet-0.11.0pre66.tar.gz 72tar xzvf gnunet-0.11.0pre66.tar.gz
62@end example 73@end example
63 74
64In the next chapter we will assume that the source code is available in the home directory at @code{~/gnunet}. 75In the next chapter we will assume that the source code is available
76in the home directory at @code{~/gnunet}.
65 77
66@section Create @code{gnunet} user and group 78@section Create @code{gnunet} user and group
67The GNUnet services should be run as a dedicated user called @code{gnunet}. For using them a user should be in the same group as this system user. 79The GNUnet services should be run as a dedicated user called
80@code{gnunet}. For using them a user should be in the same group as
81this system user.
68 82
69Create user @code{gnunet} who is member of the group @code{gnunet} and specify a home directory where the GNUnet services will store persistant data such as information about peers. 83Create user @code{gnunet} who is member of the group @code{gnunet} and
84specify a home directory where the GNUnet services will store
85persistant data such as information about peers.
70@example 86@example
71$ sudo useradd --system --groups gnunet --home-dir /var/lib/gnunet 87$ sudo useradd --system --groups gnunet --home-dir /var/lib/gnunet
72@end example 88@end example
@@ -77,7 +93,10 @@ $ sudo adduser alice gnunet
77@end example 93@end example
78 94
79@section Preparing and Compiling the Source Code 95@section Preparing and Compiling the Source Code
80For preparing the source code for compilation a bootstrap script and @code{configure} has to be run from the source code directory. When running @code{configure} the following options can be specified to customize the compilation and installation process: 96For preparing the source code for compilation a bootstrap script and
97@code{configure} has to be run from the source code directory. When
98running @code{configure} the following options can be specified to
99customize the compilation and installation process:
81 100
82@itemize @bullet 101@itemize @bullet
83@item @code{--disable-documentation} - don't build the configuration documents 102@item @code{--disable-documentation} - don't build the configuration documents
@@ -91,27 +110,38 @@ For preparing the source code for compilation a bootstrap script and @code{confi
91@item @code{--with-sudo=[PATH]} - path to the sudo binary (no need to run @code{make install} as root if specified) 110@item @code{--with-sudo=[PATH]} - path to the sudo binary (no need to run @code{make install} as root if specified)
92@end itemize 111@end itemize
93 112
94The following example configures the installation prefix @code{/usr/lib} and disables building the documentation 113The following example configures the installation prefix
114@code{/usr/lib} and disables building the documentation
95@example 115@example
96$ cd ~/gnunet 116$ cd ~/gnunet
97$ ./bootstrap 117$ ./bootstrap
98$ configure --prefix=/usr/lib --disable-configuration 118$ configure --prefix=/usr/lib --disable-configuration
99@end example 119@end example
100 120
101After running the bootstrap script and @code{configure} successfully the source code can be compiled with make. Here @code{-j5} specifies that 5 threads should be used. 121After running the bootstrap script and @code{configure} successfully
122the source code can be compiled with make. Here @code{-j5} specifies
123that 5 threads should be used.
102@example 124@example
103$ make -j5 125$ make -j5
104@end example 126@end example
105 127
106 128
107@section Installation 129@section Installation
108The compiled binaries can be installed using @code{make install}. It needs to be run as root (or with sudo) because some binaries need the @code{suid} bit set. Without that some GNUnet subsystems (such as VPN) will not work. 130The compiled binaries can be installed using @code{make install}. It
131needs to be run as root (or with sudo) because some binaries need the
132@code{suid} bit set. Without that some GNUnet subsystems (such as VPN)
133will not work.
109 134
110@example 135@example
111$ sudo make install 136$ sudo make install
112@end example 137@end example
113 138
114One important library is the GNS plugin for NSS (the name services switch) which allows using GNS (the GNU name system) in the normal DNS resolution process. Unfortunately NSS expects it in a specific location (probably @code{/lib}) which may differ from the installation prefix (see @code{--prefix} option in the previous section). This is why the pugin has to be installed manually. 139One important library is the GNS plugin for NSS (the name services
140switch) which allows using GNS (the GNU name system) in the normal DNS
141resolution process. Unfortunately NSS expects it in a specific
142location (probably @code{/lib}) which may differ from the installation
143prefix (see @code{--prefix} option in the previous section). This is
144why the pugin has to be installed manually.
115 145
116Find the directory where nss plugins are installed on your system, e.g. 146Find the directory where nss plugins are installed on your system, e.g.
117 147
@@ -129,24 +159,30 @@ Copy the GNS NSS plugin to that directory:
129cp ~/gnunet/src/gns/nss/libnss_gns.so.2 /lib 159cp ~/gnunet/src/gns/nss/libnss_gns.so.2 /lib
130@end example 160@end example
131 161
132Now, to activate the plugin, you need to edit your @code{/etc/nsswitch.conf} where you should find a line like this: 162Now, to activate the plugin, you need to edit your
163@code{/etc/nsswitch.conf} where you should find a line like this:
133 164
134@example 165@example
135hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4 166hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4
136@end example 167@end example
137 168
138The exact details may differ a bit, which is fine. Add the text @code{"gns [NOTFOUND=return]"} after @code{"files"}. 169The exact details may differ a bit, which is fine. Add the text
170@code{"gns [NOTFOUND=return]"} after @code{"files"}.
139 171
140@example 172@example
141hosts: files gns [NOTFOUND=return] mdns4_minimal [NOTFOUND=return] dns mdns4 173hosts: files gns [NOTFOUND=return] mdns4_minimal [NOTFOUND=return] dns mdns4
142@end example 174@end example
143 175
144Optionally, if GNS shall be used with a browser, execute the GNS CA-setup script. It will isetup the GNS Certificate Authority with the user's browser. 176Optionally, if GNS shall be used with a browser, execute the GNS
177CA-setup script. It will isetup the GNS Certificate Authority with the
178user's browser.
145@example 179@example
146$ gnunet-gns-proxy-setup-ca 180$ gnunet-gns-proxy-setup-ca
147@end example 181@end example
148 182
149Finally install a configuration file in @code{~/.gnunet/gnunet.conf}. Below you find an example config which allows you to start GNUnet. 183Finally install a configuration file in
184@code{~/.gnunet/gnunet.conf}. Below you find an example config which
185allows you to start GNUnet.
150 186
151@example 187@example
152[arm] 188[arm]
@@ -170,7 +206,8 @@ This section describes a quick, casual way to check if your GNUnet
170installation works. However, if it does not, we do not cover 206installation works. However, if it does not, we do not cover
171steps for recovery --- for this, please study the instructions 207steps for recovery --- for this, please study the instructions
172provided in the developer handbook as well as the system-specific 208provided in the developer handbook as well as the system-specific
173instruction in the source code repository@footnote{The system specific instructions are not provided as part of this handbook!}. 209instruction in the source code repository@footnote{The system specific
210instructions are not provided as part of this handbook!}.
174 211
175 212
176@menu 213@menu
@@ -203,21 +240,25 @@ Currently these interfaces cover:
203@subsection Statistics 240@subsection Statistics
204@c %**end of header 241@c %**end of header
205 242
206First, you should launch GNUnet gtk@footnote{Obviously you should also start gnunet, via gnunet-arm or the system provided method}. 243First, you should launch GNUnet gtk@footnote{Obviously you should also
244start gnunet, via gnunet-arm or the system provided method}.
207You can do this from the command-line by typing 245You can do this from the command-line by typing
208 246
209@example 247@example
210gnunet-statistics-gtk 248gnunet-statistics-gtk
211@end example 249@end example
212 250
213If your peer@footnote{The term ``peer'' is a common word used in federated and distributed networks to describe a participating device which is connected to the network. Thus, your Personal Computer or whatever it is you are looking at the Gtk+ interface describes a ``Peer'' or a ``Node''.} 251If your peer@footnote{The term ``peer'' is a common word used in
214is running correctly, you should see a bunch of lines, 252federated and distributed networks to describe a participating device
215all of which should be ``significantly'' above zero (at least if your 253which is connected to the network. Thus, your Personal Computer or
216peer has been running for more than a few seconds). The lines indicate 254whatever it is you are looking at the Gtk+ interface describes a
217how many other peers your peer is connected to (via different 255``Peer'' or a ``Node''.} is running correctly, you should see a bunch
218mechanisms) and how large the entire overlay network is currently 256of lines, all of which should be ``significantly'' above zero (at
219estimated to be. The X-axis represents time (in seconds since the 257least if your peer has been running for more than a few seconds). The
220start of @command{gnunet-gtk}). 258lines indicate how many other peers your peer is connected to (via
259different mechanisms) and how large the entire overlay network is
260currently estimated to be. The X-axis represents time (in seconds
261since the start of @command{gnunet-gtk}).
221 262
222You can click on "Traffic" to see information about the amount of 263You can click on "Traffic" to see information about the amount of
223bandwidth your peer has consumed, and on "Storage" to check the amount 264bandwidth your peer has consumed, and on "Storage" to check the amount