diff options
Diffstat (limited to 'README')
-rw-r--r-- | README | 168 |
1 files changed, 93 insertions, 75 deletions
@@ -5,11 +5,13 @@ ToC | |||
5 | 5 | ||
6 | * ToC | 6 | * ToC |
7 | * What is GNUnet? | 7 | * What is GNUnet? |
8 | * Joining GNU | ||
8 | * Dependencies | 9 | * Dependencies |
9 | o direct dependencies | 10 | o Build tools |
10 | o test suite dependencies | 11 | o Dependencies of GNUnet |
11 | o optional dependencies | 12 | o Dependencies of optional components/functionality |
12 | o autotools | 13 | o Test suite dependencies |
14 | o Recommended developer tools | ||
13 | * Notes on setuid | 15 | * Notes on setuid |
14 | * Scope of Operating System support | 16 | * Scope of Operating System support |
15 | * How to install | 17 | * How to install |
@@ -23,6 +25,7 @@ ToC | |||
23 | * Further Reading | 25 | * Further Reading |
24 | * Stay tuned | 26 | * Stay tuned |
25 | 27 | ||
28 | |||
26 | What is GNUnet? | 29 | What is GNUnet? |
27 | =============== | 30 | =============== |
28 | 31 | ||
@@ -49,6 +52,17 @@ Online documentation is provided at | |||
49 | 'https://docs.gnunet.org' and 'https://tutorial.gnunet.org'. | 52 | 'https://docs.gnunet.org' and 'https://tutorial.gnunet.org'. |
50 | 53 | ||
51 | 54 | ||
55 | Joining GNU | ||
56 | =========== | ||
57 | |||
58 | This is a GNU program, developed by the GNU Project and part of the | ||
59 | GNU Operating System. If you are the author of an awesome program and | ||
60 | want to join us in writing Free Software, please consider making it an | ||
61 | official GNU program and become a GNU maintainer. You can find | ||
62 | instructions on how to do so at http://www.gnu.org/help/evaluation. | ||
63 | We are looking forward to hacking with you! | ||
64 | |||
65 | |||
52 | Dependencies: | 66 | Dependencies: |
53 | ============= | 67 | ============= |
54 | 68 | ||
@@ -56,50 +70,82 @@ The dependencies for building GNUnet will require around 0.74 GiB | |||
56 | diskspace. GNUnet itself will require 8 - 9.2 MiB depending on | 70 | diskspace. GNUnet itself will require 8 - 9.2 MiB depending on |
57 | configuration. | 71 | configuration. |
58 | 72 | ||
59 | These are the direct dependencies for running GNUnet: | 73 | Build tools for compiling GNUnet from source: |
60 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | 74 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
75 | |||
76 | - gcc or clang | ||
77 | - autoconf >= 2.69 (building from git) | ||
78 | - automake >= 1.11.1 (building from git) | ||
79 | - recutils >= 1.0 (building from git) | ||
80 | - libtool >= 2.2 | ||
81 | - makeinfo >= 4.8 | ||
82 | - make[*3] | ||
83 | - pkgconf or pkg-config | ||
84 | - sphinx | ||
85 | - sphinx-rtd-theme | ||
86 | - sphinx-multiversion | ||
87 | |||
88 | Direct dependencies of GNUnet: | ||
89 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
61 | 90 | ||
62 | - Bash (for some scripts) | 91 | - Bash (for some scripts) |
63 | - gettext | 92 | - gettext |
64 | - gnutls >= 3.2.12 (highly recommended a gnutls | 93 | - gnutls >= 3.2.12 (highly recommended a gnutls |
65 | linked against libunbound) | 94 | linked against libunbound) |
66 | - curl (ideally built against gnutls) or gnurl: | 95 | - libcurl >= 7.85.0 (ideally built against gnutls) |
67 | * libgnurl >= 7.35.0 (recommended, available from | ||
68 | https://gnunet.org/en/gnurl.html) | ||
69 | or | ||
70 | * libcurl >= 7.35.0 (alternative to libgnurl) | ||
71 | - libgcrypt >= 1.6 | 96 | - libgcrypt >= 1.6 |
97 | - libgmp any (is also an indirect dependency of gcrypt) | ||
72 | - libunistring >= 0.9.2 | 98 | - libunistring >= 0.9.2 |
73 | - libidn: | 99 | - libidn: |
74 | * libidn2 (prefered) | 100 | * libidn2 (preferred) |
75 | or | 101 | or |
76 | * libidn >= 1.0 | 102 | * libidn >= 1.0 |
77 | - libmicrohttpd >= 0.9.63 | 103 | - libmicrohttpd >= 0.9.63 |
78 | - libjansson | 104 | - libjansson |
79 | - makeinfo >= 4.8 | ||
80 | - make[*3] | ||
81 | - nss (certutil binary, for | 105 | - nss (certutil binary, for |
82 | gnunet-gns-proxy-setup-ca) | 106 | gnunet-gns-proxy-setup-ca) |
83 | - openssl >= 1.0 (binary, used to generate | 107 | - openssl >= 1.0 (binary, used to generate |
84 | X.509 certificate | 108 | X.509 certificate |
85 | for gnunet-gns-proxy-setup-ca) | 109 | for gnunet-gns-proxy-setup-ca) |
86 | - pkgconf or pkg-config | ||
87 | - A Posix shell (for some scripts) | ||
88 | - Texinfo >= 5.2 [*1] | ||
89 | - libltdl >= 2.2 (part of GNU libtool) | 110 | - libltdl >= 2.2 (part of GNU libtool) |
90 | - 1 or more databases: | 111 | - sqlite >= 3.35.0 (default database, required) |
91 | * sqlite >= 3.8 (default database, required) | ||
92 | and/or | ||
93 | * mysql >= 5.1 (alternative to sqlite) | ||
94 | and/or | ||
95 | * postgres >= 9.5 (alternative to sqlite) | ||
96 | - which (contrib/apparmor(?), gnunet-bugreport, | 112 | - which (contrib/apparmor(?), gnunet-bugreport, |
97 | and possibly more) | 113 | and possibly more) |
98 | - zlib | 114 | - zlib |
99 | - libsodium >= 1.0.17 (for elliptic curve cryptography) | 115 | - libsodium >= 1.0.17 (for elliptic curve cryptography) |
116 | - certtool (gnutls or openssl) (certtool binary (for convenient | ||
117 | installation of GNS proxy)) | ||
100 | 118 | ||
101 | These are the dependencies for GNUnet's testsuite: | 119 | Dependencies of optional components/functionality: |
102 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | 120 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
121 | - Database plugins (alternatives to sqlite): | ||
122 | * postgres >= 9.5 | ||
123 | - Transport plugins: | ||
124 | * bluez (bluetooth transport) | ||
125 | - Conversation service: | ||
126 | * libopus >= 1.0.1 | ||
127 | * libpulse >= 2.0 | ||
128 | * libogg >= 1.3.0 | ||
129 | - File-sharing metadata (highly recommended[*5]): | ||
130 | * libextractor >= 0.6.1 | ||
131 | - NAT uPnP support: | ||
132 | * miniupnpc | ||
133 | - gnunet-qr (Read/write GNUnet URIs from/to QR codes): | ||
134 | * libzbar >= 0.10 | ||
135 | - gnunet-bcd (GNS business card generator): | ||
136 | * TeX Live >= 2012 (for gnunet-bcd[*]) | ||
137 | - Documentation: | ||
138 | * TeX Live >= 2012 (for gnunet-bcd[*]) | ||
139 | |||
140 | - PABC credential support | ||
141 | * libpabc any (for re:claimID zero-knowledge privacy | ||
142 | credentials) | ||
143 | - re:claimID OpenID Connect plugin | ||
144 | * libjose any (for re:claimID OpenID Connect support) | ||
145 | |||
146 | |||
147 | Additional dependencies to run the GNUnet testsuite: | ||
148 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
103 | 149 | ||
104 | - Bash (for some tests[*4]) | 150 | - Bash (for some tests[*4]) |
105 | - A Posix Shell (for some tests) | 151 | - A Posix Shell (for some tests) |
@@ -114,65 +160,32 @@ These are the dependencies for GNUnet's testsuite: | |||
114 | - which | 160 | - which |
115 | 161 | ||
116 | 162 | ||
117 | These are the optional dependencies: | 163 | Recommended software for developer tools: |
118 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | 164 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
119 | 165 | ||
120 | - awk (for linting tests) | 166 | - awk (for linting tests) |
121 | - Bash (for Docker and Vagrant) | 167 | - Bash (for Docker and Vagrant) |
122 | - bluez (for bluetooth support) | ||
123 | - grof (for linting of man pages) | 168 | - grof (for linting of man pages) |
124 | - libextractor >= 0.6.1 (highly recommended[*5]) | ||
125 | - libopus >= 1.0.1 (for conversation tool) | ||
126 | - libpulse >= 2.0 (for conversation tool) | ||
127 | - libogg >= 1.3.0 (for conversation tool) | ||
128 | - libnss (certtool binary (for convenient | ||
129 | installation of GNS proxy)) | ||
130 | - libzbar >= 0.10 (for gnunet-qr) | ||
131 | - libpbc >= 0.5.14 (for Attribute-Based Encryption and | ||
132 | Identity Provider functionality) | ||
133 | - libgabe (for Attribute-Based Encryption and | ||
134 | Identity Provider functionality, from | ||
135 | https://github.com/schanzen/libgabe) | ||
136 | - mandoc (for linting of man pages, generation of | 169 | - mandoc (for linting of man pages, generation of |
137 | html output of man pages (not part of | 170 | html output of man pages (not part of |
138 | the regular build)) | 171 | the regular build)) |
139 | - miniupnpc | ||
140 | - perl5 (for some utilities) | 172 | - perl5 (for some utilities) |
141 | - TeX Live >= 2012 (for gnunet-bcd[*]) | ||
142 | - texi2mdoc (for automatic mdoc generation [*2], not | ||
143 | the texi2mdoc script distributed with | ||
144 | autogen but the texi2mdoc C application) | ||
145 | |||
146 | Recommended autotools for compiling the Git version are: | ||
147 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
148 | |||
149 | - autoconf >= 2.59 | ||
150 | - automake >= 1.11.1 | ||
151 | - libtool >= 2.2 | ||
152 | 173 | ||
153 | 174 | ||
154 | [*] Mandatory for compiling the info output of the documentation, | 175 | [*] Mandatory for compiling the info output of the documentation, |
155 | a limited subset ('texlive-tiny' in Guix) is enough. | 176 | a limited subset ('texlive-tiny' in Guix) is enough. |
156 | 177 | ||
157 | [*1] The default configuration is to build the info output of the | 178 | [*1] The default configuration is to build the info output of the |
158 | documentation, and therefore require texinfo. You can pass | 179 | documentation, and therefore require sphinx. You can pass |
159 | '--disable-documentation' to the configure script to change this. | 180 | '--disable-documentation' to the configure script to change this. |
160 | 181 | ||
161 | [*2] If you still prefer to have documentation, you can pass | ||
162 | '--enable-texi2mdoc-generation' to build the mdocml ("mandoc") | ||
163 | documentation (experimental stages in gnunet). | ||
164 | If this proves to be reliable, we will | ||
165 | include the mdocml output in the release tarballs. | ||
166 | Contrary to the name, texi2mdoc does not require Texinfo, | ||
167 | It is a standalone ISO C utility. | ||
168 | |||
169 | [*3] GNU make introduced the != operator in version 4.0. | 182 | [*3] GNU make introduced the != operator in version 4.0. |
170 | GNU make was released in october 2013, reasonable to | 183 | GNU make was released in october 2013, reasonable to |
171 | be widespread by now. If this is not working out for | 184 | be widespread by now. If this is not working out for |
172 | you, open a bug so that we can get a more portable | 185 | you, open a bug so that we can get a more portable |
173 | fix in. | 186 | fix in. |
174 | 187 | ||
175 | [*4] We are commited to portable tools and solutions | 188 | [*4] We are committed to portable tools and solutions |
176 | where possible. New scripts should be Posix sh | 189 | where possible. New scripts should be Posix sh |
177 | compatible, current and older scripts are | 190 | compatible, current and older scripts are |
178 | in the process of being rewritten to comply | 191 | in the process of being rewritten to comply |
@@ -203,7 +216,7 @@ For a correct functionality depending on the host OS, you need | |||
203 | to run the equivalent of these steps after installation. | 216 | to run the equivalent of these steps after installation. |
204 | Replace $(DESTDIR)$(libexecdir) with the appropriate paths, | 217 | Replace $(DESTDIR)$(libexecdir) with the appropriate paths, |
205 | for example /usr/local/lib/gnunet/libexec/. Note that this | 218 | for example /usr/local/lib/gnunet/libexec/. Note that this |
206 | obviously must be run as priviledged user. | 219 | obviously must be run as privileged user. |
207 | 220 | ||
208 | chown root:root $(DESTDIR)$(libexecdir)/gnunet-helper-vpn | 221 | chown root:root $(DESTDIR)$(libexecdir)/gnunet-helper-vpn |
209 | chmod u+s $(DESTDIR)$(libexecdir)/gnunet-helper-vpn | 222 | chmod u+s $(DESTDIR)$(libexecdir)/gnunet-helper-vpn |
@@ -214,9 +227,9 @@ chmod u+s $(DESTDIR)$(libexecdir)/gnunet-helper-transport-bluetooth | |||
214 | chown root $(DESTDIR)$(libexecdir)/gnunet-helper-dns | 227 | chown root $(DESTDIR)$(libexecdir)/gnunet-helper-dns |
215 | chgrp $(GNUNETDNS_GROUP) $(DESTDIR)$(libexecdir)/gnunet-helper-dns | 228 | chgrp $(GNUNETDNS_GROUP) $(DESTDIR)$(libexecdir)/gnunet-helper-dns |
216 | chmod 4750 $(DESTDIR)$(libexecdir)/gnunet-helper-dns | 229 | chmod 4750 $(DESTDIR)$(libexecdir)/gnunet-helper-dns |
217 | chgrp $(GNUNETDNS_GROUP) $(DESTDIR)$(libexecdir)/gnunet-helper-dns | 230 | chgrp $(GNUNETDNS_GROUP) $(DESTDIR)$(libexecdir)/gnunet-service-dns |
218 | chown gnunet:$(GNUNETDNS_GROUP) $(DESTDIR)$(libexecdir)/gnunet-helper-dns | 231 | chown gnunet:$(GNUNETDNS_GROUP) $(DESTDIR)$(libexecdir)/gnunet-service-dns |
219 | chmod 2750 $(DESTDIR)$(libexecdir)/gnunet-helper-dns | 232 | chmod 2750 $(DESTDIR)$(libexecdir)/gnunet-service-dns |
220 | chown root:root $(DESTDIR)$(libexecdir)/gnunet-helper-exit | 233 | chown root:root $(DESTDIR)$(libexecdir)/gnunet-helper-exit |
221 | chmod u+s $(DESTDIR)$(libexecdir)/gnunet-helper-exit | 234 | chmod u+s $(DESTDIR)$(libexecdir)/gnunet-helper-exit |
222 | chown root:root $(DESTDIR)$(libexecdir)/gnunet-helper-nat-server | 235 | chown root:root $(DESTDIR)$(libexecdir)/gnunet-helper-nat-server |
@@ -279,8 +292,8 @@ Building GNUnet from source | |||
279 | 292 | ||
280 | IMPORTANT: You can read further notes about compilation from source in | 293 | IMPORTANT: You can read further notes about compilation from source in |
281 | the handbook under doc/handbook/, which includes notes about specific | 294 | the handbook under doc/handbook/, which includes notes about specific |
282 | requirements for operating systems aswell. If you are a package | 295 | requirements for operating systems as well. If you are a package |
283 | mantainer for an Operating System we invite you to add your notes if | 296 | maintainer for an Operating System we invite you to add your notes if |
284 | you feel it is necessary and can not be covered in your Operating | 297 | you feel it is necessary and can not be covered in your Operating |
285 | System's documentation. | 298 | System's documentation. |
286 | 299 | ||
@@ -299,9 +312,7 @@ traversal). | |||
299 | 312 | ||
300 | GNUnet requires the GNU MP library (https://www.gnu.org/software/gmp/) | 313 | GNUnet requires the GNU MP library (https://www.gnu.org/software/gmp/) |
301 | and libgcrypt (https://www.gnupg.org/). You can specify the path to | 314 | and libgcrypt (https://www.gnupg.org/). You can specify the path to |
302 | libgcrypt by passing "--with-gcrypt=PATH" to configure. You will also | 315 | libgcrypt by passing "--with-gcrypt=PATH" to configure. |
303 | need either sqlite (http://www.sqlite.org/), MySQL | ||
304 | (http://www.mysql.org/) or PostGres (http://www.postgres.org/). | ||
305 | 316 | ||
306 | If you install from source, you need to install GNU libextractor first | 317 | If you install from source, you need to install GNU libextractor first |
307 | (download from https://www.gnu.org/software/libextractor/). We also | 318 | (download from https://www.gnu.org/software/libextractor/). We also |
@@ -328,7 +339,7 @@ in 'contrib/services' or by running: | |||
328 | 339 | ||
329 | 340 | ||
330 | Note that you must read paragraph "Notes on setuid", which documents steps you | 341 | Note that you must read paragraph "Notes on setuid", which documents steps you |
331 | have to follow after the installation, as a priviledged user. We require some | 342 | have to follow after the installation, as a privileged user. We require some |
332 | binaries to be setuid. The most portable approach across all supported | 343 | binaries to be setuid. The most portable approach across all supported |
333 | platforms and targets is to let this be handled manually. | 344 | platforms and targets is to let this be handled manually. |
334 | The installation will work if you do not run these steps as root, but some | 345 | The installation will work if you do not run these steps as root, but some |
@@ -366,7 +377,7 @@ $GNUNET_PREFIX you might have specified, as those libraries must be in | |||
366 | your packaging script to miss those plugins, so you might need to do some | 377 | your packaging script to miss those plugins, so you might need to do some |
367 | additional manual work to include those libraries in your binary package(s). | 378 | additional manual work to include those libraries in your binary package(s). |
368 | Similarly, if you want to use the GNUnet Name System and did NOT run | 379 | Similarly, if you want to use the GNUnet Name System and did NOT run |
369 | GNUnet's 'make install' process with priviledged rights, the libraries will be | 380 | GNUnet's 'make install' process with privileged rights, the libraries will be |
370 | installed to "$GNUNET_PREFIX" and you will have to move them to "/lib/" | 381 | installed to "$GNUNET_PREFIX" and you will have to move them to "/lib/" |
371 | manually. | 382 | manually. |
372 | 383 | ||
@@ -433,7 +444,7 @@ GNUnet by periodically executing | |||
433 | $ cat $SERVICEHOME/data/hosts/* > the_file | 444 | $ cat $SERVICEHOME/data/hosts/* > the_file |
434 | 445 | ||
435 | and offering 'the_file' via your web server. Alternatively, you can | 446 | and offering 'the_file' via your web server. Alternatively, you can |
436 | run the build-in web server by adding '-p' to the OPTIONS value | 447 | run the built-in web server by adding '-p' to the OPTIONS value |
437 | in the "hostlist" section of gnunet.conf and opening the respective | 448 | in the "hostlist" section of gnunet.conf and opening the respective |
438 | HTTPPORT to the public. | 449 | HTTPPORT to the public. |
439 | 450 | ||
@@ -485,7 +496,7 @@ https://bugs.gnunet.org/ or our bugs mailinglist. | |||
485 | Please make sure to run the script "contrib/scripts/gnunet-bugreport" | 496 | Please make sure to run the script "contrib/scripts/gnunet-bugreport" |
486 | and include the output with your bug reports. More about how to | 497 | and include the output with your bug reports. More about how to |
487 | report bugs can be found in the GNUnet FAQ on the webpage. Submit | 498 | report bugs can be found in the GNUnet FAQ on the webpage. Submit |
488 | patches via E-Mail to gnunet-developers@gnu.org, formated with | 499 | patches via E-Mail to gnunet-developers@gnu.org, formatted with |
489 | `git format-patch`. | 500 | `git format-patch`. |
490 | 501 | ||
491 | In order to run the unit tests by hand (instead of using "make check"), | 502 | In order to run the unit tests by hand (instead of using "make check"), |
@@ -530,7 +541,7 @@ Then set in the HTTP section of gnunet.conf the "ADVERTISED_PORT" to | |||
530 | "ADVERTISED_PORT" to "443" and "PORT" to 4433. | 541 | "ADVERTISED_PORT" to "443" and "PORT" to 4433. |
531 | 542 | ||
532 | You can do the same trick for the TCP and UDP transports if you want | 543 | You can do the same trick for the TCP and UDP transports if you want |
533 | to map them to a priviledged port (from the point of view of the | 544 | to map them to a privileged port (from the point of view of the |
534 | network). However, we are not aware of this providing any advantages | 545 | network). However, we are not aware of this providing any advantages |
535 | at this point. | 546 | at this point. |
536 | 547 | ||
@@ -570,6 +581,13 @@ Further Reading | |||
570 | * Using the webbrowser: | 581 | * Using the webbrowser: |
571 | https://bib.gnunet.org/ | 582 | https://bib.gnunet.org/ |
572 | 583 | ||
584 | Notes on Packaging | ||
585 | ================== | ||
586 | |||
587 | * GNUnet installs binaries which should not be called by the user into | ||
588 | $PREFIX/lib/gnunet/libexec. This folder must not be confused with the | ||
589 | $PREFIX/libexec. GNUnet does not install anything into the libexec dir | ||
590 | to compliant with https://refspecs.linuxfoundation.org/FHS_3.0/fhs/ch04s07.html | ||
573 | 591 | ||
574 | Stay tuned | 592 | Stay tuned |
575 | ========== | 593 | ========== |