aboutsummaryrefslogtreecommitdiff
path: root/README
diff options
context:
space:
mode:
Diffstat (limited to 'README')
-rw-r--r--README168
1 files changed, 93 insertions, 75 deletions
diff --git a/README b/README
index e6ba9c07e..70b429036 100644
--- a/README
+++ b/README
@@ -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
26What is GNUnet? 29What 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
55Joining GNU
56===========
57
58This is a GNU program, developed by the GNU Project and part of the
59GNU Operating System. If you are the author of an awesome program and
60want to join us in writing Free Software, please consider making it an
61official GNU program and become a GNU maintainer. You can find
62instructions on how to do so at http://www.gnu.org/help/evaluation.
63We are looking forward to hacking with you!
64
65
52Dependencies: 66Dependencies:
53============= 67=============
54 68
@@ -56,50 +70,82 @@ The dependencies for building GNUnet will require around 0.74 GiB
56diskspace. GNUnet itself will require 8 - 9.2 MiB depending on 70diskspace. GNUnet itself will require 8 - 9.2 MiB depending on
57configuration. 71configuration.
58 72
59These are the direct dependencies for running GNUnet: 73Build 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
88Direct 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
101These are the dependencies for GNUnet's testsuite: 119Dependencies 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
147Additional 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
117These are the optional dependencies: 163Recommended 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
146Recommended 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
203to run the equivalent of these steps after installation. 216to run the equivalent of these steps after installation.
204Replace $(DESTDIR)$(libexecdir) with the appropriate paths, 217Replace $(DESTDIR)$(libexecdir) with the appropriate paths,
205for example /usr/local/lib/gnunet/libexec/. Note that this 218for example /usr/local/lib/gnunet/libexec/. Note that this
206obviously must be run as priviledged user. 219obviously must be run as privileged user.
207 220
208chown root:root $(DESTDIR)$(libexecdir)/gnunet-helper-vpn 221chown root:root $(DESTDIR)$(libexecdir)/gnunet-helper-vpn
209chmod u+s $(DESTDIR)$(libexecdir)/gnunet-helper-vpn 222chmod u+s $(DESTDIR)$(libexecdir)/gnunet-helper-vpn
@@ -214,9 +227,9 @@ chmod u+s $(DESTDIR)$(libexecdir)/gnunet-helper-transport-bluetooth
214chown root $(DESTDIR)$(libexecdir)/gnunet-helper-dns 227chown root $(DESTDIR)$(libexecdir)/gnunet-helper-dns
215chgrp $(GNUNETDNS_GROUP) $(DESTDIR)$(libexecdir)/gnunet-helper-dns 228chgrp $(GNUNETDNS_GROUP) $(DESTDIR)$(libexecdir)/gnunet-helper-dns
216chmod 4750 $(DESTDIR)$(libexecdir)/gnunet-helper-dns 229chmod 4750 $(DESTDIR)$(libexecdir)/gnunet-helper-dns
217chgrp $(GNUNETDNS_GROUP) $(DESTDIR)$(libexecdir)/gnunet-helper-dns 230chgrp $(GNUNETDNS_GROUP) $(DESTDIR)$(libexecdir)/gnunet-service-dns
218chown gnunet:$(GNUNETDNS_GROUP) $(DESTDIR)$(libexecdir)/gnunet-helper-dns 231chown gnunet:$(GNUNETDNS_GROUP) $(DESTDIR)$(libexecdir)/gnunet-service-dns
219chmod 2750 $(DESTDIR)$(libexecdir)/gnunet-helper-dns 232chmod 2750 $(DESTDIR)$(libexecdir)/gnunet-service-dns
220chown root:root $(DESTDIR)$(libexecdir)/gnunet-helper-exit 233chown root:root $(DESTDIR)$(libexecdir)/gnunet-helper-exit
221chmod u+s $(DESTDIR)$(libexecdir)/gnunet-helper-exit 234chmod u+s $(DESTDIR)$(libexecdir)/gnunet-helper-exit
222chown root:root $(DESTDIR)$(libexecdir)/gnunet-helper-nat-server 235chown root:root $(DESTDIR)$(libexecdir)/gnunet-helper-nat-server
@@ -279,8 +292,8 @@ Building GNUnet from source
279 292
280IMPORTANT: You can read further notes about compilation from source in 293IMPORTANT: You can read further notes about compilation from source in
281the handbook under doc/handbook/, which includes notes about specific 294the handbook under doc/handbook/, which includes notes about specific
282requirements for operating systems aswell. If you are a package 295requirements for operating systems as well. If you are a package
283mantainer for an Operating System we invite you to add your notes if 296maintainer for an Operating System we invite you to add your notes if
284you feel it is necessary and can not be covered in your Operating 297you feel it is necessary and can not be covered in your Operating
285System's documentation. 298System's documentation.
286 299
@@ -299,9 +312,7 @@ traversal).
299 312
300GNUnet requires the GNU MP library (https://www.gnu.org/software/gmp/) 313GNUnet requires the GNU MP library (https://www.gnu.org/software/gmp/)
301and libgcrypt (https://www.gnupg.org/). You can specify the path to 314and libgcrypt (https://www.gnupg.org/). You can specify the path to
302libgcrypt by passing "--with-gcrypt=PATH" to configure. You will also 315libgcrypt by passing "--with-gcrypt=PATH" to configure.
303need either sqlite (http://www.sqlite.org/), MySQL
304(http://www.mysql.org/) or PostGres (http://www.postgres.org/).
305 316
306If you install from source, you need to install GNU libextractor first 317If 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
330Note that you must read paragraph "Notes on setuid", which documents steps you 341Note that you must read paragraph "Notes on setuid", which documents steps you
331have to follow after the installation, as a priviledged user. We require some 342have to follow after the installation, as a privileged user. We require some
332binaries to be setuid. The most portable approach across all supported 343binaries to be setuid. The most portable approach across all supported
333platforms and targets is to let this be handled manually. 344platforms and targets is to let this be handled manually.
334The installation will work if you do not run these steps as root, but some 345The 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
366your packaging script to miss those plugins, so you might need to do some 377your packaging script to miss those plugins, so you might need to do some
367additional manual work to include those libraries in your binary package(s). 378additional manual work to include those libraries in your binary package(s).
368Similarly, if you want to use the GNUnet Name System and did NOT run 379Similarly, if you want to use the GNUnet Name System and did NOT run
369GNUnet's 'make install' process with priviledged rights, the libraries will be 380GNUnet's 'make install' process with privileged rights, the libraries will be
370installed to "$GNUNET_PREFIX" and you will have to move them to "/lib/" 381installed to "$GNUNET_PREFIX" and you will have to move them to "/lib/"
371manually. 382manually.
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
435and offering 'the_file' via your web server. Alternatively, you can 446and offering 'the_file' via your web server. Alternatively, you can
436run the build-in web server by adding '-p' to the OPTIONS value 447run the built-in web server by adding '-p' to the OPTIONS value
437in the "hostlist" section of gnunet.conf and opening the respective 448in the "hostlist" section of gnunet.conf and opening the respective
438HTTPPORT to the public. 449HTTPPORT to the public.
439 450
@@ -485,7 +496,7 @@ https://bugs.gnunet.org/ or our bugs mailinglist.
485Please make sure to run the script "contrib/scripts/gnunet-bugreport" 496Please make sure to run the script "contrib/scripts/gnunet-bugreport"
486and include the output with your bug reports. More about how to 497and include the output with your bug reports. More about how to
487report bugs can be found in the GNUnet FAQ on the webpage. Submit 498report bugs can be found in the GNUnet FAQ on the webpage. Submit
488patches via E-Mail to gnunet-developers@gnu.org, formated with 499patches via E-Mail to gnunet-developers@gnu.org, formatted with
489`git format-patch`. 500`git format-patch`.
490 501
491In order to run the unit tests by hand (instead of using "make check"), 502In 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
532You can do the same trick for the TCP and UDP transports if you want 543You can do the same trick for the TCP and UDP transports if you want
533to map them to a priviledged port (from the point of view of the 544to map them to a privileged port (from the point of view of the
534network). However, we are not aware of this providing any advantages 545network). However, we are not aware of this providing any advantages
535at this point. 546at 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
584Notes 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
574Stay tuned 592Stay tuned
575========== 593==========