diff options
Diffstat (limited to 'README')
-rw-r--r-- | README | 255 |
1 files changed, 212 insertions, 43 deletions
@@ -22,7 +22,7 @@ in src/include/gnunet_util_lib.h to point to the source code of your | |||
22 | fork! | 22 | fork! |
23 | 23 | ||
24 | Additional documentation about GNUnet can be found at | 24 | Additional documentation about GNUnet can be found at |
25 | https://gnunet.org/ and in the doc/ folder. | 25 | https://gnunet.org/ and in the 'doc/' folder. |
26 | 26 | ||
27 | 27 | ||
28 | Dependencies: | 28 | Dependencies: |
@@ -30,6 +30,54 @@ Dependencies: | |||
30 | 30 | ||
31 | These are the direct dependencies for running GNUnet: | 31 | These are the direct dependencies for running GNUnet: |
32 | 32 | ||
33 | - libmicrohttpd >= 0.9.42 | ||
34 | - libgcrypt >= 1.6 | ||
35 | - libgnurl >= 7.35.0 (recommended, available from https://gnunet.org/gnurl) | ||
36 | - libcurl >= 7.35.0 (alternative to libgnurl) | ||
37 | - libunistring >= 0.9.2 | ||
38 | - gnutls >= 3.2.12 (highly recommended a gnutls linked against libunbound) | ||
39 | - libidn >= 1.0 | ||
40 | - libextractor >= 0.6.1 (highly recommended) | ||
41 | - openssl >= 1.0 (binary, used to generate X.509 certificate) | ||
42 | - libltdl >= 2.2 (part of GNU libtool) | ||
43 | - sqlite >= 3.8 (default database, required) | ||
44 | - mysql >= 5.1 (alternative to sqlite) | ||
45 | - postgres >= 9.5 (alternative to sqlite) | ||
46 | - Texinfo >= 5.2 [*1] | ||
47 | - which (for the bootstrap script) | ||
48 | - gettext | ||
49 | - zlib | ||
50 | - pkg-config | ||
51 | |||
52 | |||
53 | These are the dependencies for GNUnet's testsuite: | ||
54 | |||
55 | - Bash (optional (?), for some tests) | ||
56 | - python >= 2.7 (optional, only python 2.7 is supported) | ||
57 | - python-future >= 2.7 (optional, only python 2.7 is supported) | ||
58 | |||
59 | |||
60 | These are the optional dependencies: | ||
61 | |||
62 | - libopus >= 1.0.1 (optional, for experimental conversation tool) | ||
63 | - libpulse >= 2.0 (optional, for experimental conversation tool) | ||
64 | - libogg >= 1.3.0 (optional, for experimental conversation tool) | ||
65 | - libnss (optional, certtool binary (for convenient installation of GNS proxy)) | ||
66 | - python-future (optional, for some testcases and utilities) | ||
67 | - python-zbar >= 0.10 (optional, for gnunet-qr) | ||
68 | - TeX Live >= 2012 (optional, for gnunet-bcd[*]) | ||
69 | - libglpk >= 4.45 (optional, for experimental code) | ||
70 | - perl5 (optional, for some utilities) | ||
71 | - python >= 2.7 (optional, for gnunet-qr, only python 2.7 is supported) | ||
72 | - bluez (optional, for bluetooth support) | ||
73 | - miniupnpc | ||
74 | - libpbc >= 0.5.14 (optional, for Attribute-Based Encryption and Identity Provider functionality) | ||
75 | - libgabe (optional, for Attribute-Based Encryption and Identity Provider functionality, | ||
76 | from https://github.com/schanzen/libgabe) | ||
77 | |||
78 | ======= | ||
79 | These are the direct dependencies for running GNUnet: | ||
80 | |||
33 | - libmicrohttpd >= 0.9.52 | 81 | - libmicrohttpd >= 0.9.52 |
34 | - libgcrypt >= 1.6 | 82 | - libgcrypt >= 1.6 |
35 | - libgnurl >= 7.35.0 (available from https://gnunet.org/gnurl) | 83 | - libgnurl >= 7.35.0 (available from https://gnunet.org/gnurl) |
@@ -51,53 +99,134 @@ These are the direct dependencies for running GNUnet: | |||
51 | - libglpk >= 4.45 (optional for experimental code) | 99 | - libglpk >= 4.45 (optional for experimental code) |
52 | 100 | ||
53 | Recommended autotools for compiling the git version are: | 101 | Recommended autotools for compiling the git version are: |
54 | - autoconf >= 2.59 | 102 | |
55 | - automake >= 1.11.1 | 103 | - autoconf >= 2.59 |
56 | - libtool >= 2.2 | 104 | - automake >= 1.11.1 |
105 | - libtool >= 2.2 | ||
57 | 106 | ||
58 | 107 | ||
59 | [*] Mandatory for compiling the info output of the documentation, | 108 | [*] Mandatory for compiling the info output of the documentation, |
60 | a limited subset ('texlive-tiny' in Guix) is enough. | 109 | a limited subset ('texlive-tiny' in Guix) is enough. |
110 | |||
111 | [*1] The default configuration is to build the info output of the | ||
112 | documentation, and therefore require texinfo. You can pass | ||
113 | '--disable-documentation' to the configure script to change this. | ||
114 | |||
115 | Requirements | ||
116 | ============ | ||
61 | 117 | ||
62 | [*1] The default configuration is to build the info output of the documentation, | 118 | GNUnet's directed acyclic graph (DAG) will require around 0.74 GiB |
63 | and therefore require texinfo. You can pass --disable-documentation to | 119 | Diskspace, with GNUNet itself taking around 9.2 MiB reported by the |
64 | the configure script to change this. | 120 | build on GNU Guix. |
65 | 121 | ||
66 | How to install? | 122 | How to install? |
67 | =============== | 123 | =============== |
68 | 124 | ||
69 | The fastest way is to use a binary package if it is available for your | 125 | |
70 | system. For a more detailed description, read the installation | 126 | binary packages |
71 | instructions on the webpage at https://gnunet.org/installation. | 127 | ~~~~~~~~~~~~~~~ |
128 | |||
129 | We recommend to use binary packages provided by your Operating System's | ||
130 | package manager. GNUnet is reportedly available for at least: | ||
131 | |||
132 | Gentoo (via the 'youbroketheinternet' overlay), GNU Guix, Nix, | ||
133 | Debian, ALT Linux, Archlinux, Deepin, Devuan, Hyperbola, Kali Linux, | ||
134 | LEDE/OpenWRT, Manjaro, Parabola, Pardus, Parrot, PureOS, Raspbian, | ||
135 | Rosa, Trisquel, and Ubuntu. | ||
136 | |||
137 | If GNUnet is available for your Operating System and it is missing, | ||
138 | send us feedback so that we can add it to this list. Furthermore, if | ||
139 | you are interested in packaging GNUnet for your Operating System, | ||
140 | get in touch with us at gnunet-developers@gnu.org if you require | ||
141 | help with this job. | ||
142 | |||
143 | If you were using an Operating System with the apt package manager, | ||
144 | GNUnet could be installed as simple as: | ||
145 | |||
146 | $ apt-get install gnunet | ||
147 | |||
72 | Generic installation instructions are in the INSTALL file in this | 148 | Generic installation instructions are in the INSTALL file in this |
73 | directory. | 149 | directory. |
74 | 150 | ||
151 | Scope of Operating System support | ||
152 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
153 | We actively support GNUnet on a broad range of Free Software Operating | ||
154 | Systems. | ||
155 | |||
156 | For proprietary Operating Systems, like for example Microsoft Windows | ||
157 | or Apple OS X, we accept patches if they don't break anything for | ||
158 | other Operating Systems. | ||
159 | If you are implementing support for a proprietary Operating System, | ||
160 | you should be aware that progress in our codebase could break | ||
161 | functionality on your OS and cause unpredicted behavior we can | ||
162 | not test. However, we do not break support on Operating Systems | ||
163 | with malicious intent. | ||
164 | Regressions which do occur on these Operating Systems are 3rd | ||
165 | class issues and we expect users and developers of these | ||
166 | Operating Systems to send proposed patches to fix regressions. | ||
167 | |||
168 | For more information about our stand on some of the motivating | ||
169 | points here, read the 'Philosophy' Chapter of our handbook. | ||
170 | |||
171 | Building GNUnet from source | ||
172 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
173 | |||
174 | IMPORTANT: You can read further notes about compilation from source in | ||
175 | the 'doc/FILENAME' document, which includes notes about specific | ||
176 | requirements for operating systems aswell. If you are a package | ||
177 | mantainer for an Operating System we invite you to add your notes if | ||
178 | you feel it is necessary and can not be covered in your Operating | ||
179 | System's documentation. | ||
180 | |||
181 | |||
182 | Some Operating Systems currently require you to build GNUnet from | ||
183 | source. | ||
184 | If you are building GNUnet from source you are either interested | ||
185 | in furthering its development (we have further notes for developer | ||
186 | builds in our 'GNUnet Developer Handbook') or your Operating System | ||
187 | simply lacks support for a binary package at the moment. | ||
188 | Two prominent examples which currently lack cross-compilation | ||
189 | support in GNUnet (and native binaries) are MS Windows and Apple macOS. | ||
190 | For macOS we recommend you to do the build process via Homebrew and a | ||
191 | recent XCode installation. | ||
192 | Compilation for MS Windows can ... | ||
193 | |||
75 | Note that some functions of GNUnet require "root" access. GNUnet will | 194 | Note that some functions of GNUnet require "root" access. GNUnet will |
76 | install (tiny) SUID binaries for those functions is you run "make | 195 | install (tiny) SUID binaries for those functions is you run "make |
77 | install" as root. If you do not, GNUnet will still work, but some | 196 | install" as root. If you do not, GNUnet will still work, but some |
78 | functionality will not be available (including certain forms of NAT | 197 | functionality will not be available (including certain forms of NAT |
79 | traversal). | 198 | traversal). |
80 | 199 | ||
81 | GNUnet requires the GNU MP library (http://www.gnu.org/software/gmp/) | 200 | GNUnet requires the GNU MP library (https://www.gnu.org/software/gmp/) |
82 | and libgcrypt (http://www.gnupg.org/). You can specify the path to | 201 | and libgcrypt (https://www.gnupg.org/). You can specify the path to |
83 | libgcrypt by passing "--with-gcrypt=PATH" to configure. You will also | 202 | libgcrypt by passing "--with-gcrypt=PATH" to configure. You will also |
84 | need either sqlite (http://www.sqlite.org/), MySQL | 203 | need either sqlite (http://www.sqlite.org/), MySQL |
85 | (http://www.mysql.org/) or PostGres (http://www.postgres.org/). | 204 | (http://www.mysql.org/) or PostGres (http://www.postgres.org/). |
86 | 205 | ||
87 | If you install from source, you need to install GNU libextractor first | 206 | If you install from source, you need to install GNU libextractor first |
88 | (download from http://www.gnu.org/software/libextractor/). We also | 207 | (download from https://www.gnu.org/software/libextractor/). We also |
89 | recommend installing GNU libmicrohttpd (download from | 208 | recommend installing GNU libmicrohttpd (download from |
90 | http://www.gnu.org/software/libmicrohttpd/). Then you can start the | 209 | https://www.gnu.org/software/libmicrohttpd/). Furthermore we recommend |
91 | actual GNUnet compilation and installation process with: | 210 | libgnurl (from https://gnunet.org/gnurl). |
211 | Then you can start the actual GNUnet compilation process with: | ||
212 | |||
92 | 213 | ||
93 | $ export GNUNET_PREFIX=/usr/local/lib # or other directory of your choice | 214 | $ export GNUNET_PREFIX=/usr/local/lib # or other directory of your choice |
94 | # addgroup gnunetdns | 215 | # addgroup gnunetdns |
95 | # adduser --system --home "/var/lib/gnunet" --group gnunet --shell /bin/sh | 216 | # adduser --system --home "/var/lib/gnunet" --group gnunet --shell /bin/sh |
96 | # ./configure --prefix=$GNUNET_PREFIX/.. --with-extractor=$LE_PREFIX | 217 | # ./configure --prefix=$GNUNET_PREFIX/.. --with-extractor=$LE_PREFIX |
97 | $ make | 218 | $ make |
219 | |||
220 | And finally install GNUnet with: | ||
221 | |||
98 | # make install | 222 | # make install |
223 | |||
224 | Complete the process by either adjusting one of our example service files | ||
225 | in 'contrib/services' or by running: | ||
226 | |||
99 | # sudo -u gnunet gnunet-arm -s | 227 | # sudo -u gnunet gnunet-arm -s |
100 | 228 | ||
229 | |||
101 | Note that running the 'configure' and 'make install' steps as | 230 | Note that running the 'configure' and 'make install' steps as |
102 | root (or with sudo) is required as some parts of the installation | 231 | root (or with sudo) is required as some parts of the installation |
103 | require the creation of SUID binaries. The installation will | 232 | require the creation of SUID binaries. The installation will |
@@ -131,7 +260,7 @@ certain binaries that require additional priviledges will not be | |||
131 | installed properly (and autonomous NAT traversal, WLAN, DNS/GNS and | 260 | installed properly (and autonomous NAT traversal, WLAN, DNS/GNS and |
132 | the VPN will then not work). | 261 | the VPN will then not work). |
133 | 262 | ||
134 | If you run 'configure' and 'make install' as root or use the SUDO | 263 | If you run 'configure' and 'make install' as root or use the '--with-sudo' |
135 | option, GNUnet's build system will install "libnss_gns*" libraries to | 264 | option, GNUnet's build system will install "libnss_gns*" libraries to |
136 | "/lib/" regardless (!) of the $GNUNET_PREFIX you might have specified, | 265 | "/lib/" regardless (!) of the $GNUNET_PREFIX you might have specified, |
137 | as those libraries must be in "/lib/". If you are packaging GNUnet | 266 | as those libraries must be in "/lib/". If you are packaging GNUnet |
@@ -139,14 +268,14 @@ for binary distribution, this may cause your packaging script to miss | |||
139 | those plugins, so you might need to do some additional manual work to | 268 | those plugins, so you might need to do some additional manual work to |
140 | include those libraries in your binary package(s). Similarly, if you | 269 | include those libraries in your binary package(s). Similarly, if you |
141 | want to use the GNUnet naming system and did NOT run GNUnet's 'make | 270 | want to use the GNUnet naming system and did NOT run GNUnet's 'make |
142 | install' process with SUDO rights, the libraries will be installed to | 271 | install' process with sudo rights, the libraries will be installed to |
143 | "$GNUNET_PREFIX" and you will have to move them to "/lib/" | 272 | "$GNUNET_PREFIX" and you will have to move them to "/lib/" |
144 | manually. | 273 | manually. |
145 | 274 | ||
146 | Finally, if you are compiling the code from git, you have to | 275 | Finally, if you are compiling the code from git, you have to |
147 | run ". bootstrap" before ./configure. If you receive an error during | 276 | run "sh ./bootstrap" before running "./configure". If you receive an error during |
148 | the running of ". bootstrap" that looks like "macro `AM_PATH_GTK' not | 277 | the running of "sh ./bootstrap" that looks like "macro `AM_PATH_GTK' |
149 | found in library", you may need to run aclocal by hand with the -I | 278 | not found in library", you may need to run aclocal by hand with the -I |
150 | option, pointing to your aclocal m4 macros, i.e. | 279 | option, pointing to your aclocal m4 macros, i.e. |
151 | 280 | ||
152 | $ aclocal -I /usr/local/share/aclocal | 281 | $ aclocal -I /usr/local/share/aclocal |
@@ -165,7 +294,7 @@ configuration for the peer. gnunet-setup can be used to configure and | |||
165 | test (!) the network settings, choose which applications should be run | 294 | test (!) the network settings, choose which applications should be run |
166 | and configure databases. Other options you might want to control | 295 | and configure databases. Other options you might want to control |
167 | include system limitations (such as disk space consumption, bandwidth, | 296 | include system limitations (such as disk space consumption, bandwidth, |
168 | etc.). The resulting configuration files are human-readable and can | 297 | etc). The resulting configuration files are human-readable and can |
169 | theoretically be created or edited by hand. | 298 | theoretically be created or edited by hand. |
170 | 299 | ||
171 | gnunet-setup is a separate download and requires somewhat recent | 300 | gnunet-setup is a separate download and requires somewhat recent |
@@ -181,10 +310,17 @@ configuration file should be located in "~/.config/gnunet.conf" or its | |||
181 | location can be specified by giving the "-c" option to the respective | 310 | location can be specified by giving the "-c" option to the respective |
182 | GNUnet application. | 311 | GNUnet application. |
183 | 312 | ||
313 | For more information about the configuration (as well as usage) refer | ||
314 | to the 'GNUnet User Handbook' chapter of the documentation, included | ||
315 | in this software distribution. | ||
316 | |||
184 | 317 | ||
185 | Usage | 318 | Usage |
186 | ===== | 319 | ===== |
187 | 320 | ||
321 | For detailed usage notes, instructions and examples, refer to the | ||
322 | included 'GNUnet User Handbook'. | ||
323 | |||
188 | First, you must obtain an initial list of GNUnet hosts. Knowing a | 324 | First, you must obtain an initial list of GNUnet hosts. Knowing a |
189 | single peer is sufficient since after that GNUnet propagates | 325 | single peer is sufficient since after that GNUnet propagates |
190 | information about other peers. Note that the default configuration | 326 | information about other peers. Note that the default configuration |
@@ -210,9 +346,9 @@ UDP or WLAN will discover each other automatically (if they are in the | |||
210 | vicinity of each other) using broadcasts (IPv4/WLAN) or multicasts | 346 | vicinity of each other) using broadcasts (IPv4/WLAN) or multicasts |
211 | (IPv6). | 347 | (IPv6). |
212 | 348 | ||
213 | The local node is started using "gnunet-arm -s". GNUnet should run | 349 | The local node is started using "gnunet-arm -s". We recommend to run |
214 | 24/7 if you want to maximize your anonymity, as this makes partitioning | 350 | GNUnet 24/7 if you want to maximize your anonymity, as this makes |
215 | attacks harder. | 351 | partitioning attacks harder. |
216 | 352 | ||
217 | Once your peer is running, you should then be able to access GNUnet | 353 | Once your peer is running, you should then be able to access GNUnet |
218 | using the shell: | 354 | using the shell: |
@@ -229,42 +365,47 @@ together with a description. To publish files on GNUnet, use the | |||
229 | "gnunet-publish" command. | 365 | "gnunet-publish" command. |
230 | 366 | ||
231 | 367 | ||
232 | The GTK user interface is shipped separately. After downloading and | 368 | The GTK+ (or: Gimp Toolkit) user interface is shipped separately. |
233 | installing gnunet-gtk, you can invoke the setup tool and the | 369 | After installing gnunet-gtk, you can invoke the setup tool and |
234 | file-sharing GUI with: | 370 | the file-sharing GUI with: |
235 | 371 | ||
236 | $ gnunet-setup | 372 | $ gnunet-setup |
237 | $ gnunet-fs-gtk | 373 | $ gnunet-fs-gtk |
238 | 374 | ||
239 | For further documentation, see our webpage. | 375 | For further documentation, see our webpage or the 'GNUnet User Handbook', |
376 | included in this software distribution. | ||
240 | 377 | ||
241 | 378 | ||
242 | Hacking GNUnet | 379 | Hacking GNUnet |
243 | ============== | 380 | ============== |
244 | 381 | ||
245 | Contributions are welcome, please submit bugs to | 382 | Contributions are welcome. Please submit bugs you find to |
246 | https://gnunet.org/bugs/. Please make sure to run contrib/report.sh | 383 | https://gnunet.org/bugs/. |
384 | Please make sure to run the script "contrib/scripts/gnunet-bugreport" | ||
247 | and include the output with your bug reports. More about how to | 385 | and include the output with your bug reports. More about how to |
248 | report bugs can be found in the GNUnet FAQ on the webpage. Submit | 386 | report bugs can be found in the GNUnet FAQ on the webpage. Submit |
249 | patches via E-Mail to gnunet-developers@gnu.org. | 387 | patches via E-Mail to gnunet-developers@gnu.org, formated with |
388 | `git format-patch`. | ||
250 | 389 | ||
251 | In order to run the unit tests with by hand (instead of using | 390 | In order to run the unit tests by hand (instead of using "make check"), |
252 | "make check"), you need to | 391 | you need to set the environment variable "GNUNET_PREFIX" to the |
253 | set an environment variable ("GNUNET_PREFIX") to the directory | 392 | directory where GNUnet's libraries are installed. |
254 | where GNUnet's libraries are installed. | 393 | Before running any testcases, you must complete the installation. |
255 | Also, before running any testcases, you must | 394 | |
256 | complete the installation first. Quick summary: | 395 | Quick summary: |
257 | 396 | ||
258 | $ ./configure --prefix=$SOMEWHERE | 397 | $ ./configure --prefix=$SOMEWHERE |
259 | $ make | 398 | $ make |
260 | $ make install | 399 | $ make install |
400 | $ export $GNUNET_PREFIX=$SOMEWHERE | ||
261 | $ make check | 401 | $ make check |
262 | 402 | ||
263 | Some of the testcases require python >= 2.6 (+ the python module "futures") | 403 | Some of the testcases require python >= 2.7, and the python modules |
264 | and pexpect to be installed. If any testcases fail to pass on your system, run | 404 | "python-future" (http://python-future.org/) and "pexpect" to be installed. |
265 | "contrib/scripts/report.sh" (in the repository) or "gnunet-bugreport" | 405 | If any testcases fail to pass on your system, run |
266 | when you already have GNUnet installed and report the output together with | 406 | "contrib/scripts/gnunet-bugreport" (in the repository) or "gnunet-bugreport" |
267 | information about the failing testcase to the Mantis bugtracking | 407 | when you already have GNUnet installed and report its output together with |
408 | information about the failing testcase(s) to the Mantis bugtracking | ||
268 | system at https://gnunet.org/bugs/. | 409 | system at https://gnunet.org/bugs/. |
269 | 410 | ||
270 | 411 | ||
@@ -304,6 +445,34 @@ throttled by ISPs that dislike P2P. Details for configuring the | |||
304 | reverse proxy are documented on our website. | 445 | reverse proxy are documented on our website. |
305 | 446 | ||
306 | 447 | ||
448 | Further Reading | ||
449 | =============== | ||
450 | |||
451 | * Documentation | ||
452 | |||
453 | A preliminary rendering of the new GNUnet manual is deployed at | ||
454 | |||
455 | https://d.n0.is/pub/doc/gnunet/manual/ | ||
456 | |||
457 | we plan to have a complete new gnunet.org up and running in 2019. | ||
458 | This website output exists as a convenience solution until then. | ||
459 | |||
460 | * Academia / papers | ||
461 | |||
462 | In almost 20 years various people in our community have written and | ||
463 | collected a good number of papers which have been implemented in | ||
464 | GNUnet or projects around GNUnet. | ||
465 | There are currently 2 ways to get them: | ||
466 | |||
467 | * Using git: | ||
468 | git clone https://gnunet.org/git/bibliography.git | ||
469 | * Using Drupal: | ||
470 | https://gnunet.org/bibliography | ||
471 | |||
472 | The Drupal access will be replaced by a new interface to our | ||
473 | bibliography in 2019. | ||
474 | |||
475 | |||
307 | Stay tuned | 476 | Stay tuned |
308 | ========== | 477 | ========== |
309 | 478 | ||