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