X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=README;h=595bc746eeaca38a34d3f0227e9382f87af2b7b6;hb=d039e80999f8df49d7b683e60af4145aacd18f83;hp=4520a5824930a74942f3bb16219faed1cb4f51a1;hpb=bb38e890e0d8636e51097ba4206f1961e278f9c1;p=oweals%2Fgnunet.git diff --git a/README b/README index 4520a5824..595bc746e 100644 --- a/README +++ b/README @@ -1,5 +1,26 @@ 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? =============== @@ -31,62 +52,92 @@ 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/en/libgnurl.html) -- 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 - for gnunet-gns-proxy-setup-ca) + * libidn >= 1.0 +- libmicrohttpd >= 0.9.52 (strongly recommended for + a wide range of features) +- makeinfo >= 4.8 +- make[*3] - nss (certutil binary, for gnunet-gns-proxy-setup-ca) -- 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) +- 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 -- which (bootstrap script and some Makefiles) -- 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 >= 3.7 (optional, only python 3.7 is supported) -- python-future >= 3.7 (optional, only python 3.7 is supported) +- Bash (for some tests[*4]) +- A Posix Shell (for some tests) +- python >= 3.4 (3.4 and higher technically supported, + at least python 3.7 tested to work) +- 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)) -- python2.7-future (optional, for gnunet-qr) -- 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) -- guile 1.6.4 (or later up to 1.8?, optional for gnunet-download-manager) -- python2.7 >= 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) +- 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)) +- libzbar >= 0.10 (for gnunet-qr) +- 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 (not part of + the regular build)) - 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) +- 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 @@ -107,12 +158,42 @@ Recommended autotools for compiling the Git version are: 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? =============== @@ -195,7 +276,7 @@ If you install from source, you need to install GNU libextractor first (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/en/libgnurl.html). +libgnurl (from https://gnunet.org/en/gnurl.html). Then you can start the actual GNUnet compilation process with: @@ -353,7 +434,7 @@ together with a description. To publish files on GNUnet, use the "gnunet-publish" command. -The GTK+ (or: Gimp Toolkit) user interface is shipped separately. +The GTK user interface is shipped separately. After installing gnunet-gtk, you can invoke the setup tool and the file-sharing GUI with: @@ -388,13 +469,13 @@ $ make install $ export $GNUNET_PREFIX=$SOMEWHERE $ make check -Some of the testcases require python >= 3.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 @@ -452,13 +533,13 @@ Further Reading GNUnet or projects around GNUnet. There are currently 2 ways to get them: - * Using git: + * Using git (NOTE: 1.1 GiB as of 2019-03-09): git clone https://git.gnunet.org/bibliography.git * Using Drupal: 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