Welcome to GNUnet
+ToC
+===
+
+* ToC
+* What is GNUnet?
+* Dependencies
+ o direct dependencies
+ o test suite dependencies
+ o optional dependencies
+ o autotools
+* Requirements
+* How to install
+ o binary packages
+ o Scope of Operating System support
+ o Building GNUnet from source
+* Configuration
+* Usage
+* Hacking GNUnet
+* Running HTTP on port 80 and HTTPS on port 443
+* Further Reading
+* Stay tuned
What is GNUnet?
===============
Additional documentation about GNUnet can be found at
https://gnunet.org/ and in the 'doc/' folder.
+Online documentation is provided at
+'https://docs.gnunet.org' and 'https://tutorial.gnunet.org'.
Dependencies:
=============
These are the direct dependencies for running GNUnet:
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- libmicrohttpd >= 0.9.42
+- Bash (for some scripts)
+- gettext
+- gnutls >= 3.2.12 (highly recommended a gnutls
+ linked against libunbound)
+- A curl build against gnutls, or gnurl:
+ * libgnurl >= 7.35.0 (recommended, available from
+ https://gnunet.org/en/gnurl.html)
+ or
+ * libcurl >= 7.35.0 (alternative to libgnurl)
- libgcrypt >= 1.6
-- libgnurl >= 7.35.0 (recommended, available from https://gnunet.org/gnurl)
-- libcurl >= 7.35.0 (alternative to libgnurl)
- libunistring >= 0.9.2
-- gnutls >= 3.2.12 (highly recommended a gnutls linked against libunbound)
- libidn:
- - libidn2 (prefered)
+ * libidn2 (prefered)
or
- - libidn >= 1.0
-- libextractor >= 0.6.1 (highly recommended)
-- openssl >= 1.0 (binary, used to generate X.509 certificate)
-- libltdl >= 2.2 (part of GNU libtool)
-- sqlite >= 3.8 (default database, required)
-- mysql >= 5.1 (alternative to sqlite)
-- postgres >= 9.5 (alternative to sqlite)
+ * libidn >= 1.0
+- libmicrohttpd >= 0.9.52
+- makeinfo >= 4.8
+- make[*3]
+- nss (certutil binary, for
+ gnunet-gns-proxy-setup-ca)
+- openssl >= 1.0 (binary, used to generate
+ X.509 certificate
+ for gnunet-gns-proxy-setup-ca)
+- A Posix shell (for some scripts)
- Texinfo >= 5.2 [*1]
-- makeinfo >= 4.8 (at least 4.8 at the time of writing is tested)
-- which (for the bootstrap script)
-- gettext
+- libltdl >= 2.2 (part of GNU libtool)
+- 1 or more databases:
+ * sqlite >= 3.8 (default database, required)
+ and/or
+ * mysql >= 5.1 (alternative to sqlite)
+ and/or
+ * postgres >= 9.5 (alternative to sqlite)
+- which (contrib/apparmor(?), gnunet-bugreport,
+ and possibly more)
- zlib
-- pkg-config
-
These are the dependencies for GNUnet's testsuite:
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- Bash (optional (?), for some tests)
-- python >= 2.7 (optional, only python 2.7 is supported)
-- python-future >= 2.7 (optional, only python 2.7 is supported)
+- Bash (for some tests[*4])
+- A Posix Shell (for some tests)
+- python >= 3.7 (only python 3.7 is supported)
+- base tools
+ - mostly:
+ - bc,
+ - curl,
+ - sed,
+ - awk,
+ - which
These are the optional dependencies:
-
-- libopus >= 1.0.1 (optional, for experimental conversation tool)
-- libpulse >= 2.0 (optional, for experimental conversation tool)
-- libogg >= 1.3.0 (optional, for experimental conversation tool)
-- libnss (optional, certtool binary (for convenient installation of GNS proxy))
-- python-future (optional, for some testcases and utilities)
-- python-zbar >= 0.10 (optional, for gnunet-qr)
-- TeX Live >= 2012 (optional, for gnunet-bcd[*])
-- texi2mdoc (optional, for automatic mdoc generation [*2])
-- libglpk >= 4.45 (optional, for experimental code)
-- perl5 (optional, for some utilities)
-- python >= 2.7 (optional, for gnunet-qr, only python 2.7 is supported)
-- bluez (optional, for bluetooth support)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+- awk (for linting tests)
+- Bash (for Docker and Vagrant)
+- bluez (for bluetooth support)
+- grof (for linting of man pages)
+- guile 1.6.4 (or later up to 1.8?, for
+ gnunet-download-manager)
+
+- libextractor >= 0.6.1 (highly recommended[*5])
+- libjansson
+- libglpk >= 4.45 (for experimental code)
+- libopus >= 1.0.1 (for experimental conversation tool)
+- libpulse >= 2.0 (for experimental conversation tool)
+- libogg >= 1.3.0 (for experimental conversation tool)
+- libnss (certtool binary (for convenient
+ installation of GNS proxy))
+- libpbc >= 0.5.14 (for Attribute-Based Encryption and
+ Identity Provider functionality)
+- libgabe (for Attribute-Based Encryption and
+ Identity Provider functionality, from
+ https://github.com/schanzen/libgabe)
+- mandoc (for linting of man pages, generation of
+ html output of man pages)
- miniupnpc
-- libpbc >= 0.5.14 (optional, for Attribute-Based Encryption and Identity Provider functionality)
-- libgabe (optional, for Attribute-Based Encryption and Identity Provider functionality,
- from https://github.com/schanzen/libgabe)
+- perl5 (for some utilities)
+- python2.7 = 2.7 (for gnunet-qr, only python 2.7
+ supported)
+- python-zbar >= 0.10 (for gnunet-qr, not optional)
+- TeX Live >= 2012 (for gnunet-bcd[*])
+- texi2mdoc (for automatic mdoc generation [*2])
Recommended autotools for compiling the Git version are:
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- autoconf >= 2.59
- automake >= 1.11.1
Contrary to the name, texi2mdoc does not require texinfo,
It is a standalone ISO C utility.
+[*3] GNU make introduced the != operator in version 4.0.
+ GNU make was released in october 2013, reasonable to
+ be widespread by now. If this is not working out for
+ you, open a bug so that we can get a more portable
+ fix in.
+
+[*4] We are commited to portable tools and solutions
+ where possible. New scripts should be Posix SH
+ compatible, current and older scripts are
+ in the process of being rewritten to comply
+ with this requirement.
+
+[*5] While libextractor is optional, it is recommended to
+ build gnunet against it. If you install it later,
+ you won't benefit from libextractor.
+ If you are a distributor, we recommend to split
+ LE into basis + plugins rather than making LE
+ an option as an afterthought by the user.
+ LE itself is very small, but its dependency chain
+ on first, second, third etc level can be big.
+ There is a small effect on privacy if your LE build
+ differs from one which includes all
+ plugins (plugins are build as shared objects):
+ if users publish a directory with a mixture of file
+ types (for example mpeg, jpeg, png, gif) the
+ configuration of LE could leak which plugins are
+ installed for which filetypes are not providing
+ more details.
+ However, this leak is just a minor concern.
+
Requirements
============
GNUnet's directed acyclic graph (DAG) will require around 0.74 GiB
-Diskspace, with GNUNet itself taking around 9.2 MiB reported by the
-build on GNU Guix.
+Diskspace, with GNUNet itself taking around 8 - 9.2 MiB reported by
+the build on GNU Guix.
How to install?
===============
~~~~~~~~~~~~~~~~~~~~~~~~~~~
IMPORTANT: You can read further notes about compilation from source in
-the 'doc/FILENAME' document, which includes notes about specific
+the handbook under doc/handbook/, which includes notes about specific
requirements for operating systems aswell. If you are a package
mantainer for an Operating System we invite you to add your notes if
you feel it is necessary and can not be covered in your Operating
System's documentation.
-If you are building GNUnet from source you are either interested
-in furthering its development (we have further notes for developer
-builds in our 'GNUnet Developer Handbook') or you don't trust other
-people's binaries or your Operating System doesn't provide any
-binary package (at the moment).
-
-If you're on Gentoo you can build GNUnet using the recipes provided
-in the 'youbroketheinternet' overlay. Other Operating Systems may
-unintentionally require you to build GNUnet from source.
-
Two prominent examples which currently lack cross-compilation
support in GNUnet (and native binaries) are MS Windows and Apple macOS.
For macOS we recommend you to do the build process via Homebrew and a
(download from https://www.gnu.org/software/libextractor/). We also
recommend installing GNU libmicrohttpd (download from
https://www.gnu.org/software/libmicrohttpd/). Furthermore we recommend
-libgnurl (from https://gnunet.org/gnurl).
+libgnurl (from https://gnunet.org/en/gnurl.html).
Then you can start the actual GNUnet compilation process with:
=====
For detailed usage notes, instructions and examples, refer to the
-included 'GNUnet User Handbook'.
+included 'GNUnet Handbook'.
First, you must obtain an initial list of GNUnet hosts. Knowing a
single peer is sufficient since after that GNUnet propagates
==============
Contributions are welcome. Please submit bugs you find to
-https://gnunet.org/bugs/.
+https://bugs.gnunet.org/ or our bugs mailinglist.
Please make sure to run the script "contrib/scripts/gnunet-bugreport"
and include the output with your bug reports. More about how to
report bugs can be found in the GNUnet FAQ on the webpage. Submit
$ export $GNUNET_PREFIX=$SOMEWHERE
$ make check
-Some of the testcases require python >= 2.7, and the python modules
-"python-future" (http://python-future.org/) and "pexpect" to be installed.
+Some of the testcases require python >= 3.7, and the python module
+"pexpect" to be installed.
If any testcases fail to pass on your system, run
"contrib/scripts/gnunet-bugreport" (in the repository) or "gnunet-bugreport"
when you already have GNUnet installed and report its output together with
information about the failing testcase(s) to the Mantis bugtracking
-system at https://gnunet.org/bugs/.
+system at https://bugs.gnunet.org/.
Running HTTP on port 80 and HTTPS on port 443
GNUnet or projects around GNUnet.
There are currently 2 ways to get them:
- * Using git:
- git clone https://gnunet.org/git/bibliography.git
+ * Using git (NOTE: 1.1 GiB as of 2019-03-09):
+ git clone https://git.gnunet.org/bibliography.git
* Using Drupal:
- https://gnunet.org/bibliography
+ https://old.gnunet.org/bibliography
The Drupal access will be replaced by a new interface to our
- bibliography in 2019.
+ bibliography in the foreseeable future.
Stay tuned
==========
* https://gnunet.org/
-* https://gnunet.org/bugs/
-* https://gnunet.org/git/
+* https://bugs.gnunet.org
+* https://git.gnunet.org
* http://www.gnu.org/software/gnunet/
* http://mail.gnu.org/mailman/listinfo/gnunet-developers
* http://mail.gnu.org/mailman/listinfo/help-gnunet