diff options
Diffstat (limited to 'doc/documentation')
-rw-r--r-- | doc/documentation/gnunet-c-tutorial.texi | 62 |
1 files changed, 40 insertions, 22 deletions
diff --git a/doc/documentation/gnunet-c-tutorial.texi b/doc/documentation/gnunet-c-tutorial.texi index 7eafa9ea9..0e2adaee7 100644 --- a/doc/documentation/gnunet-c-tutorial.texi +++ b/doc/documentation/gnunet-c-tutorial.texi | |||
@@ -10,7 +10,7 @@ | |||
10 | @include version2.texi | 10 | @include version2.texi |
11 | 11 | ||
12 | @copying | 12 | @copying |
13 | Copyright @copyright{} 2001-2017 GNUnet e.V. | 13 | Copyright @copyright{} 2001-2018 GNUnet e.V. |
14 | 14 | ||
15 | Permission is granted to copy, distribute and/or modify this document | 15 | Permission is granted to copy, distribute and/or modify this document |
16 | under the terms of the GNU Free Documentation License, Version 1.3 or | 16 | under the terms of the GNU Free Documentation License, Version 1.3 or |
@@ -68,9 +68,10 @@ dependencies can be found on our website at | |||
68 | Reference Documentation (GNUnet Handbook). | 68 | Reference Documentation (GNUnet Handbook). |
69 | 69 | ||
70 | Please read this tutorial carefully since every single step is | 70 | Please read this tutorial carefully since every single step is |
71 | important and do not hesitate to contact the GNUnet team if you have | 71 | important, and do not hesitate to contact the GNUnet team if you have |
72 | any questions or problems! Check here how to contact the GNUnet | 72 | any questions or problems! Visit this link in your webbrowser to learn |
73 | team: @uref{https://gnunet.org/contact_information} | 73 | how to contact the GNUnet team: |
74 | @uref{https://gnunet.org/contact_information} | ||
74 | 75 | ||
75 | @menu | 76 | @menu |
76 | 77 | ||
@@ -151,7 +152,7 @@ $ gpg --verify-files gnunet-@value{VERSION}.tar.gz.sig | |||
151 | 152 | ||
152 | @noindent | 153 | @noindent |
153 | If this command fails because you do not have the required public key, | 154 | If this command fails because you do not have the required public key, |
154 | then you need to run this command to import it: | 155 | then you need to run the following command to import it: |
155 | 156 | ||
156 | @example | 157 | @example |
157 | $ gpg --keyserver keys.gnupg.net --recv-keys 48426C7E | 158 | $ gpg --keyserver keys.gnupg.net --recv-keys 48426C7E |
@@ -167,19 +168,22 @@ revoked}. You will get an error message stating that | |||
167 | The next release of GNUnet will have a valid signature | 168 | The next release of GNUnet will have a valid signature |
168 | again. We are sorry for the inconvenience this causes. | 169 | again. We are sorry for the inconvenience this causes. |
169 | Another possible source you could use is our | 170 | Another possible source you could use is our |
170 | "gnunet" git repository which has mandatory signed commits | 171 | "gnunet" git repository which, since the change from SVN to git in 2016, |
171 | by every developer. | 172 | has mandatory signed commits by every developer. |
172 | 173 | ||
173 | Now you can extract the tarball and rename the resulting | 174 | After verifying the signature you can extract the tarball. |
174 | directory to @file{gnunet} which we will be using in the | 175 | The resulting directory will be renamed to @file{gnunet}, which we will |
175 | remainder of this document. | 176 | be using in the remainder of this document to refer to the |
177 | root of the source directory. | ||
176 | 178 | ||
177 | @example | 179 | @example |
178 | $ tar xvzf gnunet-@value{VERSION}.tar.gz | 180 | $ tar xvzf gnunet-@value{VERSION}.tar.gz |
179 | $ mv gnunet-@value{VERSION} gnunet | 181 | $ mv gnunet-@value{VERSION} gnunet |
180 | $ cd gnunet | ||
181 | @end example | 182 | @end example |
182 | 183 | ||
184 | @c FIXME: This can be irritating for the reader - First we say git should | ||
185 | @c be avoid unless it is really required, and then we write this | ||
186 | @c paragraph: | ||
183 | @noindent | 187 | @noindent |
184 | However, please note that stable versions can be very outdated. | 188 | However, please note that stable versions can be very outdated. |
185 | As a developer you are @b{strongly} encouraged to use the version | 189 | As a developer you are @b{strongly} encouraged to use the version |
@@ -192,32 +196,40 @@ To successfully compile GNUnet, you need the tools to build GNUnet and | |||
192 | the required dependencies. Please take a look at the | 196 | the required dependencies. Please take a look at the |
193 | GNUnet Reference Documentation | 197 | GNUnet Reference Documentation |
194 | (@pxref{Dependencies, The GNUnet Reference Documentation,, gnunet, The GNUnet Reference Documentation}) | 198 | (@pxref{Dependencies, The GNUnet Reference Documentation,, gnunet, The GNUnet Reference Documentation}) |
195 | for a list of required dependencies | 199 | for a list of required dependencies and |
196 | and | ||
197 | (@pxref{Generic installation instructions, The GNUnet Reference Documentation,, gnunet, The GNUnet Reference Documentation}) | 200 | (@pxref{Generic installation instructions, The GNUnet Reference Documentation,, gnunet, The GNUnet Reference Documentation}) |
198 | read its Installation chapter for specific instructions for | 201 | read its Installation chapter for specific instructions for |
199 | your operating system. | 202 | your Operating System. |
200 | Please check the notes at the end of the configure process about | 203 | Please check the notes at the end of the configure process about |
201 | required dependencies. | 204 | required dependencies. |
202 | 205 | ||
203 | For GNUnet bootstrapping support and the HTTP(S) plugin you should | 206 | For GNUnet bootstrapping support and the HTTP(S) plugin you should |
204 | install @uref{https://gnunet.org/gnurl, libgnurl}. | 207 | install @uref{https://gnunet.org/gnurl, libgnurl}. |
205 | For the filesharing service you should install at least one of the | 208 | For the filesharing service you should install at least one of the |
206 | datastore backends. MySQL, SQlite and PostgreSQL are supported. | 209 | datastore backends (MySQL, SQlite and PostgreSQL are supported). |
207 | 210 | ||
208 | @node Obtaining the latest version from Git | 211 | @node Obtaining the latest version from Git |
209 | @section Obtaining the latest version from Git | 212 | @section Obtaining the latest version from Git |
210 | 213 | ||
211 | The latest development version can obtained from our Git repository. | 214 | The latest development version can be obtained from our Git repository. |
212 | To obtain the code you need to have @code{Git} installed, which is | 215 | To get the code you need to have @code{Git} installed. Usually your |
213 | required for obtaining the repository via: | 216 | Operating System package manager should provide a suitable distribution |
217 | of git (otherwise check out Guix or Nix). If you are using an Operating | ||
218 | System based on Debian's apt: | ||
219 | |||
220 | @example | ||
221 | $ sudo apt-get install git | ||
222 | @end example | ||
223 | |||
224 | This is required for obtaining the repository, which is achieved with | ||
225 | the following command: | ||
214 | 226 | ||
215 | @example | 227 | @example |
216 | $ git clone https://gnunet.org/git/gnunet | 228 | $ git clone https://gnunet.org/git/gnunet |
217 | @end example | 229 | @end example |
218 | 230 | ||
219 | @noindent | 231 | @noindent |
220 | After cloning the repository you have to execute the @file{bootstrap} | 232 | After cloning the repository, you have to execute the @file{bootstrap} |
221 | script in the new directory: | 233 | script in the new directory: |
222 | 234 | ||
223 | @example | 235 | @example |
@@ -275,6 +287,7 @@ you do not specifiy a prefix, GNUnet is installed in the directory | |||
275 | to enable verbose logging by adding @code{--enable-logging=verbose}: | 287 | to enable verbose logging by adding @code{--enable-logging=verbose}: |
276 | 288 | ||
277 | @example | 289 | @example |
290 | $ export PREFIX=$HOME | ||
278 | $ ./configure --prefix=$PREFIX --enable-logging | 291 | $ ./configure --prefix=$PREFIX --enable-logging |
279 | $ make | 292 | $ make |
280 | $ make install | 293 | $ make install |
@@ -303,11 +316,14 @@ binaries and run GNUnet's self check. | |||
303 | 316 | ||
304 | @example | 317 | @example |
305 | $ which gnunet-arm | 318 | $ which gnunet-arm |
319 | $PREFIX/bin/gnunet-arm | ||
306 | @end example | 320 | @end example |
307 | 321 | ||
308 | @noindent | 322 | @noindent |
309 | should return $PREFIX/bin/gnunet-arm. It should be located in your | 323 | should return $PREFIX/bin/gnunet-arm (where $PREFIX is the location |
324 | you have set earlier). It should be located in your | ||
310 | GNUnet installation and the output should not be empty. | 325 | GNUnet installation and the output should not be empty. |
326 | |||
311 | If you see an output like: | 327 | If you see an output like: |
312 | 328 | ||
313 | @example | 329 | @example |
@@ -318,9 +334,11 @@ $ which gnunet-arm | |||
318 | check your PATH variable to ensure GNUnet's @file{bin} directory is | 334 | check your PATH variable to ensure GNUnet's @file{bin} directory is |
319 | included. | 335 | included. |
320 | 336 | ||
321 | GNUnet provides tests for all of its subcomponents. Run | 337 | GNUnet provides tests for all of its subcomponents. Assuming you have |
338 | successfully built GNUnet, run | ||
322 | 339 | ||
323 | @example | 340 | @example |
341 | $ cd gnunet | ||
324 | $ make check | 342 | $ make check |
325 | @end example | 343 | @end example |
326 | 344 | ||
@@ -387,7 +405,7 @@ a mesh on top of a DHT). | |||
387 | @c \end{figure} | 405 | @c \end{figure} |
388 | 406 | ||
389 | The main service implementation runs as a standalone process in the | 407 | The main service implementation runs as a standalone process in the |
390 | operating system and the client code runs as part of the client program, | 408 | Operating System and the client code runs as part of the client program, |
391 | so crashes of a client do not affect the service process or other clients. | 409 | so crashes of a client do not affect the service process or other clients. |
392 | The service and the clients communicate via a message protocol to be | 410 | The service and the clients communicate via a message protocol to be |
393 | defined and implemented by the programmer. | 411 | defined and implemented by the programmer. |