aboutsummaryrefslogtreecommitdiff
path: root/README
diff options
context:
space:
mode:
Diffstat (limited to 'README')
-rw-r--r--README255
1 files changed, 212 insertions, 43 deletions
diff --git a/README b/README
index 61c54b4f4..dc0b4b8fb 100644
--- a/README
+++ b/README
@@ -22,7 +22,7 @@ in src/include/gnunet_util_lib.h to point to the source code of your
22fork! 22fork!
23 23
24Additional documentation about GNUnet can be found at 24Additional documentation about GNUnet can be found at
25https://gnunet.org/ and in the doc/ folder. 25https://gnunet.org/ and in the 'doc/' folder.
26 26
27 27
28Dependencies: 28Dependencies:
@@ -30,6 +30,54 @@ Dependencies:
30 30
31These are the direct dependencies for running GNUnet: 31These 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
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=======
79These 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
53Recommended autotools for compiling the git version are: 101Recommended 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,
60a 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============
61 117
62[*1] The default configuration is to build the info output of the documentation, 118GNUnet's directed acyclic graph (DAG) will require around 0.74 GiB
63and therefore require texinfo. You can pass --disable-documentation to 119Diskspace, with GNUNet itself taking around 9.2 MiB reported by the
64the configure script to change this. 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
132Gentoo (via the 'youbroketheinternet' overlay), GNU Guix, Nix,
133Debian, ALT Linux, Archlinux, Deepin, Devuan, Hyperbola, Kali Linux,
134LEDE/OpenWRT, Manjaro, Parabola, Pardus, Parrot, PureOS, Raspbian,
135Rosa, Trisquel, and Ubuntu.
136
137If GNUnet is available for your Operating System and it is missing,
138send us feedback so that we can add it to this list. Furthermore, if
139you are interested in packaging GNUnet for your Operating System,
140get in touch with us at gnunet-developers@gnu.org if you require
141help with this job.
142
143If you were using an Operating System with the apt package manager,
144GNUnet could be installed as simple as:
145
146$ apt-get install gnunet
147
72Generic installation instructions are in the INSTALL file in this 148Generic installation instructions are in the INSTALL file in this
73directory. 149directory.
74 150
151Scope of Operating System support
152~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
153We actively support GNUnet on a broad range of Free Software Operating
154Systems.
155
156For proprietary Operating Systems, like for example Microsoft Windows
157or Apple OS X, we accept patches if they don't break anything for
158other Operating Systems.
159If you are implementing support for a proprietary Operating System,
160you should be aware that progress in our codebase could break
161functionality on your OS and cause unpredicted behavior we can
162not test. However, we do not break support on Operating Systems
163with malicious intent.
164Regressions which do occur on these Operating Systems are 3rd
165class issues and we expect users and developers of these
166Operating Systems to send proposed patches to fix regressions.
167
168For more information about our stand on some of the motivating
169points here, read the 'Philosophy' Chapter of our handbook.
170
171Building GNUnet from source
172~~~~~~~~~~~~~~~~~~~~~~~~~~~
173
174IMPORTANT: You can read further notes about compilation from source in
175the 'doc/FILENAME' document, which includes notes about specific
176requirements for operating systems aswell. If you are a package
177mantainer for an Operating System we invite you to add your notes if
178you feel it is necessary and can not be covered in your Operating
179System's documentation.
180
181
182Some Operating Systems currently require you to build GNUnet from
183source.
184If you are building GNUnet from source you are either interested
185in furthering its development (we have further notes for developer
186builds in our 'GNUnet Developer Handbook') or your Operating System
187simply lacks support for a binary package at the moment.
188Two prominent examples which currently lack cross-compilation
189support in GNUnet (and native binaries) are MS Windows and Apple macOS.
190For macOS we recommend you to do the build process via Homebrew and a
191recent XCode installation.
192Compilation for MS Windows can ...
193
75Note that some functions of GNUnet require "root" access. GNUnet will 194Note that some functions of GNUnet require "root" access. GNUnet will
76install (tiny) SUID binaries for those functions is you run "make 195install (tiny) SUID binaries for those functions is you run "make
77install" as root. If you do not, GNUnet will still work, but some 196install" as root. If you do not, GNUnet will still work, but some
78functionality will not be available (including certain forms of NAT 197functionality will not be available (including certain forms of NAT
79traversal). 198traversal).
80 199
81GNUnet requires the GNU MP library (http://www.gnu.org/software/gmp/) 200GNUnet requires the GNU MP library (https://www.gnu.org/software/gmp/)
82and libgcrypt (http://www.gnupg.org/). You can specify the path to 201and libgcrypt (https://www.gnupg.org/). You can specify the path to
83libgcrypt by passing "--with-gcrypt=PATH" to configure. You will also 202libgcrypt by passing "--with-gcrypt=PATH" to configure. You will also
84need either sqlite (http://www.sqlite.org/), MySQL 203need 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
87If you install from source, you need to install GNU libextractor first 206If 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
89recommend installing GNU libmicrohttpd (download from 208recommend installing GNU libmicrohttpd (download from
90http://www.gnu.org/software/libmicrohttpd/). Then you can start the 209https://www.gnu.org/software/libmicrohttpd/). Furthermore we recommend
91actual GNUnet compilation and installation process with: 210libgnurl (from https://gnunet.org/gnurl).
211Then 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
220And finally install GNUnet with:
221
98# make install 222# make install
223
224Complete the process by either adjusting one of our example service files
225in 'contrib/services' or by running:
226
99# sudo -u gnunet gnunet-arm -s 227# sudo -u gnunet gnunet-arm -s
100 228
229
101Note that running the 'configure' and 'make install' steps as 230Note that running the 'configure' and 'make install' steps as
102root (or with sudo) is required as some parts of the installation 231root (or with sudo) is required as some parts of the installation
103require the creation of SUID binaries. The installation will 232require the creation of SUID binaries. The installation will
@@ -131,7 +260,7 @@ certain binaries that require additional priviledges will not be
131installed properly (and autonomous NAT traversal, WLAN, DNS/GNS and 260installed properly (and autonomous NAT traversal, WLAN, DNS/GNS and
132the VPN will then not work). 261the VPN will then not work).
133 262
134If you run 'configure' and 'make install' as root or use the SUDO 263If you run 'configure' and 'make install' as root or use the '--with-sudo'
135option, GNUnet's build system will install "libnss_gns*" libraries to 264option, 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,
137as those libraries must be in "/lib/". If you are packaging GNUnet 266as 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
139those plugins, so you might need to do some additional manual work to 268those plugins, so you might need to do some additional manual work to
140include those libraries in your binary package(s). Similarly, if you 269include those libraries in your binary package(s). Similarly, if you
141want to use the GNUnet naming system and did NOT run GNUnet's 'make 270want to use the GNUnet naming system and did NOT run GNUnet's 'make
142install' process with SUDO rights, the libraries will be installed to 271install' 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/"
144manually. 273manually.
145 274
146Finally, if you are compiling the code from git, you have to 275Finally, if you are compiling the code from git, you have to
147run ". bootstrap" before ./configure. If you receive an error during 276run "sh ./bootstrap" before running "./configure". If you receive an error during
148the running of ". bootstrap" that looks like "macro `AM_PATH_GTK' not 277the 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 278not found in library", you may need to run aclocal by hand with the -I
150option, pointing to your aclocal m4 macros, i.e. 279option, 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
165test (!) the network settings, choose which applications should be run 294test (!) the network settings, choose which applications should be run
166and configure databases. Other options you might want to control 295and configure databases. Other options you might want to control
167include system limitations (such as disk space consumption, bandwidth, 296include system limitations (such as disk space consumption, bandwidth,
168etc.). The resulting configuration files are human-readable and can 297etc). The resulting configuration files are human-readable and can
169theoretically be created or edited by hand. 298theoretically be created or edited by hand.
170 299
171gnunet-setup is a separate download and requires somewhat recent 300gnunet-setup is a separate download and requires somewhat recent
@@ -181,10 +310,17 @@ configuration file should be located in "~/.config/gnunet.conf" or its
181location can be specified by giving the "-c" option to the respective 310location can be specified by giving the "-c" option to the respective
182GNUnet application. 311GNUnet application.
183 312
313For more information about the configuration (as well as usage) refer
314to the 'GNUnet User Handbook' chapter of the documentation, included
315in this software distribution.
316
184 317
185Usage 318Usage
186===== 319=====
187 320
321For detailed usage notes, instructions and examples, refer to the
322included 'GNUnet User Handbook'.
323
188First, you must obtain an initial list of GNUnet hosts. Knowing a 324First, you must obtain an initial list of GNUnet hosts. Knowing a
189single peer is sufficient since after that GNUnet propagates 325single peer is sufficient since after that GNUnet propagates
190information about other peers. Note that the default configuration 326information 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
210vicinity of each other) using broadcasts (IPv4/WLAN) or multicasts 346vicinity of each other) using broadcasts (IPv4/WLAN) or multicasts
211(IPv6). 347(IPv6).
212 348
213The local node is started using "gnunet-arm -s". GNUnet should run 349The 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 350GNUnet 24/7 if you want to maximize your anonymity, as this makes
215attacks harder. 351partitioning attacks harder.
216 352
217Once your peer is running, you should then be able to access GNUnet 353Once your peer is running, you should then be able to access GNUnet
218using the shell: 354using 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
232The GTK user interface is shipped separately. After downloading and 368The GTK+ (or: Gimp Toolkit) user interface is shipped separately.
233installing gnunet-gtk, you can invoke the setup tool and the 369After installing gnunet-gtk, you can invoke the setup tool and
234file-sharing GUI with: 370the file-sharing GUI with:
235 371
236$ gnunet-setup 372$ gnunet-setup
237$ gnunet-fs-gtk 373$ gnunet-fs-gtk
238 374
239For further documentation, see our webpage. 375For further documentation, see our webpage or the 'GNUnet User Handbook',
376included in this software distribution.
240 377
241 378
242Hacking GNUnet 379Hacking GNUnet
243============== 380==============
244 381
245Contributions are welcome, please submit bugs to 382Contributions are welcome. Please submit bugs you find to
246https://gnunet.org/bugs/. Please make sure to run contrib/report.sh 383https://gnunet.org/bugs/.
384Please make sure to run the script "contrib/scripts/gnunet-bugreport"
247and include the output with your bug reports. More about how to 385and include the output with your bug reports. More about how to
248report bugs can be found in the GNUnet FAQ on the webpage. Submit 386report bugs can be found in the GNUnet FAQ on the webpage. Submit
249patches via E-Mail to gnunet-developers@gnu.org. 387patches via E-Mail to gnunet-developers@gnu.org, formated with
388`git format-patch`.
250 389
251In order to run the unit tests with by hand (instead of using 390In order to run the unit tests by hand (instead of using "make check"),
252"make check"), you need to 391you need to set the environment variable "GNUNET_PREFIX" to the
253set an environment variable ("GNUNET_PREFIX") to the directory 392directory where GNUnet's libraries are installed.
254where GNUnet's libraries are installed. 393Before running any testcases, you must complete the installation.
255Also, before running any testcases, you must 394
256complete the installation first. Quick summary: 395Quick 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
263Some of the testcases require python >= 2.6 (+ the python module "futures") 403Some of the testcases require python >= 2.7, and the python modules
264and 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" 405If any testcases fail to pass on your system, run
266when you already have GNUnet installed and report the output together with 406"contrib/scripts/gnunet-bugreport" (in the repository) or "gnunet-bugreport"
267information about the failing testcase to the Mantis bugtracking 407when you already have GNUnet installed and report its output together with
408information about the failing testcase(s) to the Mantis bugtracking
268system at https://gnunet.org/bugs/. 409system at https://gnunet.org/bugs/.
269 410
270 411
@@ -304,6 +445,34 @@ throttled by ISPs that dislike P2P. Details for configuring the
304reverse proxy are documented on our website. 445reverse proxy are documented on our website.
305 446
306 447
448Further 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
307Stay tuned 476Stay tuned
308========== 477==========
309 478