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