From: Nils Gillmann Date: Fri, 8 Jun 2018 06:16:21 +0000 (+0000) Subject: doc: create system specific folder and move files into it X-Git-Tag: v0.11.0~319^2~23^2~13 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=d8cba9f05dce5fab72d3dcbcf0d1af6de97575ae;p=oweals%2Fgnunet.git doc: create system specific folder and move files into it Signed-off-by: Nils Gillmann --- diff --git a/doc/FROM_SOURCE b/doc/FROM_SOURCE deleted file mode 100644 index 074b6a91e..000000000 --- a/doc/FROM_SOURCE +++ /dev/null @@ -1,1423 +0,0 @@ -@node Build instructions for Ubuntu 12.04 using Git -@section Build instructions for Ubuntu 12.04 using Git - -@menu -* Install the required build tools:: -* Install libgcrypt 1.6 and libgpg-error:: -* Install gnutls with DANE support:: -* Install libgnurl:: -* Install libmicrohttpd from Git:: -* Install libextractor from Git:: -* Install GNUnet dependencies:: -* Build GNUnet:: -* Install the GNUnet-gtk user interface from Git:: -@end menu - -@node Install the required build tools -@subsection Install the required build tools - -First, make sure Git is installed on your system: - -@example -$ sudo apt-get install git -@end example - -Install the essential buildtools: - -@example -$ sudo apt-get install automake autopoint autoconf libtool -@end example - -@node Install libgcrypt 1.6 and libgpg-error -@subsection Install libgcrypt 1.6 and libgpg-error - -@ref{generic source installation - libgpg-error} - -@node Install gnutls with DANE support -@subsection Install gnutls with DANE support - -@itemize @bullet -@item @ref{generic source installation - nettle} -@item @ref{generic source installation - ldns} -@item @ref{generic source installation - libunbound/unbound} -@item @ref{generic source installation - gnutls} -@item @ref{generic source installation - libgcrypt} -@end itemize - -@node Install libgnurl -@subsection Install libgnurl - -Follow the @ref{generic source installation - libgnurl}. - -@node Install libmicrohttpd from Git -@subsection Install libmicrohttpd from Git - -@example -$ git clone https://gnunet.org/git/libmicrohttpd -$ cd libmicrohttpd/ -$ ./bootstrap -$ ./configure -$ sudo make install ; cd .. -@end example - -@node Install libextractor from Git -@subsection Install libextractor from Git - -Install libextractor dependencies: - -@example -$ sudo apt-get install zlib1g-dev libgsf-1-dev libmpeg2-4-dev \ - libpoppler-dev libvorbis-dev libexiv2-dev libjpeg-dev \ - libtiff-dev libgif-dev libvorbis-dev libflac-dev libsmf-dev \ - g++ -@end example - -Build libextractor: - -@example -$ git clone https://gnunet.org/git/libextractor -$ cd libextractor -$ ./bootstrap -$ ./configure -$ sudo make install ; cd .. -@end example - -@node Install GNUnet dependencies -@subsection Install GNUnet dependencies - -@example -$ sudo apt-get install libidn11-dev libunistring-dev libglpk-dev \ - libpulse-dev libbluetooth-dev libsqlite-dev -@end example - -Install libopus: - -@example -$ wget http://downloads.xiph.org/releases/opus/opus-1.1.tar.gz -$ tar xf opus-1.1.tar.gz -$ cd opus-1.1/ -$ ./configure -$ sudo make install ; cd .. -@end example - -Choose one or more database backends: - -SQLite3: -@example -$ sudo apt-get install libsqlite3-dev -@end example -MySQL: -@example -$ sudo apt-get install libmysqlclient-dev -@end example -PostgreSQL: -@example -$ sudo apt-get install libpq-dev postgresql -@end example - - - -@node Build GNUnet -@subsection Build GNUnet - - - -@menu -* Configuring the installation path:: -* Configuring the system:: -* Installing components requiring sudo permission:: -* Build:: -@end menu - -@node Configuring the installation path -@subsubsection Configuring the installation path - -You can specify the location of the GNUnet installation by setting the -prefix when calling the configure script with @code{--prefix=DIRECTORY} - -@example -$ export PATH=$PATH:DIRECTORY/bin -@end example - -@node Configuring the system -@subsubsection Configuring the system - -Please make sure NOW that you have created a user and group 'gnunet' -and additionally a group 'gnunetdns': - -@example -$ sudo addgroup gnunet -$ sudo addgroup gnunetdns -$ sudo adduser gnunet -@end example - -Each GNUnet user should be added to the 'gnunet' group (may -require fresh login to come into effect): - -@example -$ sudo useradd -G gnunet -@end example - -@node Installing components requiring sudo permission -@subsubsection Installing components requiring sudo permission - -Some components, like the nss plugin required for GNS, may require root -permissions. To allow these few components to be installed use: - -@example -$ ./configure --with-sudo -@end example - -@node Build -@subsubsection Build - -@example -$ git clone https://gnunet.org/git/gnunet/ -$ cd gnunet/ -$ ./bootstrap -@end example - -Use the required configure call including the optional installation prefix -@code{PREFIX} or the sudo permissions: - -@example -$ ./configure [ --with-sudo | --with-prefix=PREFIX ] -@end example - -@example -$ make; sudo make install -@end example - -After installing it, you need to create an empty configuration file: - -@example -mkdir ~/.gnunet; touch ~/.gnunet/gnunet.conf -@end example - -And finally you can start GNUnet with: - -@example -$ gnunet-arm -s -@end example - -@node Install the GNUnet-gtk user interface from Git -@subsection Install the GNUnet-gtk user interface from Git - - -Install depencies: - -@example -$ sudo apt-get install libgtk-3-dev libunique-3.0-dev libgladeui-dev \ - libqrencode-dev -@end example - -Build GNUnet (with an optional prefix) and execute: - -@example -$ git clone https://gnunet.org/git/gnunet-gtk/ -$ cd gnunet-gtk/ -$ ./bootstrap -$ ./configure [--prefix=PREFIX] --with-gnunet=DIRECTORY -$ make; sudo make install -@end example - -@node Build Instructions for Microsoft Windows Platforms -@section Build Instructions for Microsoft Windows Platforms - -@menu -* Introduction to building on MS Windows:: -* Requirements:: -* Dependencies & Initial Setup:: -* GNUnet Installation:: -* Adjusting Windows for running and testing GNUnet:: -* Building the GNUnet Installer:: -* Using GNUnet with Netbeans on Windows:: -@end menu - -@node Introduction to building on MS Windows -@subsection Introduction to building on MS Windows - - -This document is a guide to building GNUnet and its dependencies on -Windows platforms. GNUnet development is mostly done under GNU/Linux and -especially git checkouts may not build out of the box. -We regret any inconvenience, and if you have problems, please report -them. - -@node Requirements -@subsection Requirements - -The Howto is based upon a @strong{Windows Server 2008 32bit} -@strong{Installation}, @strong{sbuild} and thus a -@uref{http://www.mingw.org/wiki/MSYS, MSYS+MinGW} -(W32-GCC-Compiler-Suite + Unix-like Userland) installation. sbuild -is a convenient set of scripts which creates a working msys/mingw -installation and installs most dependencies required for GNUnet. - -As of the point of the creation of these instructions, -GNUnet @strong{requires} a Windows @strong{Server} 2003 or -newer for full feature support. -Windows Vista and later will also work, but -@strong{non-server version can not run a VPN-Exit-Node} as the NAT -features have been removed as of Windows Vista. - -@c TODO: We should document Windows 10! -@c It seems like the situation hasn't changed with W10 - -@node Dependencies & Initial Setup -@subsection Dependencies & Initial Setup - - -@itemize @bullet - -@item -Install a fresh version of @strong{Python 2.x}, even if you are using a -x64-OS, install a 32-bit version for use with sbuild. -Python 3.0 is currently incompatible. - -@item -Install your favorite @uref{http://code.google.com/p/tortoisegit/, git} & -@uref{http://tortoisesvn.net/, subversion}-clients. - -@item -You will also need some archive-manager like -@uref{http://www.7-zip.org/, 7zip}. - -@item -Pull a copy of sbuild to a directory of your choice, which will be used -in the remainder of this guide. For now, we will use -@file{c:\gnunet\sbuild\} - -@item -in @file{sbuild\src\mingw\mingw32-buildall.sh}, comment out the packages -@strong{gnunet-svn} and @strong{gnunet-gtk-svn}, as we don't want sbuild -to compile/install those for us. - -@item -Follow LRN's sbuild installation instructions.- -@end itemize - -Please note that sbuild may (or will most likely) fail during -installation, thus you really HAVE to @strong{check the logfiles} created -during the installation process. -Certain packages may fail to build initially due to missing dependencies, -thus you may have to -@strong{substitute those with binary-versions initially}. Later on once -dependencies are satisfied you can re-build the newer package versions. - -@strong{It is normal that you may have to repeat this step multiple times -and there is no uniform way to fix all compile-time issues, as the -build-process of many of the dependencies installed are rather unstable -on win32 and certain releases may not even compile at all.} - -Most dependencies for GNUnet have been set up by sbuild, thus we now -should add the @file{bin/} directories in your new msys and mingw -installations to PATH. You will want to create a backup of your finished -msys-environment by now. - -@node GNUnet Installation -@subsection GNUnet Installation - -First, we need to launch our msys-shell, you can do this via - -@file{C:\gnunet\sbuild\msys\msys.bat} - -You might wish to take a look at this file and adjust some -login-parameters to your msys environment. - -Also, sbuild added two pointpoints to your msys-environment, though those -might remain invisible: - -@itemize @bullet - -@item -/mingw, which will mount your mingw-directory from sbuild/mingw and the -other one is - -@item -/src which contains all the installation sources sbuild just compiled. -@end itemize - -Check out the current GNUnet sources (git HEAD) from the -GNUnet repository "gnunet.git", we will do this in your home directory: - -@code{git clone https://gnunet.org/git/gnunet/ ~/gnunet} - -Now, we will first need to bootstrap the checked out installation and then -configure it accordingly. - -@example -cd ~/gnunet -./bootstrap -STRIP=true CPPFLAGS="-DUSE_IPV6=1 -DW32_VEH" CFLAGS="$CFLAGS -g -O2" \ -./configure --prefix=/ --docdir=/share/doc/gnunet \ ---with-libiconv-prefix=/mingw --with-libintl-prefix=/mingw \ ---with-libcurl=/mingw --with-extractor=/mingw --with-sqlite=/mingw \ ---with-microhttpd=/mingw --with-plibc=/mingw --enable-benchmarks \ ---enable-expensivetests --enable-experimental --with-qrencode=/mingw \ ---enable-silent-rules --enable-experimental 2>&1 | tee -a ./configure.log -@end example - -The parameters above will configure for a reasonable GNUnet installation -to the your msys-root directory. -Depending on which features your would like to build or you may need to -specify additional dependencies. Sbuild installed most libs into -the /mingw subdirectory, so remember to prefix library locations with -this path. - -Like on a unixoid system, you might want to use your home directory as -prefix for your own GNUnet installation for development, without tainting -the buildenvironment. Just change the "prefix" parameter to point towards -~/ in this case. - -Now it's time to compile GNUnet as usual. Though this will take some time, -so you may fetch yourself a coffee or some Mate now... - -@example -make ; make install -@end example - -@node Adjusting Windows for running and testing GNUnet -@subsection Adjusting Windows for running and testing GNUnet - -Assuming the build succeeded and you -@strong{added the bin directory of your GNUnet to PATH}, you can now use -your gnunet-installation as usual. -Remember that UAC or the windows firewall may popup initially, blocking -further execution of gnunet until you acknowledge them. - -You will also have to take the usual steps to get peer-to-peer (p2p) -software running properly (port forwarding, ...), -and GNUnet will require administrative permissions as it may even -install a device-driver (in case you are using gnunet-vpn and/or -gnunet-exit). - -@node Building the GNUnet Installer -@subsection Building the GNUnet Installer - -The GNUnet installer is made with -@uref{http://nsis.sourceforge.net/, NSIS}. -The installer script is located in @file{contrib\win} in the -GNUnet source tree. - -@node Using GNUnet with Netbeans on Windows -@subsection Using GNUnet with Netbeans on Windows - -TODO - -@node Build instructions for Debian 7.5 -@section Build instructions for Debian 7.5 - - -These are the installation instructions for Debian 7.5. They were tested -using a minimal, fresh Debian 7.5 AMD64 installation without non-free -software (no contrib or non-free). -By "minimal", we mean that during installation, we did not select any -desktop environment, servers or system utilities during the "tasksel" -step. Note that the packages and the dependencies that we will install -during this chapter take about 1.5 GB of disk space. -Combined with GNUnet and space for objects during compilation, you should -not even attempt this unless you have about 2.5 GB free after the minimal -Debian installation. -Using these instructions to build a VM image is likely to require a -minimum of 4-5 GB for the VM (as you will likely also want a desktop -manager). - -GNUnet's security model assumes that your @file{/home} directory is -encrypted. Thus, if possible, you should encrypt your home partition -(or per-user home directory). - -Naturally, the exact details of the starting state for your installation -should not matter much. For example, if you selected any of those -installation groups you might simply already have some of the necessary -packages installed. -We did this for testing, as this way we are less likely to forget to -mention a required package. -Note that we will not install a desktop environment, but of course you -will need to install one to use GNUnet's graphical user interfaces. -Thus, it is suggested that you simply install the desktop environment of -your choice before beginning with the instructions. - - - -@menu -* Update:: -* Stable? Hah!:: -* Update again:: -* Installing packages:: -* Installing dependencies from source:: -* Installing GNUnet from source:: -* But wait there is more!:: -@end menu - -@node Update -@subsection Update - -After any installation, you should begin by running - -@example -# apt-get update ; apt-get upgrade -@end example - -to ensure that all of your packages are up-to-date. Note that the "#" is -used to indicate that you need to type in this command as "root" -(or prefix with "sudo"), whereas "$" is used to indicate typing in a -command as a normal user. - -@node Stable? Hah! -@subsection Stable? Hah! - -Yes, we said we start with a Debian 7.5 "stable" system. However, to -reduce the amount of compilation by hand, we will begin by allowing the -installation of packages from the testing and unstable distributions as -well. -We will stick to "stable" packages where possible, but some packages will -be taken from the other distributions. -Start by modifying @file{/etc/apt/sources.list} to contain the -following (possibly adjusted to point to your mirror of choice): - -@example -# These were there before: -deb http://ftp.de.debian.org/debian/ wheezy main -deb-src http://ftp.de.debian.org/debian/ wheezy main -deb http://security.debian.org/ wheezy/updates main -deb-src http://security.debian.org/ wheezy/updates main -deb http://ftp.de.debian.org/debian/ wheezy-updates main -deb-src http://ftp.de.debian.org/debian/ wheezy-updates main - -# Add these lines (feel free to adjust the mirror): -deb http://ftp.de.debian.org/debian/ testing main -deb http://ftp.de.debian.org/debian/ unstable main -@end example - -The next step is to create/edit your @file{/etc/apt/preferences} -file to look like this: - -@example -Package: * -Pin: release a=stable,n=wheezy -Pin-Priority: 700 - -Package: * -Pin: release o=Debian,a=testing -Pin-Priority: 650 - -Package: * -Pin: release o=Debian,a=unstable -Pin-Priority: 600 -@end example - -You can read more about Apt Preferences here and here. -Note that other pinnings are likely to also work for GNUnet, the key -thing is that you need some packages from unstable (as shown below). -However, as unstable is unlikely to be comprehensive (missing packages) -or might be problematic (crashing packages), you probably want others -from stable and/or testing. - -@node Update again -@subsection Update again - -Now, run again@ - -@example -# apt-get update@ -# apt-get upgrade@ -@end example - -to ensure that all your new distribution indices are downloaded, and -that your pinning is correct: the upgrade step should cause no changes -at all. - -@node Installing packages -@subsection Installing packages - -We begin by installing a few Debian packages from stable:@ - -@example -# apt-get install gcc make python-zbar libltdl-dev libsqlite3-dev \ - libunistring-dev libopus-dev libpulse-dev openssl libglpk-dev \ - texlive libidn11-dev libmysqlclient-dev libpq-dev libarchive-dev \ - libbz2-dev libexiv2-dev libflac-dev libgif-dev libglib2.0-dev \ - libgtk-3-dev libmagic-dev libjpeg8-dev libmpeg2-4-dev libmp4v2-dev \ - librpm-dev libsmf-dev libtidy-dev libtiff5-dev libvorbis-dev \ - libogg-dev zlib1g-dev g++ gettext libgsf-1-dev libunbound-dev \ - libqrencode-dev libgladeui-dev nasm texlive-latex-extra \ - libunique-3.0-dev gawk miniupnpc libfuse-dev libbluetooth-dev -@end example - -After that, we install a few more packages from unstable:@ - -@example -# apt-get install -t unstable nettle-dev libgstreamer1.0-dev \ - gstreamer1.0-plugins-base gstreamer1.0-plugins-good \ - libgstreamer-plugins-base1.0-dev -@end example - -@node Installing dependencies from source -@subsection Installing dependencies from source - -Next, we need to install a few dependencies from source. -You might want to do this as a "normal" user and only run the -@code{make install} steps as root (hence the @code{sudo} in the -commands below). Also, you do this from any -directory. We begin by downloading all dependencies, then extracting the -sources, and finally compiling and installing the libraries. - -For these steps, follow the instructions given in the -installation from source instruction in this order: - -@itemize @bullet -@item @ref{generic source installation - libav} -@item @ref{generic source installation - libextractor} -@item @ref{generic source installation - libgpg-error} -@item @ref{generic source installation - libgcrypt} -@item @ref{generic source installation - gnutls} -@item @ref{generic source installation - libmicrohttpd} -@item @ref{generic source installation - libgnurl} -@end itemize - -@node Installing GNUnet from source -@subsection Installing GNUnet from source - - -For this, simply follow the generic installation instructions from -here. - -@node But wait there is more! -@subsection But wait there is more! - -So far, we installed all of the packages and dependencies required to -ensure that all of GNUnet would be built. -However, while for example the plugins to interact with the MySQL or -Postgres databases have been created, we did not actually install or -configure those databases. Thus, you will need to install -and configure those databases or stick with the default Sqlite database. -Sqlite is usually fine for most applications, but MySQL can offer better -performance and Postgres better resillience. - - -@node Installing GNUnet from Git on Ubuntu 14.4 -@section Installing GNUnet from Git on Ubuntu 14.4 - -@strong{Install the required build tools:} - -@example -$ sudo apt-get install git automake autopoint autoconf -@end example - -@strong{Install the required dependencies} - -@example -$ sudo apt-get install libltdl-dev libgpg-error-dev libidn11-dev \ - libunistring-dev libglpk-dev libbluetooth-dev libextractor-dev \ - libmicrohttpd-dev libgnutls28-dev -@end example - -@strong{Choose one or more database backends} - -@itemize @bullet - -@item SQLite3: - -@example -$ sudo apt-get install libsqlite3-dev -@end example - -@item MySQL: - -@example -$ sudo apt-get install libmysqlclient-dev -@end example - -@item PostgreSQL: - -@example -$ sudo apt-get install libpq-dev postgresql -@end example - -@end itemize - -@strong{Install the optional dependencies for gnunet-conversation:} - -@example -$ sudo apt-get install gstreamer1.0 libpulse-dev libopus-dev -@end example - -@strong{Install the libgrypt 1.6.1:} - -@itemize @bullet - -@item For Ubuntu 14.04: - -@example -$ sudo apt-get install libgcrypt20-dev -@end example - -@item For Ubuntu older 14.04: - -@example -$ wget ftp://ftp.gnupg.org/gcrypt/libgcrypt/libgcrypt-1.6.1.tar.bz2 -$ tar xf libgcrypt-1.6.1.tar.bz2 -$ cd libgcrypt-1.6.1 -$ ./configure -$ sudo make install -$ cd .. -@end example - -@end itemize - -@strong{Install libgnurl} - -@strong{Install GNUnet} - -@example -$ git clone https://gnunet.org/git/gnunet/ -$ cd gnunet/ -$ ./bootstrap -@end example - -If you want to: - -@itemize @bullet - -@item Install to a different directory: - -@example ---prefix=PREFIX -@end example - -@item -Have sudo permission, but do not want to compile as root: - -@example ---with-sudo -@end example - -@item -Want debug message enabled: - -@example ---enable-logging=verbose -@end example - -@end itemize - - -@example -$ ./configure [ --with-sudo | --prefix=PREFIX | --enable-logging=verbose] -$ make; sudo make install -@end example - -After installing it, you need to create an empty configuration file: - -@example -touch ~/.config/gnunet.conf -@end example - -And finally you can start GNUnet with - -@example -$ gnunet-arm -s -@end example - -@node Build instructions for Debian 8 -@section Build instructions for Debian 8 -@c FIXME: I -> we - -These are the installation instructions for Debian 8. They were tested -sing a fresh Debian 8 AMD64 installation without non-free software (no -contrib or non-free). During installation, I only selected "lxde" for the -desktop environment. -Note that the packages and the dependencies that we will install during -this chapter take about 1.5 GB of disk space. Combined with GNUnet and -space for objects during compilation, you should not even attempt this -unless you have about 2.5 GB free after the Debian installation. -Using these instructions to build a VM image is likely to require a -minimum of 4-5 GB for the VM (as you will likely also want a desktop -manager). - -GNUnet's security model assumes that your @code{/home} directory is -encrypted. -Thus, if possible, you should encrypt your entire disk, or at least just -your home partition (or per-user home directory). - -Naturally, the exact details of the starting state for your installation -should not matter much. -For example, if you selected any of those installation groups you might -simply already have some of the necessary packages installed. Thus, it is -suggested that you simply install the desktop environment of your choice -before beginning with the instructions. - - -@menu -* Update Debian:: -* Installing Debian Packages:: -* Installing Dependencies from Source2:: -* Installing GNUnet from Source2:: -* But wait (again) there is more!:: -@end menu - -@node Update Debian -@subsection Update Debian - -After any installation, you should begin by running - -@example -# apt-get update -# apt-get upgrade -@end example - -to ensure that all of your packages are up-to-date. Note that the "#" is -used to indicate that you need to type in this command as "root" (or -prefix with "sudo"), whereas "$" is used to indicate typing in a command -as a normal user. - -@node Installing Debian Packages -@subsection Installing Debian Packages - -We begin by installing a few Debian packages from stable: - -@example -# apt-get install gcc make python-zbar libltdl-dev libsqlite3-dev \ -libunistring-dev libopus-dev libpulse-dev openssl libglpk-dev texlive \ -libidn11-dev libmysqlclient-dev libpq-dev libarchive-dev libbz2-dev \ -libflac-dev libgif-dev libglib2.0-dev libgtk-3-dev libmpeg2-4-dev \ -libtidy-dev libvorbis-dev libogg-dev zlib1g-dev g++ gettext \ -libgsf-1-dev libunbound-dev libqrencode-dev libgladeui-dev nasm \ -texlive-latex-extra libunique-3.0-dev gawk miniupnpc libfuse-dev \ -libbluetooth-dev gstreamer1.0-plugins-base gstreamer1.0-plugins-good \ -libgstreamer-plugins-base1.0-dev nettle-dev libextractor-dev \ -libgcrypt20-dev libmicrohttpd-dev -@end example - -@node Installing Dependencies from Source2 -@subsection Installing Dependencies from Source2 - -Yes, we said we start with a Debian 8 "stable" system, but because Debian -linked GnuTLS without support for DANE, we need to compile a few things, -in addition to GNUnet, still by hand. Yes, you can run GNUnet using the -respective Debian packages, but then you will not get DANE support. - -Next, we need to install a few dependencies from source. You might want -to do this as a "normal" user and only run the @code{make install} steps -as root (hence the @code{sudo} in the commands below). Also, you do this -from any directory. We begin by downloading all dependencies, then -extracting the sources, and finally compiling and installing the -libraries: - -@example -$ wget ftp://ftp.gnutls.org/gcrypt/gnutls/v3.3/gnutls-3.3.12.tar.xz -$ tar xvf gnutls-3.3.12.tar.xz -$ cd gnutls-3.3.12 ; ./configure ; make ; sudo make install ; cd .. -@end example - -For the installation and compilation of libgnurl/gnURL refer to -the generic installation section, -@xref{generic source installation - libgnurl}. - -@node Installing GNUnet from Source2 -@subsection Installing GNUnet from Source2 - -For this, simply follow the generic installation instructions from@ -here. - -@node But wait (again) there is more! -@subsection But wait (again) there is more! - -So far, we installed all of the packages and dependencies required to -ensure that all of GNUnet would be built. However, while for example the -plugins to interact with the MySQL or Postgres databases have been -created, we did not actually install or configure those databases. -Thus, you will need to install and configure those databases or stick -with the default Sqlite database. Sqlite is usually fine for most -applications, but MySQL can offer better performance and Postgres better -resillience. - -@node Build instructions for macOS -@section Build instructions for macOS -@c FIXME: I -> we - -These are the installation guidelines for macOS. -They were tested on macOS High Sierra. - -@menu -* Installing dependencies:: -* Compile from Source:: -@end menu - -@node Installing dependencies -@subsection Installing dependencies - -First, install XCode in the newest version. -See https://developer.apple.com/xcode/. - -Install Homebrew (https://brew.sh) and then install the dependencies listed above. -If a dependency does not exists in brew, you need to compile it from source. - -@example -# brew install -@end example - -@node Compile from Source -@subsection Compile from Source - -Before you start building GNUnet, you need to setup your environment. -This means that you have to make sure the proper tools are used in the build process. -For example, after installing texinfo you need to make sure the new texinfo is actually used: - -@example -# echo 'export PATH="/usr/local/opt/texinfo/bin:$PATH"' >> ~/.bash_profile -@end example - -Note: brew tells you the appropriate command when executing - -@example -# brew info texinfo -@end example - -This may also be necessary for the gettext package. - -Before you start compiling, you need to make sure gcc is used and not the clang compile of your macOS system. -On my system, gcc was actually ``gcc-7'' and gcc pointed to the clang compiler. - -@example -# export CC=gcc-7 -@end example - -After this the standard compile instructions apply. - -@c @node Build instructions for OpenBSD 6.2 -@c @section Build instructions for OpenBSD 6.2 - -@node Outdated build instructions for previous revisions -@section Outdated build instructions for previous revisions - -This chapter contains a collection of outdated, older installation guides. -They are mostly intended to serve as a starting point for writing -up-to-date instructions and should not be expected to work for -GNUnet 0.10.x. -A set of older installation instructions can also be found in the -file @file{doc/outdated-and-old-installation-instructions.txt} in the -source tree of GNUnet. - -This file covers old instructions which no longer receive security -updates or any kind of support. - -@menu -* Installing GNUnet 0.10.1 on Ubuntu 14.04:: -* Building GLPK for MinGW:: -* GUI build instructions for Ubuntu 12.04 using Subversion:: -@c * Installation with gnunet-update:: -* Instructions for Microsoft Windows Platforms (Old):: -@end menu - - -@node Installing GNUnet 0.10.1 on Ubuntu 14.04 -@subsection Installing GNUnet 0.10.1 on Ubuntu 14.04 - -Install the required dependencies: - -@example -$ sudo apt-get install libltdl-dev libgpg-error-dev libidn11-dev \ - libunistring-dev libglpk-dev libbluetooth-dev libextractor-dev \ - libmicrohttpd-dev libgnutls28-dev -@end example - -Choose one or more database backends: - -@itemize @bullet - -@item SQLite3 - -@example - $ sudo apt-get install libsqlite3-dev@ -@end example - -@item MySQL - -@example -$ sudo apt-get install libmysqlclient-dev@ -@end example - -@item PostgreSQL - -@example - $ sudo apt-get install libpq-dev postgresql@ -@end example - -@end itemize - -Install the optional dependencies for gnunet-conversation: - -@example - $ sudo apt-get install gstreamer1.0 libpulse-dev libopus-dev -@end example - -Install libgcrypt 1.6: - -@itemize @bullet - -@item For Ubuntu 14.04: - -@example -$ sudo apt-get install libgcrypt20-dev -@end example - -@item For Ubuntu older than 14.04: - -@example -wget ftp://ftp.gnupg.org/gcrypt/libgcrypt/libgcrypt-1.6.1.tar.bz2 -$ tar xf libgcrypt-1.6.1.tar.bz2 -$ cd libgcrypt-1.6.1 -$ ./configure -$ sudo make install -$ cd .. -@end example -@end itemize - -Install libgnurl: - -@pxref{generic source installation - libgnurl}. - -Install GNUnet: - -@example -$ wget http://ftpmirror.gnu.org/gnunet/gnunet-0.10.1.tar.gz -$ tar xf gnunet-0.10.1.tar.gz -$ cd gnunet-0.10.1 -@end example - -If you want to: - -@itemize @bullet - -@item -Install to a different directory: - -@example ---prefix=PREFIX -@end example - -@item -Have sudo permission, but do not want to compile as root: - -@example ---with-sudo -@end example - -@item -Want debug message enabled: - -@example ---enable-logging=verbose -@end example - -@end itemize - -@example -$ ./configure [ --with-sudo | --prefix=PREFIX | --enable-logging=verbose] -$ make; sudo make install -@end example - -After installing it, you need to create an empty configuration file: - -@example -touch ~/.config/gnunet.conf -@end example - -And finally you can start GNUnet with - -@example -$ gnunet-arm -s -@end example - -@node Building GLPK for MinGW -@subsection Building GLPK for MinGW - -GNUnet now requires the GNU Linear Programming Kit (GLPK). -Since there's is no package you can install with @code{mingw-get} you -have to compile it from source: - -@itemize @bullet - -@item Download the latest version from -@uref{http://ftp.gnu.org/gnu/glpk/} - -@item Unzip the downloaded source tarball using your favourite -unzipper application In the MSYS shell - -@item change to the respective directory - -@item Configure glpk for "i686-pc-mingw32": - -@example -./configure '--build=i686-pc-mingw32' -@end example - -@item run - -@example -make install check -@end example - -@end itemize - -MinGW does not automatically detect the correct buildtype so you have to -specify it manually. - - -@node GUI build instructions for Ubuntu 12.04 using Subversion -@subsection GUI build instructions for Ubuntu 12.04 using Subversion - -After installing GNUnet you can continue installing the GNUnet GUI tools: - -First, install the required dependencies: - -@example -$ sudo apt-get install libgladeui-dev libqrencode-dev -@end example - -Please ensure that the GNUnet shared libraries can be found by the linker. -If you installed GNUnet libraries in a non standard path -(say GNUNET_PREFIX=/usr/local/lib/), you can - -@itemize @bullet - -@item set the environmental variable permanently to: - -@example -LD_LIBRARY_PATH=$GNUNET_PREFIX -@end example - -@item or add @code{$GNUNET_PREFIX} to @file{/etc/ld.so.conf} - -@end itemize - -Now you can checkout and compile the GNUnet GUI tools: - -@example -$ git clone https://gnunet.org/git/gnunet-gtk -$ cd gnunet-gtk -$ ./bootstrap -$ ./configure --prefix=$GNUNET_PREFIX/.. --with-gnunet=$GNUNET_PREFIX/.. -$ make install -@end example - -@node Instructions for Microsoft Windows Platforms (Old) -@subsection Instructions for Microsoft Windows Platforms (Old) - -This document is a @b{DEPRECATED} installation guide for GNUnet on -Windows. -It will not work for recent GNUnet versions, but maybe it will be of -some use if problems arise. - -The Windows build uses a UNIX emulator for Windows, -@uref{http://www.mingw.org/, MinGW}, to build the executable modules. -These modules run natively on Windows and do not require additional -emulation software besides the usual dependencies. - -GNUnet development is mostly done under GNU/Linux and especially git -checkouts may not build out of the box. -We regret any inconvenience, and if you have problems, please report them. - -@menu -* Hardware and OS requirements:: -* Software installation:: -* Building libextractor and GNUnet:: -* Installer:: -* Source:: -@end menu - -@node Hardware and OS requirements -@subsubsection Hardware and OS requirements - -@itemize @bullet -@item Pentium II or equivalent processor, @geq{} 350 MHz -@item 128 MB RAM -@item 600 MB free disk space -@item Windows 2000 or Windows XP are recommended -@end itemize - -@node Software installation -@subsubsection Software installation - -@itemize @bullet - -@item -@strong{Compression software}@ - -The software packages GNUnet depends on are usually compressed using UNIX -tools like @command{tar}, @command{gzip}, @command{xzip} and -@command{bzip2}. -If you do not already have an utility that is able to extract such -archives, get @uref{http://www.7-zip.org/, 7-Zip}. - -@item -@strong{UNIX environment}@ - -The MinGW project provides the compiler toolchain that is used to build -GNUnet. -Get the following packages from the -@uref{http://sourceforge.net/projects/mingw/files/, MinGW} project: - -@itemize @bullet - -@item GCC core -@item GCC g++ -@item MSYS -@item MSYS Developer Tool Kit (msysDTK) -@item MSYS Developer Tool Kit - msys-autoconf (bin) -@item MSYS Developer Tool Kit - msys-automake (bin) -@item MinGW Runtime -@item MinGW Utilities -@item Windows API -@item Binutils -@item make -@item pdcurses -@item GDB (snapshot) -@end itemize - -@itemize @bullet - - -@item Install MSYS (to c:\mingw, for example.)@ -Do @strong{not} use spaces in the pathname. -For example, avoid a location such as @file{c:\program files\mingw}. - -@item Install MinGW runtime, utilities and GCC to a subdirectory -(to @file{c:\mingw\mingw}, for example) - -@item Install the Development Kit to the MSYS directory -(@file{c:\mingw}) - -@item Create a batch file bash.bat in your MSYS directory with -the files: - -@example -bin\sh.exe --login -@end example - -This batch file opens a shell which is used to invoke the build -processes. -MinGW's standard shell (@command{msys.bat}) is not suitable -because it opens a separate console window. -On Vista, @command{bash.bat} needs to be run as Administrator. - -@item -Start @command{bash.sh} and rename -@file{c:\mingw\mingw\lib\libstdc++.la} to avoid problems: - -@example -mv /usr/mingw/lib/libstdc++.la /usr/mingw/lib/libstdc++.la.broken -@end example - -@item -Unpack the Windows API to the MinGW directory (@file{c:\mingw\mingw\}) and -remove the declaration of DATADIR from -(@file{c:\mingw\mingw\include\objidl.h} (lines 55-58) - -@item -Unpack autoconf, automake to the MSYS directory (@file{c:\mingw}) - -@item -Install all other packages to the MinGW directory (@file{c:\mingw\mingw\}) -@end itemize - - -@item @strong{GNU Libtool}@ -GNU Libtool is required to use shared libraries. -Get the prebuilt package from here and unpack it to the -MinGW directory (@file{c:\mingw}) - -@item @strong{Pthreads}@ -GNUnet uses the portable POSIX thread library for multi-threading: - -@itemize @bullet - -@item Save -@uref{ftp://sources.redhat.com/pub/pthreads-win32/dll-latest/lib/x86/libpthreadGC2.a, libpthreadGC2.a} -(x86) or -@uref{ftp://sources.redhat.com/pub/pthreads-win32/dll-latest/lib/x64/libpthreadGC2.a, libpthreadGC2.a} -(x64) as libpthread.a into the @file{lib} -directory (@file{c:\mingw\mingw\lib\libpthread.a}). - -@item Save -@uref{ftp://sources.redhat.com/pub/pthreads-win32/dll-latest/lib/x86/pthreadGC2.dll, pthreadGC2.dll} -(x86) or -@uref{ftp://sources.redhat.com/pub/pthreads-win32/dll-latest/lib/x64/pthreadGC2.dll, libpthreadGC2.a} -(x64) into the MinGW @file{bin} directory (@file{c:\mingw\mingw\bin}). - -@item Download all header files from -@uref{ftp://sources.redhat.com/pub/pthreads-win32/dll-latest/include/, include/} -to the @file{include} directory (@file{c:\mingw\mingw\include}). -@end itemize - - -@item @strong{GNU MP}@ -GNUnet uses the GNU Multiple Precision library for special cryptographic -operations. Get the GMP binary package from the -@uref{http://sourceforge.net/projects/mingwrep/, MinGW repository} and -unpack it to the MinGW directory (@file{c:\mingw\mingw}) - -@item @strong{GNU Gettext}@ -GNU gettext is used to provide national language support. -Get the prebuilt package from hereand unpack it to the MinGW -directory (@file{c:\mingw\mingw}) - -@item @strong{GNU iconv}@ -GNU Libiconv is used for character encoding conversion. -Get the prebuilt package from here and unpack it to the MinGW -directory (@file{c:\mingw\mingw}). - -@item @strong{SQLite}@ -GNUnet uses the SQLite database to store data. -Get the prebuilt binary from here and unpack it to your MinGW directory. - -@item @strong{MySQL}@ -As an alternative to SQLite, GNUnet also supports MySQL. - -@itemize @bullet - -@item Get the binary installer from the -@uref{http://dev.mysql.com/downloads/mysql/4.1.html#Windows, MySQL project} -(version 4.1), install it and follow the instructions in -@file{README.mysql}. - -@item Create a temporary build directory (@file{c:\mysql}) - -@item Copy the directories @file{include\} and @file{lib\} from the -MySQL directory to the new directory - -@item Get the patches from -@uref{http://bugs.mysql.com/bug.php?id=8906&files=1, Bug #8906} and -@uref{http://bugs.mysql.com/bug.php?id=8872&files=1, Bug #8872} (the -latter is only required for MySQL - -@example -patch -p 0 -@end example - -@item Move @file{lib\opt\libmysql.dll} to @file{lib\libmysql.dll} - -@item Change to @file{lib\} and create an import library: - -@example -dlltool --input-def ../include/libmySQL.def \ ---dllname libmysql.dll \ ---output-lib libmysqlclient.a -k -@end example - -@item Copy include\* to include\mysql\ - -@item Pass @code{--with-mysql=/c/mysql} to -@command{./configure} and copy @file{libmysql.dll} -to your PATH or GNUnet's @file{bin} directory -@end itemize - - -@item @strong{GTK+}@ -@command{gnunet-fs-gtk} and @command{libextractor} depend on GTK. -Get the the binary and developer packages of @command{atk}, -@command{glib}, @command{gtk}, @command{iconv}, -@command{gettext-runtime}, @command{pango} from -@uref{ftp://ftp.gtk.org/pub/gtk/v2.6/win32, gtk.org} and unpack them -to the MinGW directory (@file{c:\mingw\mingw}). -@c FIXME: The URL below for pkg-config seems wrong. -Get @uref{http://www.gtk.org/download/win32.php, pkg-config} and -@command{libpng} and unpack them to the MinGW directory -(@file{c:\mingw\mingw}). -Here is an all-in-one package for the -@uref{http://ftp.gnome.org/pub/gnome/binaries/win32/gtk+/2.24/gtk+-bundle_2.24.10-20120208_win32.zip, gtk+dependencies} -. Do not overwrite any existing files! - -@item @strong{Glade}@ -@command{gnunet-*-gtk} and @command{gnunet-setup} were created using -this interface builder - -@itemize @bullet - -@item Get the Glade and libglade (-bin and -devel) packages -(without GTK!) from -@uref{http://gladewin32.sourceforge.net/, GladeWin32} and unpack them to -the MinGW directory (@file{c:\mingw\mingw}). - -@item Get @command{libxml} from here and unpack it to the MinGW -directory (@file{c:\mingw\mingw}). -@end itemize - -@c FIXME: URLs -@item @strong{zLib}@ -@command{libextractor} requires @command{zLib} to decompress some file -formats. GNUnet uses it to (de)compress meta-data. -Get zLib from here (Signature) and unpack it to the MinGW directory -(@file{c:\mingw\mingw}). - -@item @strong{Bzip2}@ -@command{libextractor} also requires @command{Bzip2} to -decompress some file formats. -Get the Bzip2 (binary and developer package) from -@uref{http://gnuwin32.sourceforge.net/packages/bzip2.htm, GnuWin32} and -unpack it to the MinGW directory (@file{c:\mingw\mingw}). - -@item @strong{Libgcrypt}@ -@command{Libgcrypt} provides the cryptographic functions used by GNUnet. -Get Libgcrypt from @uref{ftp://ftp.gnupg.org/gcrypt/libgcrypt/, here}, -compile and place it in the MinGW directory -(@file{c:\mingw\mingw}). Currently libgcrypt @geq{} 1.4.2 is required to -compile GNUnet. - -@item @strong{PlibC}@ -PlibC emulates Unix functions under Windows. Get PlibC from here and -unpack it to the MinGW directory (c:\mingw\mingw) - -@item @strong{OGG Vorbis}@ -@command{OGG Vorbis} is used to extract meta-data from @file{.ogg} files. -Get the packages -@uref{http://www.gnunet.org/libextractor/download/win/libogg-1.1.4.zip, libogg} -and -@uref{http://www.gnunet.org/libextractor/download/win/libvorbis-1.2.3.zip, libvorbis} -from the -@uref{http://ftp.gnu.org/gnu/libextractor/libextractor-w32-1.0.0.zip, libextractor win32 build} -and unpack them to the MinGW directory (c:\mingw\mingw). - -@item @strong{Exiv2}@ -(lib)Exiv2 is used to extract meta-data from files with Exiv2 meta-data. -Download -@uref{http://www.gnunet.org/libextractor/download/win/exiv2-0.18.2.zip, Exiv2} -and unpack it to the MSYS directory (c:\mingw). -@end itemize - -@node Building libextractor and GNUnet -@subsubsection Building libextractor and GNUnet - -Before you compile @command{libextractor} or @command{GNUnet}, -be sure to set @code{PKG_CONFIG_PATH}: - -@example -export PKG_CONFIG_PATH=/mingw/lib/pkgconfig -@end example - -@noindent -@xref{GNUnet Installation Handbook}, for basic instructions on building -@command{libextractor} and @command{GNUnet}. -By default, all modules that are created in this way contain -debug information and are quite large. To compile release versions -(small and fast) set the variable @code{CFLAGS}: - -@example -export CFLAGS='-O2 -march=pentium -fomit-frame-pointer' -./configure --prefix=$HOME --with-extractor=$HOME -@end example - -@node Installer -@subsubsection Installer - -The GNUnet installer is made with -@uref{http://nsis.sourceforge.net/, NSIS}. The installer script is -located in @file{contrib\win} in the GNUnet source tree. - -@node Source -@subsubsection Source - -@c FIXME: URL... or: WHERE is HERE? -The sources of all dependencies are available here. diff --git a/doc/outdated-and-old-installation-instructions.txt b/doc/outdated-and-old-installation-instructions.txt deleted file mode 100644 index f2cbe1847..000000000 --- a/doc/outdated-and-old-installation-instructions.txt +++ /dev/null @@ -1,672 +0,0 @@ -# This file contains pieces from chapter/installation.texi for systems where the LTS or otherwise support -# ended. They can be useful for people trying to write new installation instructions for those systems. -# In particual this covers: -# - FreeBSD 8 -# - Mac OS X Tiger -# - Fedora 8 -# - Gentoo with GNUnet 0.9 -# -# Sources for LTS and support ranges: -# https://www.freebsd.org/security/security.html#sup -# https://support.microsoft.com/en-us/help/17140/lifecycle-faq-general-policy-questions -# Mac products, OS is supposedly similar (no official statements exist): https://web.archive.org/web/20160706101225/https://support.apple.com/en-us/HT201624 -# https://wiki.debian.org/LTS -# https://www.ubuntu.com/info/release-end-of-life - -@node Build instructions for Gentoo -@subsection Build instructions for Gentoo - - -This page describes how to install GNUnet 0.9 on Gentoo. - -Since the GNUnet 0.9 ebuilds are not in the official portage tree yet, we need -to add them to the local portage overlay. All the commands below should be -executed as root. - -Specify your local portage directory in the /etc/make.conf, for example:@ -@code{$ echo 'PORTDIR_OVERLAY="/usr/local/portage"' >> /etc/make.conf} - -Create directories for the ebuilds:@ -@code{$ mkdir -p /usr/local/portage/media-libs/libextractor /usr/local/portage/net-p2p/gnunet/files} - -Download the latest ebuilds, init and config files from here and put them into -respective directories:@ -@code{$ cp libextractor-0.6.2.ebuild /usr/local/portage/media-libs/libextractor@ - $ cp gnunet-0.9.2.ebuild /usr/local/portage/net-p2p/gnunet@ - $ cp gnunet-0.9.2.conf gnunet-0.9.2.confd gnunet-0.9.2.initd /usr/local/portage/net-p2p/gnunet/files} - -Generate Manifest files for the ebuilds:@ -@code{$ cd /usr/local/portage/net-p2p/gnunet@ - $ ebuild gnunet-0.9.2.ebuild digest@ - $ cd /usr/local/portage/media-libs/libextractor@ - $ ebuild libextractor-0.6.2.ebuild digest} - -Unmask GNUnet and dependencies in the /etc/portage/package.keywords. For -example, if you use x86-64 architecture, add the following lines:@ -@code{net-p2p/gnunet ~amd64@ - media-libs/libextractor ~amd64@ - net-libs/libmicrohttpd ~amd64@ - net-misc/curl ~amd64} - -Add either sqlite or mysql USE-flag in the /etc/portage/package.use:@ -@code{net-p2p/gnunet sqlite} - -Now everything is ready to install GNUnet:@ -@code{$ emerge -av gnunet} - -Use /etc/init.d/gnunet to start/stop GNUnet. - - - - -@node Basic Installation for Fedora/PlanetLab nodes running Fedora 8 . -@subsection Basic Installation for Fedora/PlanetLab nodes running Fedora 8 . -@c %**end of header - -@strong{This documentation is outdated and not valid for GNUnet 0.10.0!}@ - GNUnet installation on Fedora 8/Planetlab nodes can be done as following: - -1. Install the build tools to build GNUnet@ -@example -sudo yum -y -t --nogpgcheck install gcc make automake autoconf gettext-devel \ -texinfo zlib-devel subversion@ -@end example - -2. Install the GNUnet dependencies@ -@example -sudo yum -y -t --nogpgcheck install gnutls-devel gnutls-devel libgcrypt-devel \ -sqlite-devel postgresql-devel mysql-devel libgsf-devel libvorbis-devel \ -libidn-devel -@end example - -3. Install outdated dependencies from source@ - libtool@ -@code{@ - wget http://ftp.gnu.org/gnu/libtool/libtool-2.4.2.tar.gz@ - tar xvfz libtool-2.4.2.tar.gz@ - cd libtool-2.4.2@ - ./configure@ - sudo make install@ -} - -libtool@ -@code{@ - wget http://ftp.gnu.org/gnu/libtool/libtool-2.4.2.tar.gz@ - tar xvfz libtool-2.4.2.tar.gz@ - cd libtool-2.4.2@ - ./configure@ - sudo make install@ -} - -glpk@ -@code{@ - wget http://ftp.gnu.org/gnu/glpk/glpk-4.47.tar.gz@ - tar xvfz glpk-4.47.tar.gz@ - cd glpk-4.47@ - ./configure@ - sudo make install@ -} - -libgpg-error@ -@code{@ - wget ftp://ftp.gnupg.org/gcrypt/libgpg-error/libgpg-error-1.10.tar.bz2@ - tar xvfj libgpg-error-1.10.tar.bz2@ - cd libgpg-error-1.10@ - ./configure --prefix=/usr@ - sudo make install@ -} - -libgcrypt@ -@code{@ - wget ftp://ftp.gnupg.org/gcrypt/libgcrypt/libgcrypt-1.5.0.tar.bz2@ - tar xvfj libgcrypt-1.5.0.tar.tar.bz2@ - cd libgcrypt-1.5.0@ - ./configure --prefix=/usr@ - sudo make install@ -} - -libcurl@ -@code{@ - wget http://curl.haxx.se/download/curl-7.26.0.tar.gz@ - tar xvfz curl-7.26.0.tar.gz@ - cd curl-7.26.0@ - ./configure@ - sudo make install@ -} - -libunistring@ -@code{@ - wget http://ftp.gnu.org/gnu/libunistring/libunistring-0.9.3.tar.gz@ - tar xvfz libunistring-0.9.3.tar.gz@ - cd libunistring-0.9.3@ - ./configure@ - sudo make install@ -} - -4. Remove conflicting packages@ -@code{@ - sudo rpm -e --nodeps libgcrypt libgpg-error@ -} - -4. Install libextractor@ -@code{@ - wget ftp://ftp.gnu.org/gnu/libextractor/libextractor-0.6.3.tar.gz@ - tar xvfz libextractor-0.6.3.tar.gz@ - cd libextractor-0.6.3@ - ./configure@ - sudo make install@ -} - -5. Install libmicrohttpd and dependencies - -nettle@ -@code{@ - wget http://ftp.gnu.org/gnu/nettle/nettle-2.5.tar.gz@ - tar xvfz nettle-2.5.tar.gz@ - cd nettle-2.5@ - ./configure@ - sudo make install@ -} - -GnuTLS@ -@code{@ - wget http://ftp.gnu.org/gnu/gnutls/gnutls-2.12.20.tar.bz2@ - tar xvfj gnutls-2.12.20.tar.bz2@ - cd gnutls-2.12.20@ - ./configure --without-p11-kit@ - sudo make install@ -} - -libmicrohttpd@ -@code{@ - wget ftp://ftp.gnu.org/gnu/libmicrohttpd/libmicrohttpd-0.9.21.tar.gz@ - tar xvfz libmicrohttpd-0.9.21.tar.gz@ - cd libmicrohttpd-0.9.21@ - ./configure@ - sudo make install@ -} - -6. Set GNUnet prefix and add to PATH@ -@code{@ - export GNUNET_PREFIX=@ - export PATH=$PATH:$GNUNET_PREFIX/bin@ -} - -7. Install GNUnet from svn@ -@example - export LD_LIBRARY_PATH=/usr/local/lib@ - svn co https://gnunet.org/svn/gnunet@ - cd gnunet@ - libtoolize@ - ./bootstrap@ - ./configure --prefix=$GNUNET_PREFIX --with-extractor=/usr/local \ - --with-curl=/usr/local --with-mysql=/usr/lib/mysql --enable-logging=verbose@ - make install@ -@end example - -Done! - - -@node Build instructions for FreeBSD 8 -@subsection Build instructions for FreeBSD 8 - -To get GNUnet 0.9 to compile on FreeBSD (at least FreeBSD 8.0):@ in order to -install the library @code{libiconv}, at first change the directory to your -ports directory, e.g.@ -@code{@ - $ cd /usr/ports/@ -}@ - following that, go to the install file of @code{libiconv} and install it,@ -@code{@ - $ cd converters/libiconv,@ - $ make install@ -} - -after that, change the directory to where you will check out -@code{libextractor} and GNUnet, and install latest @code{libextractor},@ - first of all, checkout @code{libextractor}, e.g.@ -@code{@ - $ svn co https://gnunet.org/svn/Extractor@ -}@ - then change the directory into which it was checked out, e.g.@ -@code{@ - $ cd Extractor@ -}@ - before the installation, you should do following steps,@ - -@example -$ ./bootstrap@ -$ ./configure --with-ltdl-include=/usr/local/include \ - --with-ltdl-lib=/usr/local/lib@ -@end example - -if these steps complete successfully, you can install the library,@ - -@example -$ make install@ -@end example - -to check out the GNUnet, you should do the similar steps as -@code{libextractor}, firstly, change back to starting directory, e.g.@ -@code{@ - $ cd ../@ -}@ - Set the following environmental variables:@ -@code{@ - export CPPFLAGS="-I/usr/local/include"@ - export LDFLAGS="-L/usr/local/lib"@ -}@ - next, checkout GNUnet using@ -@code{@ - $ svn co https://gnunet.org/svn/gnunet@ -}@ - then change directory into newly checked out directory,@ -@code{@ - $ cd gnunet@ -}@ - at last, start to install GNUnet,@ - -@example - $ ./bootstrap@ - $ ./configure --with-ltdl-include=/usr/local/include \ - --with-ltdl-lib=/usr/local/lib --with-extractor=/usr/local - -## NOTE: you may not need the --with-extractor option!@ - -$ make install -@end example - - - -@node Basic installation for Mac OS X -@subsection Basic installation for Mac OS X - -This documentation may be outdated! - -This page is providing guidelines for users trying to install GNUnet on Mac OS -X.@ Mainly users trying to install GNUnet by building source code are the most -welcome readers.@ The steps below are tested on an Intel Architecture running -Mac OS X Tiger (10.4.11). Ideally they should work on other Mac boxes with -different configurations as all the configuration done for it is dependent on -@uref{http://www.macports.org/, MacPorts} - -For having GNUnet installed successfully, some dependencies should be firstly -resolved: - -@itemize @bullet - -@item -Install/Update your @uref{http://developer.apple.com/tools/xcode/, Xcode} -version 3.2.1 or later for Snow Leopard, 3.1.4 or later for Leopard, or 2.5 for -Tiger. - -@item -Download and install @uref{http://www.macports.org/, MacPorts}.@ -Now you are ready for installing GNunet dependencies. - -@item -First, you'd better make sure that: /opt/local/bin and /opt/local/sbin are -available in your PATH. (For doing so, open a terminal and type:@ - -@example -$ echo $PATH -@end example - -and examine the output of it). If the paths are not available in your -environment, you have to add them (You can add them by editing your .profile -file in your home directory, append them to the PATH line). Then type: -@example -$ source ~/.profile -@end example - -and re-examine the echo command output. - -@item -Use MacPorts to download and install the dependencies:@ -The libraries are: - -@itemize @bullet - -@item -@uref{http://trac.macports.org/browser/trunk/dports/www/libmicrohttpd/Portfile, libmicrohttpd.} - -@item -@uref{http://trac.macports.org/browser/trunk/dports/devel/libgcrypt/Portfile, libgcrypt.} - -@item -@uref{http://trac.macports.org/browser/trunk/dports/net/curl/Portfile, libcurl.} - -@item -@uref{http://trac.macports.org/browser/trunk/dports/devel/libtool/Portfile, libltdl.} - -@item -@uref{http://trac.macports.org/browser/trunk/dports/databases/sqlite3/Portfile, SQlite.} - -@item -libunistring - -@item -glpk - -@end itemize - -The port command is as follows:@ -@example -port install libmicrohttpd libgcrypt curl libtool sqlite3 linunistring glpk -@end example -One of the dependencies, the libextractor, should be explicitly installed, -since the version available from macports is outdated to work with GNUnet. To -install the latest libextractor: -@itemize @bullet - - -@item -Install the Subversion Client:@ -For more information about Subversion visit: -@uref{http://subversion.tigris.org/, http://subversion.tigris.org/} - -@example -# port install subversion -@end example - - -@item -Use Subversion to download the latest Extractor: -@example -$ svn checkout https://gnunet.org/svn/Extractor -@end example - - -@item -Go to the installation directory of the Extractor, compile and install it: -@example -$ ./bootstrap -$ export CPPFLAGS="-I/opt/local/include" -$ export LDFLAGS="-L/opt/local/lib" -$ ./configure --prefix=/opt/local -$ make -# make install -@end example - -@end itemize - - -@item -Now, your system is ready to install GNunet. If you downloaded GNUnet by -checking it out from svn, you should start by running the bootstrap script. -Open a terminal pointing to the GNUnet directory and type:@ - -@example -$ ./bootstrap -@end example - - -@item -Run the configure script: -@example -$ export CPPFLAGS="-I/opt/local/include" -$ export LDFLAGS="-L/opt/local/lib" -$ ./configure --prefix=/tmp/gnunet_build -@end example - - -GNUnet will be installed in the directory /tmp/gnunet_build (Of course that -installation path can be changed).@ The CPPFLAGS and LDFLAGS are mentioned in -order to inform the compiler and the linker to lookup headers and libraries in -/opt/local/include and /opt/local/lib. - -@item -Compile@ - -@example -$ make -@end example - - -@item -Install GNUnet -@example -# make install -@end example - -@end itemize - - -@node Basic Installation for Fedora/PlanetLab nodes running Fedora 12 -@subsection Basic Installation for Fedora/PlanetLab nodes running Fedora 12 - - -@strong{This documentation is outdated and not valid for GNUnet 0.10.0!}@ - -GNUnet installation on Fedora 8/Planetlab nodes can be done as following: - -1. Install the build tools to build GNUnet@ -@example -sudo yum -y -t --nogpgcheck install gcc make autoconf gettext-devel \ -texinfo subversion@ -@end example - -2. Install the GNUnet dependencies@ -@example -sudo yum -y -t --nogpgcheck install libunistring-devel libunistring-devel \ -libgcrypt-devel zlib-devel sqlite-devel postgresql-devel mysql-devel \ -libgsf-devel libvorbis-devel@ -@end example - -3. Install outdated dependencies from source@ -libtool@ -@example -wget http://ftp.gnu.org/gnu/libtool/libtool-2.4.2.tar.gz@ -tar xvfz libtool-2.4.2.tar.gz@ -cd libtool-2.4.2@ -./configure@ -sudo make install@ -@end example - -glpk@ -@example -wget http://ftp.gnu.org/gnu/glpk/glpk-4.47.tar.gz@ -tar xvfz glpk-4.47.tar.gz@ -cd glpk-4.47@ -./configure@ -sudo make install@ -@end example - -libcurl@ -@example -wget http://curl.haxx.se/download/curl-7.26.0.tar.gz@ -tar xvfz curl-7.26.0.tar.gz@ -cd curl-7.26.0@ -./configure@ -sudo make install@ -@end example - -4. Install libextractor@ -@example -svn co https://gnunet.org/svn/libextractor@ -cd libextractor@ -libtoolize@ -./bootstrap@ -./configure@ -sudo make install@ -@end example - -5. Install libmicrohttpd@ -@example -svn co https://gnunet.org/svn/libmicrohttpd@ -cd libmicrohttpd@ -libtoolize@ -./bootstrap@ -./configure@ -sudo make install@ -@end example - -6. Set GNUnet prefix and add to PATH@ -@example -export GNUNET_PREFIX=@ -export PATH=$PATH:$GNUNET_PREFIX/bin@ -@end example - -7. Install GNUnet from svn@ -@example -export LD_LIBRARY_PATH=/usr/local/lib@ -svn co https://gnunet.org/svn/gnunet@ -cd gnunet@ -libtoolize@ -./bootstrap@ -./configure --prefix=$GNUNET_PREFIX --with-extractor=/usr \ - --with-mysql=/usr/lib/mysql --enable-logging=verbose@ -make install@ -@end example - -Done! - - -@node Basic Installation for Fedora/PlanetLab nodes running Fedora 8 . -@subsection Basic Installation for Fedora/PlanetLab nodes running Fedora 8 . -@c %**end of header - -@strong{This documentation is outdated and not valid for GNUnet 0.10.0!}@ - GNUnet installation on Fedora 8/Planetlab nodes can be done as following: - -1. Install the build tools to build GNUnet@ -@example -sudo yum -y -t --nogpgcheck install gcc make automake autoconf gettext-devel \ -texinfo zlib-devel subversion@ -@end example - -2. Install the GNUnet dependencies@ -@example -sudo yum -y -t --nogpgcheck install gnutls-devel gnutls-devel libgcrypt-devel \ -sqlite-devel postgresql-devel mysql-devel libgsf-devel libvorbis-devel \ -libidn-devel -@end example - -3. Install outdated dependencies from source@ - libtool@ -@code{@ - wget http://ftp.gnu.org/gnu/libtool/libtool-2.4.2.tar.gz@ - tar xvfz libtool-2.4.2.tar.gz@ - cd libtool-2.4.2@ - ./configure@ - sudo make install@ -} - -libtool@ -@code{@ - wget http://ftp.gnu.org/gnu/libtool/libtool-2.4.2.tar.gz@ - tar xvfz libtool-2.4.2.tar.gz@ - cd libtool-2.4.2@ - ./configure@ - sudo make install@ -} - -glpk@ -@code{@ - wget http://ftp.gnu.org/gnu/glpk/glpk-4.47.tar.gz@ - tar xvfz glpk-4.47.tar.gz@ - cd glpk-4.47@ - ./configure@ - sudo make install@ -} - -libgpg-error@ -@code{@ - wget ftp://ftp.gnupg.org/gcrypt/libgpg-error/libgpg-error-1.10.tar.bz2@ - tar xvfj libgpg-error-1.10.tar.bz2@ - cd libgpg-error-1.10@ - ./configure --prefix=/usr@ - sudo make install@ -} - -libgcrypt@ -@code{@ - wget ftp://ftp.gnupg.org/gcrypt/libgcrypt/libgcrypt-1.5.0.tar.bz2@ - tar xvfj libgcrypt-1.5.0.tar.tar.bz2@ - cd libgcrypt-1.5.0@ - ./configure --prefix=/usr@ - sudo make install@ -} - -libcurl@ -@code{@ - wget http://curl.haxx.se/download/curl-7.26.0.tar.gz@ - tar xvfz curl-7.26.0.tar.gz@ - cd curl-7.26.0@ - ./configure@ - sudo make install@ -} - -libunistring@ -@code{@ - wget http://ftp.gnu.org/gnu/libunistring/libunistring-0.9.3.tar.gz@ - tar xvfz libunistring-0.9.3.tar.gz@ - cd libunistring-0.9.3@ - ./configure@ - sudo make install@ -} - -4. Remove conflicting packages@ -@code{@ - sudo rpm -e --nodeps libgcrypt libgpg-error@ -} - -4. Install libextractor@ -@code{@ - wget ftp://ftp.gnu.org/gnu/libextractor/libextractor-0.6.3.tar.gz@ - tar xvfz libextractor-0.6.3.tar.gz@ - cd libextractor-0.6.3@ - ./configure@ - sudo make install@ -} - -5. Install libmicrohttpd and dependencies - -nettle@ -@code{@ - wget http://ftp.gnu.org/gnu/nettle/nettle-2.5.tar.gz@ - tar xvfz nettle-2.5.tar.gz@ - cd nettle-2.5@ - ./configure@ - sudo make install@ -} - -GnuTLS@ -@code{@ - wget http://ftp.gnu.org/gnu/gnutls/gnutls-2.12.20.tar.bz2@ - tar xvfj gnutls-2.12.20.tar.bz2@ - cd gnutls-2.12.20@ - ./configure --without-p11-kit@ - sudo make install@ -} - -libmicrohttpd@ -@code{@ - wget ftp://ftp.gnu.org/gnu/libmicrohttpd/libmicrohttpd-0.9.21.tar.gz@ - tar xvfz libmicrohttpd-0.9.21.tar.gz@ - cd libmicrohttpd-0.9.21@ - ./configure@ - sudo make install@ -} - -6. Set GNUnet prefix and add to PATH@ -@code{@ - export GNUNET_PREFIX=@ - export PATH=$PATH:$GNUNET_PREFIX/bin@ -} - -7. Install GNUnet from svn@ -@example - export LD_LIBRARY_PATH=/usr/local/lib@ - svn co https://gnunet.org/svn/gnunet@ - cd gnunet@ - libtoolize@ - ./bootstrap@ - ./configure --prefix=$GNUNET_PREFIX --with-extractor=/usr/local \ - --with-curl=/usr/local --with-mysql=/usr/lib/mysql --enable-logging=verbose@ - make install@ -@end example - -Done! - - diff --git a/doc/system_specific/FROM_SOURCE b/doc/system_specific/FROM_SOURCE new file mode 100644 index 000000000..074b6a91e --- /dev/null +++ b/doc/system_specific/FROM_SOURCE @@ -0,0 +1,1423 @@ +@node Build instructions for Ubuntu 12.04 using Git +@section Build instructions for Ubuntu 12.04 using Git + +@menu +* Install the required build tools:: +* Install libgcrypt 1.6 and libgpg-error:: +* Install gnutls with DANE support:: +* Install libgnurl:: +* Install libmicrohttpd from Git:: +* Install libextractor from Git:: +* Install GNUnet dependencies:: +* Build GNUnet:: +* Install the GNUnet-gtk user interface from Git:: +@end menu + +@node Install the required build tools +@subsection Install the required build tools + +First, make sure Git is installed on your system: + +@example +$ sudo apt-get install git +@end example + +Install the essential buildtools: + +@example +$ sudo apt-get install automake autopoint autoconf libtool +@end example + +@node Install libgcrypt 1.6 and libgpg-error +@subsection Install libgcrypt 1.6 and libgpg-error + +@ref{generic source installation - libgpg-error} + +@node Install gnutls with DANE support +@subsection Install gnutls with DANE support + +@itemize @bullet +@item @ref{generic source installation - nettle} +@item @ref{generic source installation - ldns} +@item @ref{generic source installation - libunbound/unbound} +@item @ref{generic source installation - gnutls} +@item @ref{generic source installation - libgcrypt} +@end itemize + +@node Install libgnurl +@subsection Install libgnurl + +Follow the @ref{generic source installation - libgnurl}. + +@node Install libmicrohttpd from Git +@subsection Install libmicrohttpd from Git + +@example +$ git clone https://gnunet.org/git/libmicrohttpd +$ cd libmicrohttpd/ +$ ./bootstrap +$ ./configure +$ sudo make install ; cd .. +@end example + +@node Install libextractor from Git +@subsection Install libextractor from Git + +Install libextractor dependencies: + +@example +$ sudo apt-get install zlib1g-dev libgsf-1-dev libmpeg2-4-dev \ + libpoppler-dev libvorbis-dev libexiv2-dev libjpeg-dev \ + libtiff-dev libgif-dev libvorbis-dev libflac-dev libsmf-dev \ + g++ +@end example + +Build libextractor: + +@example +$ git clone https://gnunet.org/git/libextractor +$ cd libextractor +$ ./bootstrap +$ ./configure +$ sudo make install ; cd .. +@end example + +@node Install GNUnet dependencies +@subsection Install GNUnet dependencies + +@example +$ sudo apt-get install libidn11-dev libunistring-dev libglpk-dev \ + libpulse-dev libbluetooth-dev libsqlite-dev +@end example + +Install libopus: + +@example +$ wget http://downloads.xiph.org/releases/opus/opus-1.1.tar.gz +$ tar xf opus-1.1.tar.gz +$ cd opus-1.1/ +$ ./configure +$ sudo make install ; cd .. +@end example + +Choose one or more database backends: + +SQLite3: +@example +$ sudo apt-get install libsqlite3-dev +@end example +MySQL: +@example +$ sudo apt-get install libmysqlclient-dev +@end example +PostgreSQL: +@example +$ sudo apt-get install libpq-dev postgresql +@end example + + + +@node Build GNUnet +@subsection Build GNUnet + + + +@menu +* Configuring the installation path:: +* Configuring the system:: +* Installing components requiring sudo permission:: +* Build:: +@end menu + +@node Configuring the installation path +@subsubsection Configuring the installation path + +You can specify the location of the GNUnet installation by setting the +prefix when calling the configure script with @code{--prefix=DIRECTORY} + +@example +$ export PATH=$PATH:DIRECTORY/bin +@end example + +@node Configuring the system +@subsubsection Configuring the system + +Please make sure NOW that you have created a user and group 'gnunet' +and additionally a group 'gnunetdns': + +@example +$ sudo addgroup gnunet +$ sudo addgroup gnunetdns +$ sudo adduser gnunet +@end example + +Each GNUnet user should be added to the 'gnunet' group (may +require fresh login to come into effect): + +@example +$ sudo useradd -G gnunet +@end example + +@node Installing components requiring sudo permission +@subsubsection Installing components requiring sudo permission + +Some components, like the nss plugin required for GNS, may require root +permissions. To allow these few components to be installed use: + +@example +$ ./configure --with-sudo +@end example + +@node Build +@subsubsection Build + +@example +$ git clone https://gnunet.org/git/gnunet/ +$ cd gnunet/ +$ ./bootstrap +@end example + +Use the required configure call including the optional installation prefix +@code{PREFIX} or the sudo permissions: + +@example +$ ./configure [ --with-sudo | --with-prefix=PREFIX ] +@end example + +@example +$ make; sudo make install +@end example + +After installing it, you need to create an empty configuration file: + +@example +mkdir ~/.gnunet; touch ~/.gnunet/gnunet.conf +@end example + +And finally you can start GNUnet with: + +@example +$ gnunet-arm -s +@end example + +@node Install the GNUnet-gtk user interface from Git +@subsection Install the GNUnet-gtk user interface from Git + + +Install depencies: + +@example +$ sudo apt-get install libgtk-3-dev libunique-3.0-dev libgladeui-dev \ + libqrencode-dev +@end example + +Build GNUnet (with an optional prefix) and execute: + +@example +$ git clone https://gnunet.org/git/gnunet-gtk/ +$ cd gnunet-gtk/ +$ ./bootstrap +$ ./configure [--prefix=PREFIX] --with-gnunet=DIRECTORY +$ make; sudo make install +@end example + +@node Build Instructions for Microsoft Windows Platforms +@section Build Instructions for Microsoft Windows Platforms + +@menu +* Introduction to building on MS Windows:: +* Requirements:: +* Dependencies & Initial Setup:: +* GNUnet Installation:: +* Adjusting Windows for running and testing GNUnet:: +* Building the GNUnet Installer:: +* Using GNUnet with Netbeans on Windows:: +@end menu + +@node Introduction to building on MS Windows +@subsection Introduction to building on MS Windows + + +This document is a guide to building GNUnet and its dependencies on +Windows platforms. GNUnet development is mostly done under GNU/Linux and +especially git checkouts may not build out of the box. +We regret any inconvenience, and if you have problems, please report +them. + +@node Requirements +@subsection Requirements + +The Howto is based upon a @strong{Windows Server 2008 32bit} +@strong{Installation}, @strong{sbuild} and thus a +@uref{http://www.mingw.org/wiki/MSYS, MSYS+MinGW} +(W32-GCC-Compiler-Suite + Unix-like Userland) installation. sbuild +is a convenient set of scripts which creates a working msys/mingw +installation and installs most dependencies required for GNUnet. + +As of the point of the creation of these instructions, +GNUnet @strong{requires} a Windows @strong{Server} 2003 or +newer for full feature support. +Windows Vista and later will also work, but +@strong{non-server version can not run a VPN-Exit-Node} as the NAT +features have been removed as of Windows Vista. + +@c TODO: We should document Windows 10! +@c It seems like the situation hasn't changed with W10 + +@node Dependencies & Initial Setup +@subsection Dependencies & Initial Setup + + +@itemize @bullet + +@item +Install a fresh version of @strong{Python 2.x}, even if you are using a +x64-OS, install a 32-bit version for use with sbuild. +Python 3.0 is currently incompatible. + +@item +Install your favorite @uref{http://code.google.com/p/tortoisegit/, git} & +@uref{http://tortoisesvn.net/, subversion}-clients. + +@item +You will also need some archive-manager like +@uref{http://www.7-zip.org/, 7zip}. + +@item +Pull a copy of sbuild to a directory of your choice, which will be used +in the remainder of this guide. For now, we will use +@file{c:\gnunet\sbuild\} + +@item +in @file{sbuild\src\mingw\mingw32-buildall.sh}, comment out the packages +@strong{gnunet-svn} and @strong{gnunet-gtk-svn}, as we don't want sbuild +to compile/install those for us. + +@item +Follow LRN's sbuild installation instructions.- +@end itemize + +Please note that sbuild may (or will most likely) fail during +installation, thus you really HAVE to @strong{check the logfiles} created +during the installation process. +Certain packages may fail to build initially due to missing dependencies, +thus you may have to +@strong{substitute those with binary-versions initially}. Later on once +dependencies are satisfied you can re-build the newer package versions. + +@strong{It is normal that you may have to repeat this step multiple times +and there is no uniform way to fix all compile-time issues, as the +build-process of many of the dependencies installed are rather unstable +on win32 and certain releases may not even compile at all.} + +Most dependencies for GNUnet have been set up by sbuild, thus we now +should add the @file{bin/} directories in your new msys and mingw +installations to PATH. You will want to create a backup of your finished +msys-environment by now. + +@node GNUnet Installation +@subsection GNUnet Installation + +First, we need to launch our msys-shell, you can do this via + +@file{C:\gnunet\sbuild\msys\msys.bat} + +You might wish to take a look at this file and adjust some +login-parameters to your msys environment. + +Also, sbuild added two pointpoints to your msys-environment, though those +might remain invisible: + +@itemize @bullet + +@item +/mingw, which will mount your mingw-directory from sbuild/mingw and the +other one is + +@item +/src which contains all the installation sources sbuild just compiled. +@end itemize + +Check out the current GNUnet sources (git HEAD) from the +GNUnet repository "gnunet.git", we will do this in your home directory: + +@code{git clone https://gnunet.org/git/gnunet/ ~/gnunet} + +Now, we will first need to bootstrap the checked out installation and then +configure it accordingly. + +@example +cd ~/gnunet +./bootstrap +STRIP=true CPPFLAGS="-DUSE_IPV6=1 -DW32_VEH" CFLAGS="$CFLAGS -g -O2" \ +./configure --prefix=/ --docdir=/share/doc/gnunet \ +--with-libiconv-prefix=/mingw --with-libintl-prefix=/mingw \ +--with-libcurl=/mingw --with-extractor=/mingw --with-sqlite=/mingw \ +--with-microhttpd=/mingw --with-plibc=/mingw --enable-benchmarks \ +--enable-expensivetests --enable-experimental --with-qrencode=/mingw \ +--enable-silent-rules --enable-experimental 2>&1 | tee -a ./configure.log +@end example + +The parameters above will configure for a reasonable GNUnet installation +to the your msys-root directory. +Depending on which features your would like to build or you may need to +specify additional dependencies. Sbuild installed most libs into +the /mingw subdirectory, so remember to prefix library locations with +this path. + +Like on a unixoid system, you might want to use your home directory as +prefix for your own GNUnet installation for development, without tainting +the buildenvironment. Just change the "prefix" parameter to point towards +~/ in this case. + +Now it's time to compile GNUnet as usual. Though this will take some time, +so you may fetch yourself a coffee or some Mate now... + +@example +make ; make install +@end example + +@node Adjusting Windows for running and testing GNUnet +@subsection Adjusting Windows for running and testing GNUnet + +Assuming the build succeeded and you +@strong{added the bin directory of your GNUnet to PATH}, you can now use +your gnunet-installation as usual. +Remember that UAC or the windows firewall may popup initially, blocking +further execution of gnunet until you acknowledge them. + +You will also have to take the usual steps to get peer-to-peer (p2p) +software running properly (port forwarding, ...), +and GNUnet will require administrative permissions as it may even +install a device-driver (in case you are using gnunet-vpn and/or +gnunet-exit). + +@node Building the GNUnet Installer +@subsection Building the GNUnet Installer + +The GNUnet installer is made with +@uref{http://nsis.sourceforge.net/, NSIS}. +The installer script is located in @file{contrib\win} in the +GNUnet source tree. + +@node Using GNUnet with Netbeans on Windows +@subsection Using GNUnet with Netbeans on Windows + +TODO + +@node Build instructions for Debian 7.5 +@section Build instructions for Debian 7.5 + + +These are the installation instructions for Debian 7.5. They were tested +using a minimal, fresh Debian 7.5 AMD64 installation without non-free +software (no contrib or non-free). +By "minimal", we mean that during installation, we did not select any +desktop environment, servers or system utilities during the "tasksel" +step. Note that the packages and the dependencies that we will install +during this chapter take about 1.5 GB of disk space. +Combined with GNUnet and space for objects during compilation, you should +not even attempt this unless you have about 2.5 GB free after the minimal +Debian installation. +Using these instructions to build a VM image is likely to require a +minimum of 4-5 GB for the VM (as you will likely also want a desktop +manager). + +GNUnet's security model assumes that your @file{/home} directory is +encrypted. Thus, if possible, you should encrypt your home partition +(or per-user home directory). + +Naturally, the exact details of the starting state for your installation +should not matter much. For example, if you selected any of those +installation groups you might simply already have some of the necessary +packages installed. +We did this for testing, as this way we are less likely to forget to +mention a required package. +Note that we will not install a desktop environment, but of course you +will need to install one to use GNUnet's graphical user interfaces. +Thus, it is suggested that you simply install the desktop environment of +your choice before beginning with the instructions. + + + +@menu +* Update:: +* Stable? Hah!:: +* Update again:: +* Installing packages:: +* Installing dependencies from source:: +* Installing GNUnet from source:: +* But wait there is more!:: +@end menu + +@node Update +@subsection Update + +After any installation, you should begin by running + +@example +# apt-get update ; apt-get upgrade +@end example + +to ensure that all of your packages are up-to-date. Note that the "#" is +used to indicate that you need to type in this command as "root" +(or prefix with "sudo"), whereas "$" is used to indicate typing in a +command as a normal user. + +@node Stable? Hah! +@subsection Stable? Hah! + +Yes, we said we start with a Debian 7.5 "stable" system. However, to +reduce the amount of compilation by hand, we will begin by allowing the +installation of packages from the testing and unstable distributions as +well. +We will stick to "stable" packages where possible, but some packages will +be taken from the other distributions. +Start by modifying @file{/etc/apt/sources.list} to contain the +following (possibly adjusted to point to your mirror of choice): + +@example +# These were there before: +deb http://ftp.de.debian.org/debian/ wheezy main +deb-src http://ftp.de.debian.org/debian/ wheezy main +deb http://security.debian.org/ wheezy/updates main +deb-src http://security.debian.org/ wheezy/updates main +deb http://ftp.de.debian.org/debian/ wheezy-updates main +deb-src http://ftp.de.debian.org/debian/ wheezy-updates main + +# Add these lines (feel free to adjust the mirror): +deb http://ftp.de.debian.org/debian/ testing main +deb http://ftp.de.debian.org/debian/ unstable main +@end example + +The next step is to create/edit your @file{/etc/apt/preferences} +file to look like this: + +@example +Package: * +Pin: release a=stable,n=wheezy +Pin-Priority: 700 + +Package: * +Pin: release o=Debian,a=testing +Pin-Priority: 650 + +Package: * +Pin: release o=Debian,a=unstable +Pin-Priority: 600 +@end example + +You can read more about Apt Preferences here and here. +Note that other pinnings are likely to also work for GNUnet, the key +thing is that you need some packages from unstable (as shown below). +However, as unstable is unlikely to be comprehensive (missing packages) +or might be problematic (crashing packages), you probably want others +from stable and/or testing. + +@node Update again +@subsection Update again + +Now, run again@ + +@example +# apt-get update@ +# apt-get upgrade@ +@end example + +to ensure that all your new distribution indices are downloaded, and +that your pinning is correct: the upgrade step should cause no changes +at all. + +@node Installing packages +@subsection Installing packages + +We begin by installing a few Debian packages from stable:@ + +@example +# apt-get install gcc make python-zbar libltdl-dev libsqlite3-dev \ + libunistring-dev libopus-dev libpulse-dev openssl libglpk-dev \ + texlive libidn11-dev libmysqlclient-dev libpq-dev libarchive-dev \ + libbz2-dev libexiv2-dev libflac-dev libgif-dev libglib2.0-dev \ + libgtk-3-dev libmagic-dev libjpeg8-dev libmpeg2-4-dev libmp4v2-dev \ + librpm-dev libsmf-dev libtidy-dev libtiff5-dev libvorbis-dev \ + libogg-dev zlib1g-dev g++ gettext libgsf-1-dev libunbound-dev \ + libqrencode-dev libgladeui-dev nasm texlive-latex-extra \ + libunique-3.0-dev gawk miniupnpc libfuse-dev libbluetooth-dev +@end example + +After that, we install a few more packages from unstable:@ + +@example +# apt-get install -t unstable nettle-dev libgstreamer1.0-dev \ + gstreamer1.0-plugins-base gstreamer1.0-plugins-good \ + libgstreamer-plugins-base1.0-dev +@end example + +@node Installing dependencies from source +@subsection Installing dependencies from source + +Next, we need to install a few dependencies from source. +You might want to do this as a "normal" user and only run the +@code{make install} steps as root (hence the @code{sudo} in the +commands below). Also, you do this from any +directory. We begin by downloading all dependencies, then extracting the +sources, and finally compiling and installing the libraries. + +For these steps, follow the instructions given in the +installation from source instruction in this order: + +@itemize @bullet +@item @ref{generic source installation - libav} +@item @ref{generic source installation - libextractor} +@item @ref{generic source installation - libgpg-error} +@item @ref{generic source installation - libgcrypt} +@item @ref{generic source installation - gnutls} +@item @ref{generic source installation - libmicrohttpd} +@item @ref{generic source installation - libgnurl} +@end itemize + +@node Installing GNUnet from source +@subsection Installing GNUnet from source + + +For this, simply follow the generic installation instructions from +here. + +@node But wait there is more! +@subsection But wait there is more! + +So far, we installed all of the packages and dependencies required to +ensure that all of GNUnet would be built. +However, while for example the plugins to interact with the MySQL or +Postgres databases have been created, we did not actually install or +configure those databases. Thus, you will need to install +and configure those databases or stick with the default Sqlite database. +Sqlite is usually fine for most applications, but MySQL can offer better +performance and Postgres better resillience. + + +@node Installing GNUnet from Git on Ubuntu 14.4 +@section Installing GNUnet from Git on Ubuntu 14.4 + +@strong{Install the required build tools:} + +@example +$ sudo apt-get install git automake autopoint autoconf +@end example + +@strong{Install the required dependencies} + +@example +$ sudo apt-get install libltdl-dev libgpg-error-dev libidn11-dev \ + libunistring-dev libglpk-dev libbluetooth-dev libextractor-dev \ + libmicrohttpd-dev libgnutls28-dev +@end example + +@strong{Choose one or more database backends} + +@itemize @bullet + +@item SQLite3: + +@example +$ sudo apt-get install libsqlite3-dev +@end example + +@item MySQL: + +@example +$ sudo apt-get install libmysqlclient-dev +@end example + +@item PostgreSQL: + +@example +$ sudo apt-get install libpq-dev postgresql +@end example + +@end itemize + +@strong{Install the optional dependencies for gnunet-conversation:} + +@example +$ sudo apt-get install gstreamer1.0 libpulse-dev libopus-dev +@end example + +@strong{Install the libgrypt 1.6.1:} + +@itemize @bullet + +@item For Ubuntu 14.04: + +@example +$ sudo apt-get install libgcrypt20-dev +@end example + +@item For Ubuntu older 14.04: + +@example +$ wget ftp://ftp.gnupg.org/gcrypt/libgcrypt/libgcrypt-1.6.1.tar.bz2 +$ tar xf libgcrypt-1.6.1.tar.bz2 +$ cd libgcrypt-1.6.1 +$ ./configure +$ sudo make install +$ cd .. +@end example + +@end itemize + +@strong{Install libgnurl} + +@strong{Install GNUnet} + +@example +$ git clone https://gnunet.org/git/gnunet/ +$ cd gnunet/ +$ ./bootstrap +@end example + +If you want to: + +@itemize @bullet + +@item Install to a different directory: + +@example +--prefix=PREFIX +@end example + +@item +Have sudo permission, but do not want to compile as root: + +@example +--with-sudo +@end example + +@item +Want debug message enabled: + +@example +--enable-logging=verbose +@end example + +@end itemize + + +@example +$ ./configure [ --with-sudo | --prefix=PREFIX | --enable-logging=verbose] +$ make; sudo make install +@end example + +After installing it, you need to create an empty configuration file: + +@example +touch ~/.config/gnunet.conf +@end example + +And finally you can start GNUnet with + +@example +$ gnunet-arm -s +@end example + +@node Build instructions for Debian 8 +@section Build instructions for Debian 8 +@c FIXME: I -> we + +These are the installation instructions for Debian 8. They were tested +sing a fresh Debian 8 AMD64 installation without non-free software (no +contrib or non-free). During installation, I only selected "lxde" for the +desktop environment. +Note that the packages and the dependencies that we will install during +this chapter take about 1.5 GB of disk space. Combined with GNUnet and +space for objects during compilation, you should not even attempt this +unless you have about 2.5 GB free after the Debian installation. +Using these instructions to build a VM image is likely to require a +minimum of 4-5 GB for the VM (as you will likely also want a desktop +manager). + +GNUnet's security model assumes that your @code{/home} directory is +encrypted. +Thus, if possible, you should encrypt your entire disk, or at least just +your home partition (or per-user home directory). + +Naturally, the exact details of the starting state for your installation +should not matter much. +For example, if you selected any of those installation groups you might +simply already have some of the necessary packages installed. Thus, it is +suggested that you simply install the desktop environment of your choice +before beginning with the instructions. + + +@menu +* Update Debian:: +* Installing Debian Packages:: +* Installing Dependencies from Source2:: +* Installing GNUnet from Source2:: +* But wait (again) there is more!:: +@end menu + +@node Update Debian +@subsection Update Debian + +After any installation, you should begin by running + +@example +# apt-get update +# apt-get upgrade +@end example + +to ensure that all of your packages are up-to-date. Note that the "#" is +used to indicate that you need to type in this command as "root" (or +prefix with "sudo"), whereas "$" is used to indicate typing in a command +as a normal user. + +@node Installing Debian Packages +@subsection Installing Debian Packages + +We begin by installing a few Debian packages from stable: + +@example +# apt-get install gcc make python-zbar libltdl-dev libsqlite3-dev \ +libunistring-dev libopus-dev libpulse-dev openssl libglpk-dev texlive \ +libidn11-dev libmysqlclient-dev libpq-dev libarchive-dev libbz2-dev \ +libflac-dev libgif-dev libglib2.0-dev libgtk-3-dev libmpeg2-4-dev \ +libtidy-dev libvorbis-dev libogg-dev zlib1g-dev g++ gettext \ +libgsf-1-dev libunbound-dev libqrencode-dev libgladeui-dev nasm \ +texlive-latex-extra libunique-3.0-dev gawk miniupnpc libfuse-dev \ +libbluetooth-dev gstreamer1.0-plugins-base gstreamer1.0-plugins-good \ +libgstreamer-plugins-base1.0-dev nettle-dev libextractor-dev \ +libgcrypt20-dev libmicrohttpd-dev +@end example + +@node Installing Dependencies from Source2 +@subsection Installing Dependencies from Source2 + +Yes, we said we start with a Debian 8 "stable" system, but because Debian +linked GnuTLS without support for DANE, we need to compile a few things, +in addition to GNUnet, still by hand. Yes, you can run GNUnet using the +respective Debian packages, but then you will not get DANE support. + +Next, we need to install a few dependencies from source. You might want +to do this as a "normal" user and only run the @code{make install} steps +as root (hence the @code{sudo} in the commands below). Also, you do this +from any directory. We begin by downloading all dependencies, then +extracting the sources, and finally compiling and installing the +libraries: + +@example +$ wget ftp://ftp.gnutls.org/gcrypt/gnutls/v3.3/gnutls-3.3.12.tar.xz +$ tar xvf gnutls-3.3.12.tar.xz +$ cd gnutls-3.3.12 ; ./configure ; make ; sudo make install ; cd .. +@end example + +For the installation and compilation of libgnurl/gnURL refer to +the generic installation section, +@xref{generic source installation - libgnurl}. + +@node Installing GNUnet from Source2 +@subsection Installing GNUnet from Source2 + +For this, simply follow the generic installation instructions from@ +here. + +@node But wait (again) there is more! +@subsection But wait (again) there is more! + +So far, we installed all of the packages and dependencies required to +ensure that all of GNUnet would be built. However, while for example the +plugins to interact with the MySQL or Postgres databases have been +created, we did not actually install or configure those databases. +Thus, you will need to install and configure those databases or stick +with the default Sqlite database. Sqlite is usually fine for most +applications, but MySQL can offer better performance and Postgres better +resillience. + +@node Build instructions for macOS +@section Build instructions for macOS +@c FIXME: I -> we + +These are the installation guidelines for macOS. +They were tested on macOS High Sierra. + +@menu +* Installing dependencies:: +* Compile from Source:: +@end menu + +@node Installing dependencies +@subsection Installing dependencies + +First, install XCode in the newest version. +See https://developer.apple.com/xcode/. + +Install Homebrew (https://brew.sh) and then install the dependencies listed above. +If a dependency does not exists in brew, you need to compile it from source. + +@example +# brew install +@end example + +@node Compile from Source +@subsection Compile from Source + +Before you start building GNUnet, you need to setup your environment. +This means that you have to make sure the proper tools are used in the build process. +For example, after installing texinfo you need to make sure the new texinfo is actually used: + +@example +# echo 'export PATH="/usr/local/opt/texinfo/bin:$PATH"' >> ~/.bash_profile +@end example + +Note: brew tells you the appropriate command when executing + +@example +# brew info texinfo +@end example + +This may also be necessary for the gettext package. + +Before you start compiling, you need to make sure gcc is used and not the clang compile of your macOS system. +On my system, gcc was actually ``gcc-7'' and gcc pointed to the clang compiler. + +@example +# export CC=gcc-7 +@end example + +After this the standard compile instructions apply. + +@c @node Build instructions for OpenBSD 6.2 +@c @section Build instructions for OpenBSD 6.2 + +@node Outdated build instructions for previous revisions +@section Outdated build instructions for previous revisions + +This chapter contains a collection of outdated, older installation guides. +They are mostly intended to serve as a starting point for writing +up-to-date instructions and should not be expected to work for +GNUnet 0.10.x. +A set of older installation instructions can also be found in the +file @file{doc/outdated-and-old-installation-instructions.txt} in the +source tree of GNUnet. + +This file covers old instructions which no longer receive security +updates or any kind of support. + +@menu +* Installing GNUnet 0.10.1 on Ubuntu 14.04:: +* Building GLPK for MinGW:: +* GUI build instructions for Ubuntu 12.04 using Subversion:: +@c * Installation with gnunet-update:: +* Instructions for Microsoft Windows Platforms (Old):: +@end menu + + +@node Installing GNUnet 0.10.1 on Ubuntu 14.04 +@subsection Installing GNUnet 0.10.1 on Ubuntu 14.04 + +Install the required dependencies: + +@example +$ sudo apt-get install libltdl-dev libgpg-error-dev libidn11-dev \ + libunistring-dev libglpk-dev libbluetooth-dev libextractor-dev \ + libmicrohttpd-dev libgnutls28-dev +@end example + +Choose one or more database backends: + +@itemize @bullet + +@item SQLite3 + +@example + $ sudo apt-get install libsqlite3-dev@ +@end example + +@item MySQL + +@example +$ sudo apt-get install libmysqlclient-dev@ +@end example + +@item PostgreSQL + +@example + $ sudo apt-get install libpq-dev postgresql@ +@end example + +@end itemize + +Install the optional dependencies for gnunet-conversation: + +@example + $ sudo apt-get install gstreamer1.0 libpulse-dev libopus-dev +@end example + +Install libgcrypt 1.6: + +@itemize @bullet + +@item For Ubuntu 14.04: + +@example +$ sudo apt-get install libgcrypt20-dev +@end example + +@item For Ubuntu older than 14.04: + +@example +wget ftp://ftp.gnupg.org/gcrypt/libgcrypt/libgcrypt-1.6.1.tar.bz2 +$ tar xf libgcrypt-1.6.1.tar.bz2 +$ cd libgcrypt-1.6.1 +$ ./configure +$ sudo make install +$ cd .. +@end example +@end itemize + +Install libgnurl: + +@pxref{generic source installation - libgnurl}. + +Install GNUnet: + +@example +$ wget http://ftpmirror.gnu.org/gnunet/gnunet-0.10.1.tar.gz +$ tar xf gnunet-0.10.1.tar.gz +$ cd gnunet-0.10.1 +@end example + +If you want to: + +@itemize @bullet + +@item +Install to a different directory: + +@example +--prefix=PREFIX +@end example + +@item +Have sudo permission, but do not want to compile as root: + +@example +--with-sudo +@end example + +@item +Want debug message enabled: + +@example +--enable-logging=verbose +@end example + +@end itemize + +@example +$ ./configure [ --with-sudo | --prefix=PREFIX | --enable-logging=verbose] +$ make; sudo make install +@end example + +After installing it, you need to create an empty configuration file: + +@example +touch ~/.config/gnunet.conf +@end example + +And finally you can start GNUnet with + +@example +$ gnunet-arm -s +@end example + +@node Building GLPK for MinGW +@subsection Building GLPK for MinGW + +GNUnet now requires the GNU Linear Programming Kit (GLPK). +Since there's is no package you can install with @code{mingw-get} you +have to compile it from source: + +@itemize @bullet + +@item Download the latest version from +@uref{http://ftp.gnu.org/gnu/glpk/} + +@item Unzip the downloaded source tarball using your favourite +unzipper application In the MSYS shell + +@item change to the respective directory + +@item Configure glpk for "i686-pc-mingw32": + +@example +./configure '--build=i686-pc-mingw32' +@end example + +@item run + +@example +make install check +@end example + +@end itemize + +MinGW does not automatically detect the correct buildtype so you have to +specify it manually. + + +@node GUI build instructions for Ubuntu 12.04 using Subversion +@subsection GUI build instructions for Ubuntu 12.04 using Subversion + +After installing GNUnet you can continue installing the GNUnet GUI tools: + +First, install the required dependencies: + +@example +$ sudo apt-get install libgladeui-dev libqrencode-dev +@end example + +Please ensure that the GNUnet shared libraries can be found by the linker. +If you installed GNUnet libraries in a non standard path +(say GNUNET_PREFIX=/usr/local/lib/), you can + +@itemize @bullet + +@item set the environmental variable permanently to: + +@example +LD_LIBRARY_PATH=$GNUNET_PREFIX +@end example + +@item or add @code{$GNUNET_PREFIX} to @file{/etc/ld.so.conf} + +@end itemize + +Now you can checkout and compile the GNUnet GUI tools: + +@example +$ git clone https://gnunet.org/git/gnunet-gtk +$ cd gnunet-gtk +$ ./bootstrap +$ ./configure --prefix=$GNUNET_PREFIX/.. --with-gnunet=$GNUNET_PREFIX/.. +$ make install +@end example + +@node Instructions for Microsoft Windows Platforms (Old) +@subsection Instructions for Microsoft Windows Platforms (Old) + +This document is a @b{DEPRECATED} installation guide for GNUnet on +Windows. +It will not work for recent GNUnet versions, but maybe it will be of +some use if problems arise. + +The Windows build uses a UNIX emulator for Windows, +@uref{http://www.mingw.org/, MinGW}, to build the executable modules. +These modules run natively on Windows and do not require additional +emulation software besides the usual dependencies. + +GNUnet development is mostly done under GNU/Linux and especially git +checkouts may not build out of the box. +We regret any inconvenience, and if you have problems, please report them. + +@menu +* Hardware and OS requirements:: +* Software installation:: +* Building libextractor and GNUnet:: +* Installer:: +* Source:: +@end menu + +@node Hardware and OS requirements +@subsubsection Hardware and OS requirements + +@itemize @bullet +@item Pentium II or equivalent processor, @geq{} 350 MHz +@item 128 MB RAM +@item 600 MB free disk space +@item Windows 2000 or Windows XP are recommended +@end itemize + +@node Software installation +@subsubsection Software installation + +@itemize @bullet + +@item +@strong{Compression software}@ + +The software packages GNUnet depends on are usually compressed using UNIX +tools like @command{tar}, @command{gzip}, @command{xzip} and +@command{bzip2}. +If you do not already have an utility that is able to extract such +archives, get @uref{http://www.7-zip.org/, 7-Zip}. + +@item +@strong{UNIX environment}@ + +The MinGW project provides the compiler toolchain that is used to build +GNUnet. +Get the following packages from the +@uref{http://sourceforge.net/projects/mingw/files/, MinGW} project: + +@itemize @bullet + +@item GCC core +@item GCC g++ +@item MSYS +@item MSYS Developer Tool Kit (msysDTK) +@item MSYS Developer Tool Kit - msys-autoconf (bin) +@item MSYS Developer Tool Kit - msys-automake (bin) +@item MinGW Runtime +@item MinGW Utilities +@item Windows API +@item Binutils +@item make +@item pdcurses +@item GDB (snapshot) +@end itemize + +@itemize @bullet + + +@item Install MSYS (to c:\mingw, for example.)@ +Do @strong{not} use spaces in the pathname. +For example, avoid a location such as @file{c:\program files\mingw}. + +@item Install MinGW runtime, utilities and GCC to a subdirectory +(to @file{c:\mingw\mingw}, for example) + +@item Install the Development Kit to the MSYS directory +(@file{c:\mingw}) + +@item Create a batch file bash.bat in your MSYS directory with +the files: + +@example +bin\sh.exe --login +@end example + +This batch file opens a shell which is used to invoke the build +processes. +MinGW's standard shell (@command{msys.bat}) is not suitable +because it opens a separate console window. +On Vista, @command{bash.bat} needs to be run as Administrator. + +@item +Start @command{bash.sh} and rename +@file{c:\mingw\mingw\lib\libstdc++.la} to avoid problems: + +@example +mv /usr/mingw/lib/libstdc++.la /usr/mingw/lib/libstdc++.la.broken +@end example + +@item +Unpack the Windows API to the MinGW directory (@file{c:\mingw\mingw\}) and +remove the declaration of DATADIR from +(@file{c:\mingw\mingw\include\objidl.h} (lines 55-58) + +@item +Unpack autoconf, automake to the MSYS directory (@file{c:\mingw}) + +@item +Install all other packages to the MinGW directory (@file{c:\mingw\mingw\}) +@end itemize + + +@item @strong{GNU Libtool}@ +GNU Libtool is required to use shared libraries. +Get the prebuilt package from here and unpack it to the +MinGW directory (@file{c:\mingw}) + +@item @strong{Pthreads}@ +GNUnet uses the portable POSIX thread library for multi-threading: + +@itemize @bullet + +@item Save +@uref{ftp://sources.redhat.com/pub/pthreads-win32/dll-latest/lib/x86/libpthreadGC2.a, libpthreadGC2.a} +(x86) or +@uref{ftp://sources.redhat.com/pub/pthreads-win32/dll-latest/lib/x64/libpthreadGC2.a, libpthreadGC2.a} +(x64) as libpthread.a into the @file{lib} +directory (@file{c:\mingw\mingw\lib\libpthread.a}). + +@item Save +@uref{ftp://sources.redhat.com/pub/pthreads-win32/dll-latest/lib/x86/pthreadGC2.dll, pthreadGC2.dll} +(x86) or +@uref{ftp://sources.redhat.com/pub/pthreads-win32/dll-latest/lib/x64/pthreadGC2.dll, libpthreadGC2.a} +(x64) into the MinGW @file{bin} directory (@file{c:\mingw\mingw\bin}). + +@item Download all header files from +@uref{ftp://sources.redhat.com/pub/pthreads-win32/dll-latest/include/, include/} +to the @file{include} directory (@file{c:\mingw\mingw\include}). +@end itemize + + +@item @strong{GNU MP}@ +GNUnet uses the GNU Multiple Precision library for special cryptographic +operations. Get the GMP binary package from the +@uref{http://sourceforge.net/projects/mingwrep/, MinGW repository} and +unpack it to the MinGW directory (@file{c:\mingw\mingw}) + +@item @strong{GNU Gettext}@ +GNU gettext is used to provide national language support. +Get the prebuilt package from hereand unpack it to the MinGW +directory (@file{c:\mingw\mingw}) + +@item @strong{GNU iconv}@ +GNU Libiconv is used for character encoding conversion. +Get the prebuilt package from here and unpack it to the MinGW +directory (@file{c:\mingw\mingw}). + +@item @strong{SQLite}@ +GNUnet uses the SQLite database to store data. +Get the prebuilt binary from here and unpack it to your MinGW directory. + +@item @strong{MySQL}@ +As an alternative to SQLite, GNUnet also supports MySQL. + +@itemize @bullet + +@item Get the binary installer from the +@uref{http://dev.mysql.com/downloads/mysql/4.1.html#Windows, MySQL project} +(version 4.1), install it and follow the instructions in +@file{README.mysql}. + +@item Create a temporary build directory (@file{c:\mysql}) + +@item Copy the directories @file{include\} and @file{lib\} from the +MySQL directory to the new directory + +@item Get the patches from +@uref{http://bugs.mysql.com/bug.php?id=8906&files=1, Bug #8906} and +@uref{http://bugs.mysql.com/bug.php?id=8872&files=1, Bug #8872} (the +latter is only required for MySQL + +@example +patch -p 0 +@end example + +@item Move @file{lib\opt\libmysql.dll} to @file{lib\libmysql.dll} + +@item Change to @file{lib\} and create an import library: + +@example +dlltool --input-def ../include/libmySQL.def \ +--dllname libmysql.dll \ +--output-lib libmysqlclient.a -k +@end example + +@item Copy include\* to include\mysql\ + +@item Pass @code{--with-mysql=/c/mysql} to +@command{./configure} and copy @file{libmysql.dll} +to your PATH or GNUnet's @file{bin} directory +@end itemize + + +@item @strong{GTK+}@ +@command{gnunet-fs-gtk} and @command{libextractor} depend on GTK. +Get the the binary and developer packages of @command{atk}, +@command{glib}, @command{gtk}, @command{iconv}, +@command{gettext-runtime}, @command{pango} from +@uref{ftp://ftp.gtk.org/pub/gtk/v2.6/win32, gtk.org} and unpack them +to the MinGW directory (@file{c:\mingw\mingw}). +@c FIXME: The URL below for pkg-config seems wrong. +Get @uref{http://www.gtk.org/download/win32.php, pkg-config} and +@command{libpng} and unpack them to the MinGW directory +(@file{c:\mingw\mingw}). +Here is an all-in-one package for the +@uref{http://ftp.gnome.org/pub/gnome/binaries/win32/gtk+/2.24/gtk+-bundle_2.24.10-20120208_win32.zip, gtk+dependencies} +. Do not overwrite any existing files! + +@item @strong{Glade}@ +@command{gnunet-*-gtk} and @command{gnunet-setup} were created using +this interface builder + +@itemize @bullet + +@item Get the Glade and libglade (-bin and -devel) packages +(without GTK!) from +@uref{http://gladewin32.sourceforge.net/, GladeWin32} and unpack them to +the MinGW directory (@file{c:\mingw\mingw}). + +@item Get @command{libxml} from here and unpack it to the MinGW +directory (@file{c:\mingw\mingw}). +@end itemize + +@c FIXME: URLs +@item @strong{zLib}@ +@command{libextractor} requires @command{zLib} to decompress some file +formats. GNUnet uses it to (de)compress meta-data. +Get zLib from here (Signature) and unpack it to the MinGW directory +(@file{c:\mingw\mingw}). + +@item @strong{Bzip2}@ +@command{libextractor} also requires @command{Bzip2} to +decompress some file formats. +Get the Bzip2 (binary and developer package) from +@uref{http://gnuwin32.sourceforge.net/packages/bzip2.htm, GnuWin32} and +unpack it to the MinGW directory (@file{c:\mingw\mingw}). + +@item @strong{Libgcrypt}@ +@command{Libgcrypt} provides the cryptographic functions used by GNUnet. +Get Libgcrypt from @uref{ftp://ftp.gnupg.org/gcrypt/libgcrypt/, here}, +compile and place it in the MinGW directory +(@file{c:\mingw\mingw}). Currently libgcrypt @geq{} 1.4.2 is required to +compile GNUnet. + +@item @strong{PlibC}@ +PlibC emulates Unix functions under Windows. Get PlibC from here and +unpack it to the MinGW directory (c:\mingw\mingw) + +@item @strong{OGG Vorbis}@ +@command{OGG Vorbis} is used to extract meta-data from @file{.ogg} files. +Get the packages +@uref{http://www.gnunet.org/libextractor/download/win/libogg-1.1.4.zip, libogg} +and +@uref{http://www.gnunet.org/libextractor/download/win/libvorbis-1.2.3.zip, libvorbis} +from the +@uref{http://ftp.gnu.org/gnu/libextractor/libextractor-w32-1.0.0.zip, libextractor win32 build} +and unpack them to the MinGW directory (c:\mingw\mingw). + +@item @strong{Exiv2}@ +(lib)Exiv2 is used to extract meta-data from files with Exiv2 meta-data. +Download +@uref{http://www.gnunet.org/libextractor/download/win/exiv2-0.18.2.zip, Exiv2} +and unpack it to the MSYS directory (c:\mingw). +@end itemize + +@node Building libextractor and GNUnet +@subsubsection Building libextractor and GNUnet + +Before you compile @command{libextractor} or @command{GNUnet}, +be sure to set @code{PKG_CONFIG_PATH}: + +@example +export PKG_CONFIG_PATH=/mingw/lib/pkgconfig +@end example + +@noindent +@xref{GNUnet Installation Handbook}, for basic instructions on building +@command{libextractor} and @command{GNUnet}. +By default, all modules that are created in this way contain +debug information and are quite large. To compile release versions +(small and fast) set the variable @code{CFLAGS}: + +@example +export CFLAGS='-O2 -march=pentium -fomit-frame-pointer' +./configure --prefix=$HOME --with-extractor=$HOME +@end example + +@node Installer +@subsubsection Installer + +The GNUnet installer is made with +@uref{http://nsis.sourceforge.net/, NSIS}. The installer script is +located in @file{contrib\win} in the GNUnet source tree. + +@node Source +@subsubsection Source + +@c FIXME: URL... or: WHERE is HERE? +The sources of all dependencies are available here. diff --git a/doc/system_specific/outdated-and-old-installation-instructions.txt b/doc/system_specific/outdated-and-old-installation-instructions.txt new file mode 100644 index 000000000..f2cbe1847 --- /dev/null +++ b/doc/system_specific/outdated-and-old-installation-instructions.txt @@ -0,0 +1,672 @@ +# This file contains pieces from chapter/installation.texi for systems where the LTS or otherwise support +# ended. They can be useful for people trying to write new installation instructions for those systems. +# In particual this covers: +# - FreeBSD 8 +# - Mac OS X Tiger +# - Fedora 8 +# - Gentoo with GNUnet 0.9 +# +# Sources for LTS and support ranges: +# https://www.freebsd.org/security/security.html#sup +# https://support.microsoft.com/en-us/help/17140/lifecycle-faq-general-policy-questions +# Mac products, OS is supposedly similar (no official statements exist): https://web.archive.org/web/20160706101225/https://support.apple.com/en-us/HT201624 +# https://wiki.debian.org/LTS +# https://www.ubuntu.com/info/release-end-of-life + +@node Build instructions for Gentoo +@subsection Build instructions for Gentoo + + +This page describes how to install GNUnet 0.9 on Gentoo. + +Since the GNUnet 0.9 ebuilds are not in the official portage tree yet, we need +to add them to the local portage overlay. All the commands below should be +executed as root. + +Specify your local portage directory in the /etc/make.conf, for example:@ +@code{$ echo 'PORTDIR_OVERLAY="/usr/local/portage"' >> /etc/make.conf} + +Create directories for the ebuilds:@ +@code{$ mkdir -p /usr/local/portage/media-libs/libextractor /usr/local/portage/net-p2p/gnunet/files} + +Download the latest ebuilds, init and config files from here and put them into +respective directories:@ +@code{$ cp libextractor-0.6.2.ebuild /usr/local/portage/media-libs/libextractor@ + $ cp gnunet-0.9.2.ebuild /usr/local/portage/net-p2p/gnunet@ + $ cp gnunet-0.9.2.conf gnunet-0.9.2.confd gnunet-0.9.2.initd /usr/local/portage/net-p2p/gnunet/files} + +Generate Manifest files for the ebuilds:@ +@code{$ cd /usr/local/portage/net-p2p/gnunet@ + $ ebuild gnunet-0.9.2.ebuild digest@ + $ cd /usr/local/portage/media-libs/libextractor@ + $ ebuild libextractor-0.6.2.ebuild digest} + +Unmask GNUnet and dependencies in the /etc/portage/package.keywords. For +example, if you use x86-64 architecture, add the following lines:@ +@code{net-p2p/gnunet ~amd64@ + media-libs/libextractor ~amd64@ + net-libs/libmicrohttpd ~amd64@ + net-misc/curl ~amd64} + +Add either sqlite or mysql USE-flag in the /etc/portage/package.use:@ +@code{net-p2p/gnunet sqlite} + +Now everything is ready to install GNUnet:@ +@code{$ emerge -av gnunet} + +Use /etc/init.d/gnunet to start/stop GNUnet. + + + + +@node Basic Installation for Fedora/PlanetLab nodes running Fedora 8 . +@subsection Basic Installation for Fedora/PlanetLab nodes running Fedora 8 . +@c %**end of header + +@strong{This documentation is outdated and not valid for GNUnet 0.10.0!}@ + GNUnet installation on Fedora 8/Planetlab nodes can be done as following: + +1. Install the build tools to build GNUnet@ +@example +sudo yum -y -t --nogpgcheck install gcc make automake autoconf gettext-devel \ +texinfo zlib-devel subversion@ +@end example + +2. Install the GNUnet dependencies@ +@example +sudo yum -y -t --nogpgcheck install gnutls-devel gnutls-devel libgcrypt-devel \ +sqlite-devel postgresql-devel mysql-devel libgsf-devel libvorbis-devel \ +libidn-devel +@end example + +3. Install outdated dependencies from source@ + libtool@ +@code{@ + wget http://ftp.gnu.org/gnu/libtool/libtool-2.4.2.tar.gz@ + tar xvfz libtool-2.4.2.tar.gz@ + cd libtool-2.4.2@ + ./configure@ + sudo make install@ +} + +libtool@ +@code{@ + wget http://ftp.gnu.org/gnu/libtool/libtool-2.4.2.tar.gz@ + tar xvfz libtool-2.4.2.tar.gz@ + cd libtool-2.4.2@ + ./configure@ + sudo make install@ +} + +glpk@ +@code{@ + wget http://ftp.gnu.org/gnu/glpk/glpk-4.47.tar.gz@ + tar xvfz glpk-4.47.tar.gz@ + cd glpk-4.47@ + ./configure@ + sudo make install@ +} + +libgpg-error@ +@code{@ + wget ftp://ftp.gnupg.org/gcrypt/libgpg-error/libgpg-error-1.10.tar.bz2@ + tar xvfj libgpg-error-1.10.tar.bz2@ + cd libgpg-error-1.10@ + ./configure --prefix=/usr@ + sudo make install@ +} + +libgcrypt@ +@code{@ + wget ftp://ftp.gnupg.org/gcrypt/libgcrypt/libgcrypt-1.5.0.tar.bz2@ + tar xvfj libgcrypt-1.5.0.tar.tar.bz2@ + cd libgcrypt-1.5.0@ + ./configure --prefix=/usr@ + sudo make install@ +} + +libcurl@ +@code{@ + wget http://curl.haxx.se/download/curl-7.26.0.tar.gz@ + tar xvfz curl-7.26.0.tar.gz@ + cd curl-7.26.0@ + ./configure@ + sudo make install@ +} + +libunistring@ +@code{@ + wget http://ftp.gnu.org/gnu/libunistring/libunistring-0.9.3.tar.gz@ + tar xvfz libunistring-0.9.3.tar.gz@ + cd libunistring-0.9.3@ + ./configure@ + sudo make install@ +} + +4. Remove conflicting packages@ +@code{@ + sudo rpm -e --nodeps libgcrypt libgpg-error@ +} + +4. Install libextractor@ +@code{@ + wget ftp://ftp.gnu.org/gnu/libextractor/libextractor-0.6.3.tar.gz@ + tar xvfz libextractor-0.6.3.tar.gz@ + cd libextractor-0.6.3@ + ./configure@ + sudo make install@ +} + +5. Install libmicrohttpd and dependencies + +nettle@ +@code{@ + wget http://ftp.gnu.org/gnu/nettle/nettle-2.5.tar.gz@ + tar xvfz nettle-2.5.tar.gz@ + cd nettle-2.5@ + ./configure@ + sudo make install@ +} + +GnuTLS@ +@code{@ + wget http://ftp.gnu.org/gnu/gnutls/gnutls-2.12.20.tar.bz2@ + tar xvfj gnutls-2.12.20.tar.bz2@ + cd gnutls-2.12.20@ + ./configure --without-p11-kit@ + sudo make install@ +} + +libmicrohttpd@ +@code{@ + wget ftp://ftp.gnu.org/gnu/libmicrohttpd/libmicrohttpd-0.9.21.tar.gz@ + tar xvfz libmicrohttpd-0.9.21.tar.gz@ + cd libmicrohttpd-0.9.21@ + ./configure@ + sudo make install@ +} + +6. Set GNUnet prefix and add to PATH@ +@code{@ + export GNUNET_PREFIX=@ + export PATH=$PATH:$GNUNET_PREFIX/bin@ +} + +7. Install GNUnet from svn@ +@example + export LD_LIBRARY_PATH=/usr/local/lib@ + svn co https://gnunet.org/svn/gnunet@ + cd gnunet@ + libtoolize@ + ./bootstrap@ + ./configure --prefix=$GNUNET_PREFIX --with-extractor=/usr/local \ + --with-curl=/usr/local --with-mysql=/usr/lib/mysql --enable-logging=verbose@ + make install@ +@end example + +Done! + + +@node Build instructions for FreeBSD 8 +@subsection Build instructions for FreeBSD 8 + +To get GNUnet 0.9 to compile on FreeBSD (at least FreeBSD 8.0):@ in order to +install the library @code{libiconv}, at first change the directory to your +ports directory, e.g.@ +@code{@ + $ cd /usr/ports/@ +}@ + following that, go to the install file of @code{libiconv} and install it,@ +@code{@ + $ cd converters/libiconv,@ + $ make install@ +} + +after that, change the directory to where you will check out +@code{libextractor} and GNUnet, and install latest @code{libextractor},@ + first of all, checkout @code{libextractor}, e.g.@ +@code{@ + $ svn co https://gnunet.org/svn/Extractor@ +}@ + then change the directory into which it was checked out, e.g.@ +@code{@ + $ cd Extractor@ +}@ + before the installation, you should do following steps,@ + +@example +$ ./bootstrap@ +$ ./configure --with-ltdl-include=/usr/local/include \ + --with-ltdl-lib=/usr/local/lib@ +@end example + +if these steps complete successfully, you can install the library,@ + +@example +$ make install@ +@end example + +to check out the GNUnet, you should do the similar steps as +@code{libextractor}, firstly, change back to starting directory, e.g.@ +@code{@ + $ cd ../@ +}@ + Set the following environmental variables:@ +@code{@ + export CPPFLAGS="-I/usr/local/include"@ + export LDFLAGS="-L/usr/local/lib"@ +}@ + next, checkout GNUnet using@ +@code{@ + $ svn co https://gnunet.org/svn/gnunet@ +}@ + then change directory into newly checked out directory,@ +@code{@ + $ cd gnunet@ +}@ + at last, start to install GNUnet,@ + +@example + $ ./bootstrap@ + $ ./configure --with-ltdl-include=/usr/local/include \ + --with-ltdl-lib=/usr/local/lib --with-extractor=/usr/local + +## NOTE: you may not need the --with-extractor option!@ + +$ make install +@end example + + + +@node Basic installation for Mac OS X +@subsection Basic installation for Mac OS X + +This documentation may be outdated! + +This page is providing guidelines for users trying to install GNUnet on Mac OS +X.@ Mainly users trying to install GNUnet by building source code are the most +welcome readers.@ The steps below are tested on an Intel Architecture running +Mac OS X Tiger (10.4.11). Ideally they should work on other Mac boxes with +different configurations as all the configuration done for it is dependent on +@uref{http://www.macports.org/, MacPorts} + +For having GNUnet installed successfully, some dependencies should be firstly +resolved: + +@itemize @bullet + +@item +Install/Update your @uref{http://developer.apple.com/tools/xcode/, Xcode} +version 3.2.1 or later for Snow Leopard, 3.1.4 or later for Leopard, or 2.5 for +Tiger. + +@item +Download and install @uref{http://www.macports.org/, MacPorts}.@ +Now you are ready for installing GNunet dependencies. + +@item +First, you'd better make sure that: /opt/local/bin and /opt/local/sbin are +available in your PATH. (For doing so, open a terminal and type:@ + +@example +$ echo $PATH +@end example + +and examine the output of it). If the paths are not available in your +environment, you have to add them (You can add them by editing your .profile +file in your home directory, append them to the PATH line). Then type: +@example +$ source ~/.profile +@end example + +and re-examine the echo command output. + +@item +Use MacPorts to download and install the dependencies:@ +The libraries are: + +@itemize @bullet + +@item +@uref{http://trac.macports.org/browser/trunk/dports/www/libmicrohttpd/Portfile, libmicrohttpd.} + +@item +@uref{http://trac.macports.org/browser/trunk/dports/devel/libgcrypt/Portfile, libgcrypt.} + +@item +@uref{http://trac.macports.org/browser/trunk/dports/net/curl/Portfile, libcurl.} + +@item +@uref{http://trac.macports.org/browser/trunk/dports/devel/libtool/Portfile, libltdl.} + +@item +@uref{http://trac.macports.org/browser/trunk/dports/databases/sqlite3/Portfile, SQlite.} + +@item +libunistring + +@item +glpk + +@end itemize + +The port command is as follows:@ +@example +port install libmicrohttpd libgcrypt curl libtool sqlite3 linunistring glpk +@end example +One of the dependencies, the libextractor, should be explicitly installed, +since the version available from macports is outdated to work with GNUnet. To +install the latest libextractor: +@itemize @bullet + + +@item +Install the Subversion Client:@ +For more information about Subversion visit: +@uref{http://subversion.tigris.org/, http://subversion.tigris.org/} + +@example +# port install subversion +@end example + + +@item +Use Subversion to download the latest Extractor: +@example +$ svn checkout https://gnunet.org/svn/Extractor +@end example + + +@item +Go to the installation directory of the Extractor, compile and install it: +@example +$ ./bootstrap +$ export CPPFLAGS="-I/opt/local/include" +$ export LDFLAGS="-L/opt/local/lib" +$ ./configure --prefix=/opt/local +$ make +# make install +@end example + +@end itemize + + +@item +Now, your system is ready to install GNunet. If you downloaded GNUnet by +checking it out from svn, you should start by running the bootstrap script. +Open a terminal pointing to the GNUnet directory and type:@ + +@example +$ ./bootstrap +@end example + + +@item +Run the configure script: +@example +$ export CPPFLAGS="-I/opt/local/include" +$ export LDFLAGS="-L/opt/local/lib" +$ ./configure --prefix=/tmp/gnunet_build +@end example + + +GNUnet will be installed in the directory /tmp/gnunet_build (Of course that +installation path can be changed).@ The CPPFLAGS and LDFLAGS are mentioned in +order to inform the compiler and the linker to lookup headers and libraries in +/opt/local/include and /opt/local/lib. + +@item +Compile@ + +@example +$ make +@end example + + +@item +Install GNUnet +@example +# make install +@end example + +@end itemize + + +@node Basic Installation for Fedora/PlanetLab nodes running Fedora 12 +@subsection Basic Installation for Fedora/PlanetLab nodes running Fedora 12 + + +@strong{This documentation is outdated and not valid for GNUnet 0.10.0!}@ + +GNUnet installation on Fedora 8/Planetlab nodes can be done as following: + +1. Install the build tools to build GNUnet@ +@example +sudo yum -y -t --nogpgcheck install gcc make autoconf gettext-devel \ +texinfo subversion@ +@end example + +2. Install the GNUnet dependencies@ +@example +sudo yum -y -t --nogpgcheck install libunistring-devel libunistring-devel \ +libgcrypt-devel zlib-devel sqlite-devel postgresql-devel mysql-devel \ +libgsf-devel libvorbis-devel@ +@end example + +3. Install outdated dependencies from source@ +libtool@ +@example +wget http://ftp.gnu.org/gnu/libtool/libtool-2.4.2.tar.gz@ +tar xvfz libtool-2.4.2.tar.gz@ +cd libtool-2.4.2@ +./configure@ +sudo make install@ +@end example + +glpk@ +@example +wget http://ftp.gnu.org/gnu/glpk/glpk-4.47.tar.gz@ +tar xvfz glpk-4.47.tar.gz@ +cd glpk-4.47@ +./configure@ +sudo make install@ +@end example + +libcurl@ +@example +wget http://curl.haxx.se/download/curl-7.26.0.tar.gz@ +tar xvfz curl-7.26.0.tar.gz@ +cd curl-7.26.0@ +./configure@ +sudo make install@ +@end example + +4. Install libextractor@ +@example +svn co https://gnunet.org/svn/libextractor@ +cd libextractor@ +libtoolize@ +./bootstrap@ +./configure@ +sudo make install@ +@end example + +5. Install libmicrohttpd@ +@example +svn co https://gnunet.org/svn/libmicrohttpd@ +cd libmicrohttpd@ +libtoolize@ +./bootstrap@ +./configure@ +sudo make install@ +@end example + +6. Set GNUnet prefix and add to PATH@ +@example +export GNUNET_PREFIX=@ +export PATH=$PATH:$GNUNET_PREFIX/bin@ +@end example + +7. Install GNUnet from svn@ +@example +export LD_LIBRARY_PATH=/usr/local/lib@ +svn co https://gnunet.org/svn/gnunet@ +cd gnunet@ +libtoolize@ +./bootstrap@ +./configure --prefix=$GNUNET_PREFIX --with-extractor=/usr \ + --with-mysql=/usr/lib/mysql --enable-logging=verbose@ +make install@ +@end example + +Done! + + +@node Basic Installation for Fedora/PlanetLab nodes running Fedora 8 . +@subsection Basic Installation for Fedora/PlanetLab nodes running Fedora 8 . +@c %**end of header + +@strong{This documentation is outdated and not valid for GNUnet 0.10.0!}@ + GNUnet installation on Fedora 8/Planetlab nodes can be done as following: + +1. Install the build tools to build GNUnet@ +@example +sudo yum -y -t --nogpgcheck install gcc make automake autoconf gettext-devel \ +texinfo zlib-devel subversion@ +@end example + +2. Install the GNUnet dependencies@ +@example +sudo yum -y -t --nogpgcheck install gnutls-devel gnutls-devel libgcrypt-devel \ +sqlite-devel postgresql-devel mysql-devel libgsf-devel libvorbis-devel \ +libidn-devel +@end example + +3. Install outdated dependencies from source@ + libtool@ +@code{@ + wget http://ftp.gnu.org/gnu/libtool/libtool-2.4.2.tar.gz@ + tar xvfz libtool-2.4.2.tar.gz@ + cd libtool-2.4.2@ + ./configure@ + sudo make install@ +} + +libtool@ +@code{@ + wget http://ftp.gnu.org/gnu/libtool/libtool-2.4.2.tar.gz@ + tar xvfz libtool-2.4.2.tar.gz@ + cd libtool-2.4.2@ + ./configure@ + sudo make install@ +} + +glpk@ +@code{@ + wget http://ftp.gnu.org/gnu/glpk/glpk-4.47.tar.gz@ + tar xvfz glpk-4.47.tar.gz@ + cd glpk-4.47@ + ./configure@ + sudo make install@ +} + +libgpg-error@ +@code{@ + wget ftp://ftp.gnupg.org/gcrypt/libgpg-error/libgpg-error-1.10.tar.bz2@ + tar xvfj libgpg-error-1.10.tar.bz2@ + cd libgpg-error-1.10@ + ./configure --prefix=/usr@ + sudo make install@ +} + +libgcrypt@ +@code{@ + wget ftp://ftp.gnupg.org/gcrypt/libgcrypt/libgcrypt-1.5.0.tar.bz2@ + tar xvfj libgcrypt-1.5.0.tar.tar.bz2@ + cd libgcrypt-1.5.0@ + ./configure --prefix=/usr@ + sudo make install@ +} + +libcurl@ +@code{@ + wget http://curl.haxx.se/download/curl-7.26.0.tar.gz@ + tar xvfz curl-7.26.0.tar.gz@ + cd curl-7.26.0@ + ./configure@ + sudo make install@ +} + +libunistring@ +@code{@ + wget http://ftp.gnu.org/gnu/libunistring/libunistring-0.9.3.tar.gz@ + tar xvfz libunistring-0.9.3.tar.gz@ + cd libunistring-0.9.3@ + ./configure@ + sudo make install@ +} + +4. Remove conflicting packages@ +@code{@ + sudo rpm -e --nodeps libgcrypt libgpg-error@ +} + +4. Install libextractor@ +@code{@ + wget ftp://ftp.gnu.org/gnu/libextractor/libextractor-0.6.3.tar.gz@ + tar xvfz libextractor-0.6.3.tar.gz@ + cd libextractor-0.6.3@ + ./configure@ + sudo make install@ +} + +5. Install libmicrohttpd and dependencies + +nettle@ +@code{@ + wget http://ftp.gnu.org/gnu/nettle/nettle-2.5.tar.gz@ + tar xvfz nettle-2.5.tar.gz@ + cd nettle-2.5@ + ./configure@ + sudo make install@ +} + +GnuTLS@ +@code{@ + wget http://ftp.gnu.org/gnu/gnutls/gnutls-2.12.20.tar.bz2@ + tar xvfj gnutls-2.12.20.tar.bz2@ + cd gnutls-2.12.20@ + ./configure --without-p11-kit@ + sudo make install@ +} + +libmicrohttpd@ +@code{@ + wget ftp://ftp.gnu.org/gnu/libmicrohttpd/libmicrohttpd-0.9.21.tar.gz@ + tar xvfz libmicrohttpd-0.9.21.tar.gz@ + cd libmicrohttpd-0.9.21@ + ./configure@ + sudo make install@ +} + +6. Set GNUnet prefix and add to PATH@ +@code{@ + export GNUNET_PREFIX=@ + export PATH=$PATH:$GNUNET_PREFIX/bin@ +} + +7. Install GNUnet from svn@ +@example + export LD_LIBRARY_PATH=/usr/local/lib@ + svn co https://gnunet.org/svn/gnunet@ + cd gnunet@ + libtoolize@ + ./bootstrap@ + ./configure --prefix=$GNUNET_PREFIX --with-extractor=/usr/local \ + --with-curl=/usr/local --with-mysql=/usr/lib/mysql --enable-logging=verbose@ + make install@ +@end example + +Done! + +