diff options
Diffstat (limited to 'README')
-rw-r--r-- | README | 156 |
1 files changed, 113 insertions, 43 deletions
@@ -1,5 +1,26 @@ | |||
1 | Welcome to GNUnet | 1 | Welcome to GNUnet |
2 | 2 | ||
3 | ToC | ||
4 | === | ||
5 | |||
6 | * ToC | ||
7 | * What is GNUnet? | ||
8 | * Dependencies | ||
9 | o direct dependencies | ||
10 | o test suite dependencies | ||
11 | o optional dependencies | ||
12 | o autotools | ||
13 | * Requirements | ||
14 | * How to install | ||
15 | o binary packages | ||
16 | o Scope of Operating System support | ||
17 | o Building GNUnet from source | ||
18 | * Configuration | ||
19 | * Usage | ||
20 | * Hacking GNUnet | ||
21 | * Running HTTP on port 80 and HTTPS on port 443 | ||
22 | * Further Reading | ||
23 | * Stay tuned | ||
3 | 24 | ||
4 | What is GNUnet? | 25 | What is GNUnet? |
5 | =============== | 26 | =============== |
@@ -31,63 +52,93 @@ Dependencies: | |||
31 | ============= | 52 | ============= |
32 | 53 | ||
33 | These are the direct dependencies for running GNUnet: | 54 | These are the direct dependencies for running GNUnet: |
55 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
34 | 56 | ||
35 | - libmicrohttpd >= 0.9.42 | 57 | - Bash (for some scripts) |
58 | - gettext | ||
59 | - gnutls >= 3.2.12 (highly recommended a gnutls | ||
60 | linked against libunbound) | ||
61 | - A curl build against gnutls, or gnurl: | ||
62 | * libgnurl >= 7.35.0 (recommended, available from | ||
63 | https://gnunet.org/en/gnurl.html) | ||
64 | or | ||
65 | * libcurl >= 7.35.0 (alternative to libgnurl) | ||
36 | - libgcrypt >= 1.6 | 66 | - libgcrypt >= 1.6 |
37 | - libgnurl >= 7.35.0 (recommended, available from https://gnunet.org/en/gnurl.html) | ||
38 | - libcurl >= 7.35.0 (alternative to libgnurl) | ||
39 | - libunistring >= 0.9.2 | 67 | - libunistring >= 0.9.2 |
40 | - gnutls >= 3.2.12 (highly recommended a gnutls linked against libunbound) | ||
41 | - libidn: | 68 | - libidn: |
42 | - libidn2 (prefered) | 69 | * libidn2 (prefered) |
43 | or | 70 | or |
44 | - libidn >= 1.0 | 71 | * libidn >= 1.0 |
45 | - libextractor >= 0.6.1 (highly recommended) | 72 | - libmicrohttpd >= 0.9.52 |
46 | - openssl >= 1.0 (binary, used to generate X.509 certificate | 73 | - makeinfo >= 4.8 |
47 | for gnunet-gns-proxy-setup-ca) | 74 | - make[*3] |
48 | - nss (certutil binary, for | 75 | - nss (certutil binary, for |
49 | gnunet-gns-proxy-setup-ca) | 76 | gnunet-gns-proxy-setup-ca) |
50 | - libltdl >= 2.2 (part of GNU libtool) | 77 | - openssl >= 1.0 (binary, used to generate |
51 | - sqlite >= 3.8 (default database, required) | 78 | X.509 certificate |
52 | - mysql >= 5.1 (alternative to sqlite) | 79 | for gnunet-gns-proxy-setup-ca) |
53 | - postgres >= 9.5 (alternative to sqlite) | 80 | - A Posix shell (for some scripts) |
54 | - Texinfo >= 5.2 [*1] | 81 | - Texinfo >= 5.2 [*1] |
55 | - makeinfo >= 4.8 | 82 | - libltdl >= 2.2 (part of GNU libtool) |
56 | - make[*3] | 83 | - 1 or more databases: |
84 | * sqlite >= 3.8 (default database, required) | ||
85 | and/or | ||
86 | * mysql >= 5.1 (alternative to sqlite) | ||
87 | and/or | ||
88 | * postgres >= 9.5 (alternative to sqlite) | ||
57 | - which (contrib/apparmor(?), gnunet-bugreport, | 89 | - which (contrib/apparmor(?), gnunet-bugreport, |
58 | tests (dns, gns, namestore, | 90 | and possibly more) |
59 | scalarproduct) and possibly more) | ||
60 | - gettext | ||
61 | - zlib | 91 | - zlib |
62 | 92 | ||
63 | |||
64 | These are the dependencies for GNUnet's testsuite: | 93 | These are the dependencies for GNUnet's testsuite: |
94 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
65 | 95 | ||
66 | - Bash (optional (?[*4]), for some tests) | 96 | - Bash (for some tests[*4]) |
67 | - python >= 3.7 (only python 3.7 is supported) | 97 | - A Posix Shell (for some tests) |
68 | - python-future >= 3.7 (only python 3.7 is supported) | 98 | - python >= 3.4 (3.4 and higher technically supported, |
69 | - which | 99 | at least python 3.7 tested to work) |
100 | - base tools | ||
101 | - mostly: | ||
102 | - bc, | ||
103 | - curl, | ||
104 | - sed, | ||
105 | - awk, | ||
106 | - which | ||
70 | 107 | ||
71 | 108 | ||
72 | These are the optional dependencies: | 109 | These are the optional dependencies: |
110 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
111 | |||
112 | - awk (for linting tests) | ||
113 | - Bash (for Docker and Vagrant) | ||
114 | - bluez (for bluetooth support) | ||
115 | - grof (for linting of man pages) | ||
116 | - guile 1.6.4 (or later up to 1.8?, for | ||
117 | gnunet-download-manager) | ||
73 | 118 | ||
119 | - libextractor >= 0.6.1 (highly recommended[*5]) | ||
120 | - libjansson | ||
121 | - libglpk >= 4.45 (for experimental code) | ||
74 | - libopus >= 1.0.1 (for experimental conversation tool) | 122 | - libopus >= 1.0.1 (for experimental conversation tool) |
75 | - libpulse >= 2.0 (for experimental conversation tool) | 123 | - libpulse >= 2.0 (for experimental conversation tool) |
76 | - libogg >= 1.3.0 (for experimental conversation tool) | 124 | - libogg >= 1.3.0 (for experimental conversation tool) |
77 | - libnss (certtool binary (for convenient installation of GNS proxy)) | 125 | - libnss (certtool binary (for convenient |
126 | installation of GNS proxy)) | ||
78 | - libzbar >= 0.10 (for gnunet-qr) | 127 | - libzbar >= 0.10 (for gnunet-qr) |
128 | - libpbc >= 0.5.14 (for Attribute-Based Encryption and | ||
129 | Identity Provider functionality) | ||
130 | - libgabe (for Attribute-Based Encryption and | ||
131 | Identity Provider functionality, from | ||
132 | https://github.com/schanzen/libgabe) | ||
133 | - mandoc (for linting of man pages, generation of | ||
134 | html output of man pages) | ||
135 | - miniupnpc | ||
136 | - perl5 (for some utilities) | ||
79 | - TeX Live >= 2012 (for gnunet-bcd[*]) | 137 | - TeX Live >= 2012 (for gnunet-bcd[*]) |
80 | - texi2mdoc (for automatic mdoc generation [*2]) | 138 | - texi2mdoc (for automatic mdoc generation [*2]) |
81 | - libglpk >= 4.45 (for experimental code) | ||
82 | - perl5 (for some utilities) | ||
83 | - guile 1.6.4 (or later up to 1.8?, for gnunet-download-manager) | ||
84 | - bluez (for bluetooth support) | ||
85 | - miniupnpc | ||
86 | - libpbc >= 0.5.14 (for Attribute-Based Encryption and Identity Provider functionality) | ||
87 | - libgabe (for Attribute-Based Encryption and Identity Provider functionality, | ||
88 | from https://github.com/schanzen/libgabe) | ||
89 | 139 | ||
90 | Recommended autotools for compiling the Git version are: | 140 | Recommended autotools for compiling the Git version are: |
141 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
91 | 142 | ||
92 | - autoconf >= 2.59 | 143 | - autoconf >= 2.59 |
93 | - automake >= 1.11.1 | 144 | - automake >= 1.11.1 |
@@ -115,16 +166,35 @@ Recommended autotools for compiling the Git version are: | |||
115 | fix in. | 166 | fix in. |
116 | 167 | ||
117 | [*4] We are commited to portable tools and solutions | 168 | [*4] We are commited to portable tools and solutions |
118 | where possible. While the shellscripts work with | 169 | where possible. New scripts should be Posix SH |
119 | NetBSD's sh, there's no warranty some bashisms | 170 | compatible, current and older scripts are |
120 | are leftover. | 171 | in the process of being rewritten to comply |
172 | with this requirement. | ||
173 | |||
174 | [*5] While libextractor is optional, it is recommended to | ||
175 | build gnunet against it. If you install it later, | ||
176 | you won't benefit from libextractor. | ||
177 | If you are a distributor, we recommend to split | ||
178 | LE into basis + plugins rather than making LE | ||
179 | an option as an afterthought by the user. | ||
180 | LE itself is very small, but its dependency chain | ||
181 | on first, second, third etc level can be big. | ||
182 | There is a small effect on privacy if your LE build | ||
183 | differs from one which includes all | ||
184 | plugins (plugins are build as shared objects): | ||
185 | if users publish a directory with a mixture of file | ||
186 | types (for example mpeg, jpeg, png, gif) the | ||
187 | configuration of LE could leak which plugins are | ||
188 | installed for which filetypes are not providing | ||
189 | more details. | ||
190 | However, this leak is just a minor concern. | ||
121 | 191 | ||
122 | Requirements | 192 | Requirements |
123 | ============ | 193 | ============ |
124 | 194 | ||
125 | GNUnet's directed acyclic graph (DAG) will require around 0.74 GiB | 195 | GNUnet's directed acyclic graph (DAG) will require around 0.74 GiB |
126 | Diskspace, with GNUNet itself taking around 9.2 MiB reported by the | 196 | Diskspace, with GNUNet itself taking around 8 - 9.2 MiB reported by |
127 | build on GNU Guix. | 197 | the build on GNU Guix. |
128 | 198 | ||
129 | How to install? | 199 | How to install? |
130 | =============== | 200 | =============== |
@@ -365,7 +435,7 @@ together with a description. To publish files on GNUnet, use the | |||
365 | "gnunet-publish" command. | 435 | "gnunet-publish" command. |
366 | 436 | ||
367 | 437 | ||
368 | The GTK+ (or: Gimp Toolkit) user interface is shipped separately. | 438 | The GTK user interface is shipped separately. |
369 | After installing gnunet-gtk, you can invoke the setup tool and | 439 | After installing gnunet-gtk, you can invoke the setup tool and |
370 | the file-sharing GUI with: | 440 | the file-sharing GUI with: |
371 | 441 | ||
@@ -400,13 +470,13 @@ $ make install | |||
400 | $ export $GNUNET_PREFIX=$SOMEWHERE | 470 | $ export $GNUNET_PREFIX=$SOMEWHERE |
401 | $ make check | 471 | $ make check |
402 | 472 | ||
403 | Some of the testcases require python >= 3.7, and the python modules | 473 | Some of the testcases require python >= 3.7, and the python module |
404 | "python-future" (http://python-future.org/) and "pexpect" to be installed. | 474 | "pexpect" to be installed. |
405 | If any testcases fail to pass on your system, run | 475 | If any testcases fail to pass on your system, run |
406 | "contrib/scripts/gnunet-bugreport" (in the repository) or "gnunet-bugreport" | 476 | "contrib/scripts/gnunet-bugreport" (in the repository) or "gnunet-bugreport" |
407 | when you already have GNUnet installed and report its output together with | 477 | when you already have GNUnet installed and report its output together with |
408 | information about the failing testcase(s) to the Mantis bugtracking | 478 | information about the failing testcase(s) to the Mantis bugtracking |
409 | system at https://gnunet.org/bugs/. | 479 | system at https://bugs.gnunet.org/. |
410 | 480 | ||
411 | 481 | ||
412 | Running HTTP on port 80 and HTTPS on port 443 | 482 | Running HTTP on port 80 and HTTPS on port 443 |
@@ -464,13 +534,13 @@ Further Reading | |||
464 | GNUnet or projects around GNUnet. | 534 | GNUnet or projects around GNUnet. |
465 | There are currently 2 ways to get them: | 535 | There are currently 2 ways to get them: |
466 | 536 | ||
467 | * Using git: | 537 | * Using git (NOTE: 1.1 GiB as of 2019-03-09): |
468 | git clone https://git.gnunet.org/bibliography.git | 538 | git clone https://git.gnunet.org/bibliography.git |
469 | * Using Drupal: | 539 | * Using Drupal: |
470 | https://old.gnunet.org/bibliography | 540 | https://old.gnunet.org/bibliography |
471 | 541 | ||
472 | The Drupal access will be replaced by a new interface to our | 542 | The Drupal access will be replaced by a new interface to our |
473 | bibliography in 2019. | 543 | bibliography in the foreseeable future. |
474 | 544 | ||
475 | 545 | ||
476 | Stay tuned | 546 | Stay tuned |