These are the direct dependencies for running GNUnet:
- libextractor >= 0.6.1
-- libmicrohttpd >= 0.9.2
+- libmicrohttpd >= 0.9.18
- libgcrypt >= 1.2
- libcurl >= 7.21.0
+- libunistring >= 0.9.2
- libltdl >= 2.2 (part of GNU libtool)
- sqlite >= 3.0 (default database)
- mysql >= 5.1 (alternative to sqLite)
(download from http://www.gnu.org/software/libextractor/). We also
recommend installing GNU libmicrohttpd (download from
http://www.gnu.org/software/libmicrohttpd/). Then you can start the
-actual GNUnet compilation process with:
+actual GNUnet compilation and installation process with:
-$ ./configure --prefix=$HOME --with-extractor=$HOME
+$ export GNUNET_PREFIX=/usr/local # or other directory of your choice
+$ addgroup gnunetdns
+$ adduser gnunet gnunet
+$ ./configure --prefix=$GNUNET_PREFIX --with-extractor=$LE_PREFIX
$ make
# make install
# sudo -u gnunet mkdir ~/.gnunet/
# sudo -u gnunet touch ~/.gnunet/gnunet.conf
# sudo -u gnunet gnunet-arm -s
-This will compile and install GNUnet to $HOME/bin/, $HOME/lib/ and
-$HOME/share/ and start the system with the default configuration. It
-is recommended that you add a user "gnunet" to run "gnunet-arm". You
-can then still run the end-user applications as another user. If you
-create a user "gnunet", it is recommended that you edit the
-configuration file slightly so that data can be stored in
-"/var/lib/gnunet"; you may also want to use "/etc/gnunet.conf" for the
-location of the configuration file in this case.
+This will create the users and groups needed for running GNUnet
+securely and then compile and install GNUnet to $GNUNET_PREFIX/bin/,
+$GNUNET_PREFIX/lib/ and $GNUNET_PREFIX/share/ and start the system
+with the default configuration. It is strongly recommended that you
+add a user "gnunet" to run "gnunet-arm". You can then still run the
+end-user applications as another user.
+
+If you create a system user "gnunet", it is recommended that you edit
+the configuration file slightly so that data can be stored in the
+system user home directory at "/var/lib/gnunet"; you may also want to
+use "/etc/gnunet.conf" for the location of the configuration file in
+this case.
You can avoid running 'make install' as root if you run configure
with the "--with-sudo=yes" option and have extensive sudo rights
-(can run chmod +s and chown via sudo). If you run 'make install'
+(can run "chmod +s" and "chown" via 'sudo'). If you run 'make install'
as a normal user without sudo rights (or the configure option),
certain binaries that require additional priviledges will not be
-installed properly (and NAT traversal, WLAN and VPN will not work).
-
-Note that additional, per-user configuration files
-(~/.gnunet/gnunet.conf) need to be created by each user (for example,
-by running gnunet-setup). Note that gnunet-setup is a separate
-download and requires recent versions of GTK+ and Glade; you can also
-edit the configuration file by hand, but this is not recommended. For
-more general information about the GNU build process read the INSTALL
-file.
-
-If you are compiling the code from subversion, you have to run
-". bootstrap" before ./configure. If you receive an error during the
-running of ". bootstrap" that looks like "macro `AM_PATH_GTK' not
+installed properly (and autonomous NAT traversal, WLAN, DNS/GNS and
+the VPN will then not work).
+
+If you run 'configure' and 'make install' as root or use the SUDO
+option, GNUnet's build system will install "libnss_gns*" libraries to
+"/lib/" regardless (!) of the $GNUNET_PREFIX you might have specified,
+as those libraries must be in "/lib/". If you are packaging GNUnet
+for binary distribution, this may cause your packaging script to miss
+those plugins, so you might need to do some additional manual work to
+include those libraries in your binary package(s). Similarly, if you
+want to use the GNUnet naming system and did NOT run GNUnet's 'make
+install' process with SUDO rights, the libraries will be installed to
+"$GNUNET_PREFIX/lib" and you will have to move them to "/lib/"
+manually.
+
+Finally, if you are compiling the code from subversion, you have to
+run ". bootstrap" before ./configure. If you receive an error during
+the running of ". bootstrap" that looks like "macro `AM_PATH_GTK' not
found in library", you may need to run aclocal by hand with the -I
option, pointing to your aclocal m4 macros, i.e.
Configuration
=============
+Note that additional, per-user configuration files
+(~/.gnunet/gnunet.conf) need to be created by each user (for example,
+by running gnunet-setup). Note that gnunet-setup is a separate
+download and requires recent versions of GTK+ and Glade; you can also
+edit the configuration file by hand, but this is not recommended. For
+more general information about the GNU build process read the INSTALL
+file.
+
GNUnet uses two types of configuration files, one that specifies the
-system-wide defaults (typically located in /usr/share/gnunet/defaults
-.conf) and a second one that overrides default values with
-user-specific preferences. The user-specific configuration file
-should be located in "~/.gnunet/gnunet.conf" or its location can be
-specified by giving the "-c" option to the respective GNUnet
-application.
+system-wide defaults (typically located in
+$GNUNET_PREFIX/share/gnunet/config.d/) and a second one that overrides
+default values with user-specific preferences. The user-specific
+configuration file should be located in "~/.gnunet/gnunet.conf" or its
+location can be specified by giving the "-c" option to the respective
+GNUnet application.
The defaults that are shipped with the installation are usually ok,
you may want to adjust the limitations (space consumption, bandwidth,
etc.) though. The configuration files are human-readable. Note that
you MUST create "~/.gnunet/gnunet.conf" explicitly before starting
-GNUnet. You can either copy "defaults.conf" or simply create an empty
-file.
+GNUnet. You can either run gnunet-setup (available as part of the
+gnunet-gtk source package) or simply create an empty file.
Usage
The GTK user interface is shipped separately. After downloading and
-installing gnunet-gtk, you can invoke the GUI with:
+installing gnunet-gtk, you can invoke the setup tool and the
+file-sharing GUI with:
-$ gnunet-gtk
+$ gnunet-setup
+$ gnunet-fs-gtk
For further documentation, see our webpage.
$ export GNUNET_PREFIX=$SOMEWHERE
$ make check
-If any testcases fail to pass on your system, run "contrib/report.sh"
-and report the output together with information about the failing
-testcase to the Mantis bugtracking system at
-https://gnunet.org/bugs/.
+Some of the testcases require python >= 2.6 and pexpect to be
+installed. If any testcases fail to pass on your system, run
+"contrib/report.sh" and report the output together with
+information about the failing testcase to the Mantis bugtracking
+system at https://gnunet.org/bugs/.
Running http on port 80 and https on port 443
In order to hide GNUnet's HTTP/HTTPS traffic perfectly, you might
consider running GNUnet's HTTP/HTTPS transport on port 80/443.
However, we do not recommend running GNUnet as root. Instead, forward
-port 80 to say 8080 with this command (as root, in your startup
+port 80 to say 1080 with this command (as root, in your startup
scripts):
-# iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
+# iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 1080
or for HTTPS
# iptables -t nat -A PREROUTING -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 4433
-Then set in the HTTP section of gnunet.conf the "ADVERTISED-PORT" to
-"80" and "PORT" to 8080 and similarly in the HTTPS section the
-"ADVERTISED-PORT" to "443" and "PORT" to 4433.
+Then set in the HTTP section of gnunet.conf the "ADVERTISED_PORT" to
+"80" and "PORT" to 1080 and similarly in the HTTPS section the
+"ADVERTISED_PORT" to "443" and "PORT" to 4433.
You can do the same trick for the TCP and UDP transports if you want
to map them to a priviledged port (from the point of view of the