aboutsummaryrefslogtreecommitdiff
path: root/doc/system_specific
diff options
context:
space:
mode:
authorNils Gillmann <ng0@n0.is>2018-06-08 06:16:21 +0000
committerNils Gillmann <ng0@n0.is>2018-06-08 06:16:21 +0000
commitd8cba9f05dce5fab72d3dcbcf0d1af6de97575ae (patch)
tree9f9a11c66fc9b83e726551aea06cdd91291b0436 /doc/system_specific
parent0379239804ef74dd73c7ba3fac24ce86fecb3ac1 (diff)
downloadgnunet-d8cba9f05dce5fab72d3dcbcf0d1af6de97575ae.tar.gz
gnunet-d8cba9f05dce5fab72d3dcbcf0d1af6de97575ae.zip
doc: create system specific folder and move files into it
Signed-off-by: Nils Gillmann <ng0@n0.is>
Diffstat (limited to 'doc/system_specific')
-rw-r--r--doc/system_specific/FROM_SOURCE1423
-rw-r--r--doc/system_specific/outdated-and-old-installation-instructions.txt672
2 files changed, 2095 insertions, 0 deletions
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 @@
1@node Build instructions for Ubuntu 12.04 using Git
2@section Build instructions for Ubuntu 12.04 using Git
3
4@menu
5* Install the required build tools::
6* Install libgcrypt 1.6 and libgpg-error::
7* Install gnutls with DANE support::
8* Install libgnurl::
9* Install libmicrohttpd from Git::
10* Install libextractor from Git::
11* Install GNUnet dependencies::
12* Build GNUnet::
13* Install the GNUnet-gtk user interface from Git::
14@end menu
15
16@node Install the required build tools
17@subsection Install the required build tools
18
19First, make sure Git is installed on your system:
20
21@example
22$ sudo apt-get install git
23@end example
24
25Install the essential buildtools:
26
27@example
28$ sudo apt-get install automake autopoint autoconf libtool
29@end example
30
31@node Install libgcrypt 1.6 and libgpg-error
32@subsection Install libgcrypt 1.6 and libgpg-error
33
34@ref{generic source installation - libgpg-error}
35
36@node Install gnutls with DANE support
37@subsection Install gnutls with DANE support
38
39@itemize @bullet
40@item @ref{generic source installation - nettle}
41@item @ref{generic source installation - ldns}
42@item @ref{generic source installation - libunbound/unbound}
43@item @ref{generic source installation - gnutls}
44@item @ref{generic source installation - libgcrypt}
45@end itemize
46
47@node Install libgnurl
48@subsection Install libgnurl
49
50Follow the @ref{generic source installation - libgnurl}.
51
52@node Install libmicrohttpd from Git
53@subsection Install libmicrohttpd from Git
54
55@example
56$ git clone https://gnunet.org/git/libmicrohttpd
57$ cd libmicrohttpd/
58$ ./bootstrap
59$ ./configure
60$ sudo make install ; cd ..
61@end example
62
63@node Install libextractor from Git
64@subsection Install libextractor from Git
65
66Install libextractor dependencies:
67
68@example
69$ sudo apt-get install zlib1g-dev libgsf-1-dev libmpeg2-4-dev \
70 libpoppler-dev libvorbis-dev libexiv2-dev libjpeg-dev \
71 libtiff-dev libgif-dev libvorbis-dev libflac-dev libsmf-dev \
72 g++
73@end example
74
75Build libextractor:
76
77@example
78$ git clone https://gnunet.org/git/libextractor
79$ cd libextractor
80$ ./bootstrap
81$ ./configure
82$ sudo make install ; cd ..
83@end example
84
85@node Install GNUnet dependencies
86@subsection Install GNUnet dependencies
87
88@example
89$ sudo apt-get install libidn11-dev libunistring-dev libglpk-dev \
90 libpulse-dev libbluetooth-dev libsqlite-dev
91@end example
92
93Install libopus:
94
95@example
96$ wget http://downloads.xiph.org/releases/opus/opus-1.1.tar.gz
97$ tar xf opus-1.1.tar.gz
98$ cd opus-1.1/
99$ ./configure
100$ sudo make install ; cd ..
101@end example
102
103Choose one or more database backends:
104
105SQLite3:
106@example
107$ sudo apt-get install libsqlite3-dev
108@end example
109MySQL:
110@example
111$ sudo apt-get install libmysqlclient-dev
112@end example
113PostgreSQL:
114@example
115$ sudo apt-get install libpq-dev postgresql
116@end example
117
118
119
120@node Build GNUnet
121@subsection Build GNUnet
122
123
124
125@menu
126* Configuring the installation path::
127* Configuring the system::
128* Installing components requiring sudo permission::
129* Build::
130@end menu
131
132@node Configuring the installation path
133@subsubsection Configuring the installation path
134
135You can specify the location of the GNUnet installation by setting the
136prefix when calling the configure script with @code{--prefix=DIRECTORY}
137
138@example
139$ export PATH=$PATH:DIRECTORY/bin
140@end example
141
142@node Configuring the system
143@subsubsection Configuring the system
144
145Please make sure NOW that you have created a user and group 'gnunet'
146and additionally a group 'gnunetdns':
147
148@example
149$ sudo addgroup gnunet
150$ sudo addgroup gnunetdns
151$ sudo adduser gnunet
152@end example
153
154Each GNUnet user should be added to the 'gnunet' group (may
155require fresh login to come into effect):
156
157@example
158$ sudo useradd -G gnunet
159@end example
160
161@node Installing components requiring sudo permission
162@subsubsection Installing components requiring sudo permission
163
164Some components, like the nss plugin required for GNS, may require root
165permissions. To allow these few components to be installed use:
166
167@example
168$ ./configure --with-sudo
169@end example
170
171@node Build
172@subsubsection Build
173
174@example
175$ git clone https://gnunet.org/git/gnunet/
176$ cd gnunet/
177$ ./bootstrap
178@end example
179
180Use the required configure call including the optional installation prefix
181@code{PREFIX} or the sudo permissions:
182
183@example
184$ ./configure [ --with-sudo | --with-prefix=PREFIX ]
185@end example
186
187@example
188$ make; sudo make install
189@end example
190
191After installing it, you need to create an empty configuration file:
192
193@example
194mkdir ~/.gnunet; touch ~/.gnunet/gnunet.conf
195@end example
196
197And finally you can start GNUnet with:
198
199@example
200$ gnunet-arm -s
201@end example
202
203@node Install the GNUnet-gtk user interface from Git
204@subsection Install the GNUnet-gtk user interface from Git
205
206
207Install depencies:
208
209@example
210$ sudo apt-get install libgtk-3-dev libunique-3.0-dev libgladeui-dev \
211 libqrencode-dev
212@end example
213
214Build GNUnet (with an optional prefix) and execute:
215
216@example
217$ git clone https://gnunet.org/git/gnunet-gtk/
218$ cd gnunet-gtk/
219$ ./bootstrap
220$ ./configure [--prefix=PREFIX] --with-gnunet=DIRECTORY
221$ make; sudo make install
222@end example
223
224@node Build Instructions for Microsoft Windows Platforms
225@section Build Instructions for Microsoft Windows Platforms
226
227@menu
228* Introduction to building on MS Windows::
229* Requirements::
230* Dependencies & Initial Setup::
231* GNUnet Installation::
232* Adjusting Windows for running and testing GNUnet::
233* Building the GNUnet Installer::
234* Using GNUnet with Netbeans on Windows::
235@end menu
236
237@node Introduction to building on MS Windows
238@subsection Introduction to building on MS Windows
239
240
241This document is a guide to building GNUnet and its dependencies on
242Windows platforms. GNUnet development is mostly done under GNU/Linux and
243especially git checkouts may not build out of the box.
244We regret any inconvenience, and if you have problems, please report
245them.
246
247@node Requirements
248@subsection Requirements
249
250The Howto is based upon a @strong{Windows Server 2008 32bit}
251@strong{Installation}, @strong{sbuild} and thus a
252@uref{http://www.mingw.org/wiki/MSYS, MSYS+MinGW}
253(W32-GCC-Compiler-Suite + Unix-like Userland) installation. sbuild
254is a convenient set of scripts which creates a working msys/mingw
255installation and installs most dependencies required for GNUnet.
256
257As of the point of the creation of these instructions,
258GNUnet @strong{requires} a Windows @strong{Server} 2003 or
259newer for full feature support.
260Windows Vista and later will also work, but
261@strong{non-server version can not run a VPN-Exit-Node} as the NAT
262features have been removed as of Windows Vista.
263
264@c TODO: We should document Windows 10!
265@c It seems like the situation hasn't changed with W10
266
267@node Dependencies & Initial Setup
268@subsection Dependencies & Initial Setup
269
270
271@itemize @bullet
272
273@item
274Install a fresh version of @strong{Python 2.x}, even if you are using a
275x64-OS, install a 32-bit version for use with sbuild.
276Python 3.0 is currently incompatible.
277
278@item
279Install your favorite @uref{http://code.google.com/p/tortoisegit/, git} &
280@uref{http://tortoisesvn.net/, subversion}-clients.
281
282@item
283You will also need some archive-manager like
284@uref{http://www.7-zip.org/, 7zip}.
285
286@item
287Pull a copy of sbuild to a directory of your choice, which will be used
288in the remainder of this guide. For now, we will use
289@file{c:\gnunet\sbuild\}
290
291@item
292in @file{sbuild\src\mingw\mingw32-buildall.sh}, comment out the packages
293@strong{gnunet-svn} and @strong{gnunet-gtk-svn}, as we don't want sbuild
294to compile/install those for us.
295
296@item
297Follow LRN's sbuild installation instructions.-
298@end itemize
299
300Please note that sbuild may (or will most likely) fail during
301installation, thus you really HAVE to @strong{check the logfiles} created
302during the installation process.
303Certain packages may fail to build initially due to missing dependencies,
304thus you may have to
305@strong{substitute those with binary-versions initially}. Later on once
306dependencies are satisfied you can re-build the newer package versions.
307
308@strong{It is normal that you may have to repeat this step multiple times
309and there is no uniform way to fix all compile-time issues, as the
310build-process of many of the dependencies installed are rather unstable
311on win32 and certain releases may not even compile at all.}
312
313Most dependencies for GNUnet have been set up by sbuild, thus we now
314should add the @file{bin/} directories in your new msys and mingw
315installations to PATH. You will want to create a backup of your finished
316msys-environment by now.
317
318@node GNUnet Installation
319@subsection GNUnet Installation
320
321First, we need to launch our msys-shell, you can do this via
322
323@file{C:\gnunet\sbuild\msys\msys.bat}
324
325You might wish to take a look at this file and adjust some
326login-parameters to your msys environment.
327
328Also, sbuild added two pointpoints to your msys-environment, though those
329might remain invisible:
330
331@itemize @bullet
332
333@item
334/mingw, which will mount your mingw-directory from sbuild/mingw and the
335other one is
336
337@item
338/src which contains all the installation sources sbuild just compiled.
339@end itemize
340
341Check out the current GNUnet sources (git HEAD) from the
342GNUnet repository "gnunet.git", we will do this in your home directory:
343
344@code{git clone https://gnunet.org/git/gnunet/ ~/gnunet}
345
346Now, we will first need to bootstrap the checked out installation and then
347configure it accordingly.
348
349@example
350cd ~/gnunet
351./bootstrap
352STRIP=true CPPFLAGS="-DUSE_IPV6=1 -DW32_VEH" CFLAGS="$CFLAGS -g -O2" \
353./configure --prefix=/ --docdir=/share/doc/gnunet \
354--with-libiconv-prefix=/mingw --with-libintl-prefix=/mingw \
355--with-libcurl=/mingw --with-extractor=/mingw --with-sqlite=/mingw \
356--with-microhttpd=/mingw --with-plibc=/mingw --enable-benchmarks \
357--enable-expensivetests --enable-experimental --with-qrencode=/mingw \
358--enable-silent-rules --enable-experimental 2>&1 | tee -a ./configure.log
359@end example
360
361The parameters above will configure for a reasonable GNUnet installation
362to the your msys-root directory.
363Depending on which features your would like to build or you may need to
364specify additional dependencies. Sbuild installed most libs into
365the /mingw subdirectory, so remember to prefix library locations with
366this path.
367
368Like on a unixoid system, you might want to use your home directory as
369prefix for your own GNUnet installation for development, without tainting
370the buildenvironment. Just change the "prefix" parameter to point towards
371~/ in this case.
372
373Now it's time to compile GNUnet as usual. Though this will take some time,
374so you may fetch yourself a coffee or some Mate now...
375
376@example
377make ; make install
378@end example
379
380@node Adjusting Windows for running and testing GNUnet
381@subsection Adjusting Windows for running and testing GNUnet
382
383Assuming the build succeeded and you
384@strong{added the bin directory of your GNUnet to PATH}, you can now use
385your gnunet-installation as usual.
386Remember that UAC or the windows firewall may popup initially, blocking
387further execution of gnunet until you acknowledge them.
388
389You will also have to take the usual steps to get peer-to-peer (p2p)
390software running properly (port forwarding, ...),
391and GNUnet will require administrative permissions as it may even
392install a device-driver (in case you are using gnunet-vpn and/or
393gnunet-exit).
394
395@node Building the GNUnet Installer
396@subsection Building the GNUnet Installer
397
398The GNUnet installer is made with
399@uref{http://nsis.sourceforge.net/, NSIS}.
400The installer script is located in @file{contrib\win} in the
401GNUnet source tree.
402
403@node Using GNUnet with Netbeans on Windows
404@subsection Using GNUnet with Netbeans on Windows
405
406TODO
407
408@node Build instructions for Debian 7.5
409@section Build instructions for Debian 7.5
410
411
412These are the installation instructions for Debian 7.5. They were tested
413using a minimal, fresh Debian 7.5 AMD64 installation without non-free
414software (no contrib or non-free).
415By "minimal", we mean that during installation, we did not select any
416desktop environment, servers or system utilities during the "tasksel"
417step. Note that the packages and the dependencies that we will install
418during this chapter take about 1.5 GB of disk space.
419Combined with GNUnet and space for objects during compilation, you should
420not even attempt this unless you have about 2.5 GB free after the minimal
421Debian installation.
422Using these instructions to build a VM image is likely to require a
423minimum of 4-5 GB for the VM (as you will likely also want a desktop
424manager).
425
426GNUnet's security model assumes that your @file{/home} directory is
427encrypted. Thus, if possible, you should encrypt your home partition
428(or per-user home directory).
429
430Naturally, the exact details of the starting state for your installation
431should not matter much. For example, if you selected any of those
432installation groups you might simply already have some of the necessary
433packages installed.
434We did this for testing, as this way we are less likely to forget to
435mention a required package.
436Note that we will not install a desktop environment, but of course you
437will need to install one to use GNUnet's graphical user interfaces.
438Thus, it is suggested that you simply install the desktop environment of
439your choice before beginning with the instructions.
440
441
442
443@menu
444* Update::
445* Stable? Hah!::
446* Update again::
447* Installing packages::
448* Installing dependencies from source::
449* Installing GNUnet from source::
450* But wait there is more!::
451@end menu
452
453@node Update
454@subsection Update
455
456After any installation, you should begin by running
457
458@example
459# apt-get update ; apt-get upgrade
460@end example
461
462to ensure that all of your packages are up-to-date. Note that the "#" is
463used to indicate that you need to type in this command as "root"
464(or prefix with "sudo"), whereas "$" is used to indicate typing in a
465command as a normal user.
466
467@node Stable? Hah!
468@subsection Stable? Hah!
469
470Yes, we said we start with a Debian 7.5 "stable" system. However, to
471reduce the amount of compilation by hand, we will begin by allowing the
472installation of packages from the testing and unstable distributions as
473well.
474We will stick to "stable" packages where possible, but some packages will
475be taken from the other distributions.
476Start by modifying @file{/etc/apt/sources.list} to contain the
477following (possibly adjusted to point to your mirror of choice):
478
479@example
480# These were there before:
481deb http://ftp.de.debian.org/debian/ wheezy main
482deb-src http://ftp.de.debian.org/debian/ wheezy main
483deb http://security.debian.org/ wheezy/updates main
484deb-src http://security.debian.org/ wheezy/updates main
485deb http://ftp.de.debian.org/debian/ wheezy-updates main
486deb-src http://ftp.de.debian.org/debian/ wheezy-updates main
487
488# Add these lines (feel free to adjust the mirror):
489deb http://ftp.de.debian.org/debian/ testing main
490deb http://ftp.de.debian.org/debian/ unstable main
491@end example
492
493The next step is to create/edit your @file{/etc/apt/preferences}
494file to look like this:
495
496@example
497Package: *
498Pin: release a=stable,n=wheezy
499Pin-Priority: 700
500
501Package: *
502Pin: release o=Debian,a=testing
503Pin-Priority: 650
504
505Package: *
506Pin: release o=Debian,a=unstable
507Pin-Priority: 600
508@end example
509
510You can read more about Apt Preferences here and here.
511Note that other pinnings are likely to also work for GNUnet, the key
512thing is that you need some packages from unstable (as shown below).
513However, as unstable is unlikely to be comprehensive (missing packages)
514or might be problematic (crashing packages), you probably want others
515from stable and/or testing.
516
517@node Update again
518@subsection Update again
519
520Now, run again@
521
522@example
523# apt-get update@
524# apt-get upgrade@
525@end example
526
527to ensure that all your new distribution indices are downloaded, and
528that your pinning is correct: the upgrade step should cause no changes
529at all.
530
531@node Installing packages
532@subsection Installing packages
533
534We begin by installing a few Debian packages from stable:@
535
536@example
537# apt-get install gcc make python-zbar libltdl-dev libsqlite3-dev \
538 libunistring-dev libopus-dev libpulse-dev openssl libglpk-dev \
539 texlive libidn11-dev libmysqlclient-dev libpq-dev libarchive-dev \
540 libbz2-dev libexiv2-dev libflac-dev libgif-dev libglib2.0-dev \
541 libgtk-3-dev libmagic-dev libjpeg8-dev libmpeg2-4-dev libmp4v2-dev \
542 librpm-dev libsmf-dev libtidy-dev libtiff5-dev libvorbis-dev \
543 libogg-dev zlib1g-dev g++ gettext libgsf-1-dev libunbound-dev \
544 libqrencode-dev libgladeui-dev nasm texlive-latex-extra \
545 libunique-3.0-dev gawk miniupnpc libfuse-dev libbluetooth-dev
546@end example
547
548After that, we install a few more packages from unstable:@
549
550@example
551# apt-get install -t unstable nettle-dev libgstreamer1.0-dev \
552 gstreamer1.0-plugins-base gstreamer1.0-plugins-good \
553 libgstreamer-plugins-base1.0-dev
554@end example
555
556@node Installing dependencies from source
557@subsection Installing dependencies from source
558
559Next, we need to install a few dependencies from source.
560You might want to do this as a "normal" user and only run the
561@code{make install} steps as root (hence the @code{sudo} in the
562commands below). Also, you do this from any
563directory. We begin by downloading all dependencies, then extracting the
564sources, and finally compiling and installing the libraries.
565
566For these steps, follow the instructions given in the
567installation from source instruction in this order:
568
569@itemize @bullet
570@item @ref{generic source installation - libav}
571@item @ref{generic source installation - libextractor}
572@item @ref{generic source installation - libgpg-error}
573@item @ref{generic source installation - libgcrypt}
574@item @ref{generic source installation - gnutls}
575@item @ref{generic source installation - libmicrohttpd}
576@item @ref{generic source installation - libgnurl}
577@end itemize
578
579@node Installing GNUnet from source
580@subsection Installing GNUnet from source
581
582
583For this, simply follow the generic installation instructions from
584here.
585
586@node But wait there is more!
587@subsection But wait there is more!
588
589So far, we installed all of the packages and dependencies required to
590ensure that all of GNUnet would be built.
591However, while for example the plugins to interact with the MySQL or
592Postgres databases have been created, we did not actually install or
593configure those databases. Thus, you will need to install
594and configure those databases or stick with the default Sqlite database.
595Sqlite is usually fine for most applications, but MySQL can offer better
596performance and Postgres better resillience.
597
598
599@node Installing GNUnet from Git on Ubuntu 14.4
600@section Installing GNUnet from Git on Ubuntu 14.4
601
602@strong{Install the required build tools:}
603
604@example
605$ sudo apt-get install git automake autopoint autoconf
606@end example
607
608@strong{Install the required dependencies}
609
610@example
611$ sudo apt-get install libltdl-dev libgpg-error-dev libidn11-dev \
612 libunistring-dev libglpk-dev libbluetooth-dev libextractor-dev \
613 libmicrohttpd-dev libgnutls28-dev
614@end example
615
616@strong{Choose one or more database backends}
617
618@itemize @bullet
619
620@item SQLite3:
621
622@example
623$ sudo apt-get install libsqlite3-dev
624@end example
625
626@item MySQL:
627
628@example
629$ sudo apt-get install libmysqlclient-dev
630@end example
631
632@item PostgreSQL:
633
634@example
635$ sudo apt-get install libpq-dev postgresql
636@end example
637
638@end itemize
639
640@strong{Install the optional dependencies for gnunet-conversation:}
641
642@example
643$ sudo apt-get install gstreamer1.0 libpulse-dev libopus-dev
644@end example
645
646@strong{Install the libgrypt 1.6.1:}
647
648@itemize @bullet
649
650@item For Ubuntu 14.04:
651
652@example
653$ sudo apt-get install libgcrypt20-dev
654@end example
655
656@item For Ubuntu older 14.04:
657
658@example
659$ wget ftp://ftp.gnupg.org/gcrypt/libgcrypt/libgcrypt-1.6.1.tar.bz2
660$ tar xf libgcrypt-1.6.1.tar.bz2
661$ cd libgcrypt-1.6.1
662$ ./configure
663$ sudo make install
664$ cd ..
665@end example
666
667@end itemize
668
669@strong{Install libgnurl}
670
671@strong{Install GNUnet}
672
673@example
674$ git clone https://gnunet.org/git/gnunet/
675$ cd gnunet/
676$ ./bootstrap
677@end example
678
679If you want to:
680
681@itemize @bullet
682
683@item Install to a different directory:
684
685@example
686--prefix=PREFIX
687@end example
688
689@item
690Have sudo permission, but do not want to compile as root:
691
692@example
693--with-sudo
694@end example
695
696@item
697Want debug message enabled:
698
699@example
700--enable-logging=verbose
701@end example
702
703@end itemize
704
705
706@example
707$ ./configure [ --with-sudo | --prefix=PREFIX | --enable-logging=verbose]
708$ make; sudo make install
709@end example
710
711After installing it, you need to create an empty configuration file:
712
713@example
714touch ~/.config/gnunet.conf
715@end example
716
717And finally you can start GNUnet with
718
719@example
720$ gnunet-arm -s
721@end example
722
723@node Build instructions for Debian 8
724@section Build instructions for Debian 8
725@c FIXME: I -> we
726
727These are the installation instructions for Debian 8. They were tested
728sing a fresh Debian 8 AMD64 installation without non-free software (no
729contrib or non-free). During installation, I only selected "lxde" for the
730desktop environment.
731Note that the packages and the dependencies that we will install during
732this chapter take about 1.5 GB of disk space. Combined with GNUnet and
733space for objects during compilation, you should not even attempt this
734unless you have about 2.5 GB free after the Debian installation.
735Using these instructions to build a VM image is likely to require a
736minimum of 4-5 GB for the VM (as you will likely also want a desktop
737manager).
738
739GNUnet's security model assumes that your @code{/home} directory is
740encrypted.
741Thus, if possible, you should encrypt your entire disk, or at least just
742your home partition (or per-user home directory).
743
744Naturally, the exact details of the starting state for your installation
745should not matter much.
746For example, if you selected any of those installation groups you might
747simply already have some of the necessary packages installed. Thus, it is
748suggested that you simply install the desktop environment of your choice
749before beginning with the instructions.
750
751
752@menu
753* Update Debian::
754* Installing Debian Packages::
755* Installing Dependencies from Source2::
756* Installing GNUnet from Source2::
757* But wait (again) there is more!::
758@end menu
759
760@node Update Debian
761@subsection Update Debian
762
763After any installation, you should begin by running
764
765@example
766# apt-get update
767# apt-get upgrade
768@end example
769
770to ensure that all of your packages are up-to-date. Note that the "#" is
771used to indicate that you need to type in this command as "root" (or
772prefix with "sudo"), whereas "$" is used to indicate typing in a command
773as a normal user.
774
775@node Installing Debian Packages
776@subsection Installing Debian Packages
777
778We begin by installing a few Debian packages from stable:
779
780@example
781# apt-get install gcc make python-zbar libltdl-dev libsqlite3-dev \
782libunistring-dev libopus-dev libpulse-dev openssl libglpk-dev texlive \
783libidn11-dev libmysqlclient-dev libpq-dev libarchive-dev libbz2-dev \
784libflac-dev libgif-dev libglib2.0-dev libgtk-3-dev libmpeg2-4-dev \
785libtidy-dev libvorbis-dev libogg-dev zlib1g-dev g++ gettext \
786libgsf-1-dev libunbound-dev libqrencode-dev libgladeui-dev nasm \
787texlive-latex-extra libunique-3.0-dev gawk miniupnpc libfuse-dev \
788libbluetooth-dev gstreamer1.0-plugins-base gstreamer1.0-plugins-good \
789libgstreamer-plugins-base1.0-dev nettle-dev libextractor-dev \
790libgcrypt20-dev libmicrohttpd-dev
791@end example
792
793@node Installing Dependencies from Source2
794@subsection Installing Dependencies from Source2
795
796Yes, we said we start with a Debian 8 "stable" system, but because Debian
797linked GnuTLS without support for DANE, we need to compile a few things,
798in addition to GNUnet, still by hand. Yes, you can run GNUnet using the
799respective Debian packages, but then you will not get DANE support.
800
801Next, we need to install a few dependencies from source. You might want
802to do this as a "normal" user and only run the @code{make install} steps
803as root (hence the @code{sudo} in the commands below). Also, you do this
804from any directory. We begin by downloading all dependencies, then
805extracting the sources, and finally compiling and installing the
806libraries:
807
808@example
809$ wget ftp://ftp.gnutls.org/gcrypt/gnutls/v3.3/gnutls-3.3.12.tar.xz
810$ tar xvf gnutls-3.3.12.tar.xz
811$ cd gnutls-3.3.12 ; ./configure ; make ; sudo make install ; cd ..
812@end example
813
814For the installation and compilation of libgnurl/gnURL refer to
815the generic installation section,
816@xref{generic source installation - libgnurl}.
817
818@node Installing GNUnet from Source2
819@subsection Installing GNUnet from Source2
820
821For this, simply follow the generic installation instructions from@
822here.
823
824@node But wait (again) there is more!
825@subsection But wait (again) there is more!
826
827So far, we installed all of the packages and dependencies required to
828ensure that all of GNUnet would be built. However, while for example the
829plugins to interact with the MySQL or Postgres databases have been
830created, we did not actually install or configure those databases.
831Thus, you will need to install and configure those databases or stick
832with the default Sqlite database. Sqlite is usually fine for most
833applications, but MySQL can offer better performance and Postgres better
834resillience.
835
836@node Build instructions for macOS
837@section Build instructions for macOS
838@c FIXME: I -> we
839
840These are the installation guidelines for macOS.
841They were tested on macOS High Sierra.
842
843@menu
844* Installing dependencies::
845* Compile from Source::
846@end menu
847
848@node Installing dependencies
849@subsection Installing dependencies
850
851First, install XCode in the newest version.
852See https://developer.apple.com/xcode/.
853
854Install Homebrew (https://brew.sh) and then install the dependencies listed above.
855If a dependency does not exists in brew, you need to compile it from source.
856
857@example
858# brew install <dependency>
859@end example
860
861@node Compile from Source
862@subsection Compile from Source
863
864Before you start building GNUnet, you need to setup your environment.
865This means that you have to make sure the proper tools are used in the build process.
866For example, after installing texinfo you need to make sure the new texinfo is actually used:
867
868@example
869# echo 'export PATH="/usr/local/opt/texinfo/bin:$PATH"' >> ~/.bash_profile
870@end example
871
872Note: brew tells you the appropriate command when executing
873
874@example
875# brew info texinfo
876@end example
877
878This may also be necessary for the gettext package.
879
880Before you start compiling, you need to make sure gcc is used and not the clang compile of your macOS system.
881On my system, gcc was actually ``gcc-7'' and gcc pointed to the clang compiler.
882
883@example
884# export CC=gcc-7
885@end example
886
887After this the standard compile instructions apply.
888
889@c @node Build instructions for OpenBSD 6.2
890@c @section Build instructions for OpenBSD 6.2
891
892@node Outdated build instructions for previous revisions
893@section Outdated build instructions for previous revisions
894
895This chapter contains a collection of outdated, older installation guides.
896They are mostly intended to serve as a starting point for writing
897up-to-date instructions and should not be expected to work for
898GNUnet 0.10.x.
899A set of older installation instructions can also be found in the
900file @file{doc/outdated-and-old-installation-instructions.txt} in the
901source tree of GNUnet.
902
903This file covers old instructions which no longer receive security
904updates or any kind of support.
905
906@menu
907* Installing GNUnet 0.10.1 on Ubuntu 14.04::
908* Building GLPK for MinGW::
909* GUI build instructions for Ubuntu 12.04 using Subversion::
910@c * Installation with gnunet-update::
911* Instructions for Microsoft Windows Platforms (Old)::
912@end menu
913
914
915@node Installing GNUnet 0.10.1 on Ubuntu 14.04
916@subsection Installing GNUnet 0.10.1 on Ubuntu 14.04
917
918Install the required dependencies:
919
920@example
921$ sudo apt-get install libltdl-dev libgpg-error-dev libidn11-dev \
922 libunistring-dev libglpk-dev libbluetooth-dev libextractor-dev \
923 libmicrohttpd-dev libgnutls28-dev
924@end example
925
926Choose one or more database backends:
927
928@itemize @bullet
929
930@item SQLite3
931
932@example
933 $ sudo apt-get install libsqlite3-dev@
934@end example
935
936@item MySQL
937
938@example
939$ sudo apt-get install libmysqlclient-dev@
940@end example
941
942@item PostgreSQL
943
944@example
945 $ sudo apt-get install libpq-dev postgresql@
946@end example
947
948@end itemize
949
950Install the optional dependencies for gnunet-conversation:
951
952@example
953 $ sudo apt-get install gstreamer1.0 libpulse-dev libopus-dev
954@end example
955
956Install libgcrypt 1.6:
957
958@itemize @bullet
959
960@item For Ubuntu 14.04:
961
962@example
963$ sudo apt-get install libgcrypt20-dev
964@end example
965
966@item For Ubuntu older than 14.04:
967
968@example
969wget ftp://ftp.gnupg.org/gcrypt/libgcrypt/libgcrypt-1.6.1.tar.bz2
970$ tar xf libgcrypt-1.6.1.tar.bz2
971$ cd libgcrypt-1.6.1
972$ ./configure
973$ sudo make install
974$ cd ..
975@end example
976@end itemize
977
978Install libgnurl:
979
980@pxref{generic source installation - libgnurl}.
981
982Install GNUnet:
983
984@example
985$ wget http://ftpmirror.gnu.org/gnunet/gnunet-0.10.1.tar.gz
986$ tar xf gnunet-0.10.1.tar.gz
987$ cd gnunet-0.10.1
988@end example
989
990If you want to:
991
992@itemize @bullet
993
994@item
995Install to a different directory:
996
997@example
998--prefix=PREFIX
999@end example
1000
1001@item
1002Have sudo permission, but do not want to compile as root:
1003
1004@example
1005--with-sudo
1006@end example
1007
1008@item
1009Want debug message enabled:
1010
1011@example
1012--enable-logging=verbose
1013@end example
1014
1015@end itemize
1016
1017@example
1018$ ./configure [ --with-sudo | --prefix=PREFIX | --enable-logging=verbose]
1019$ make; sudo make install
1020@end example
1021
1022After installing it, you need to create an empty configuration file:
1023
1024@example
1025touch ~/.config/gnunet.conf
1026@end example
1027
1028And finally you can start GNUnet with
1029
1030@example
1031$ gnunet-arm -s
1032@end example
1033
1034@node Building GLPK for MinGW
1035@subsection Building GLPK for MinGW
1036
1037GNUnet now requires the GNU Linear Programming Kit (GLPK).
1038Since there's is no package you can install with @code{mingw-get} you
1039have to compile it from source:
1040
1041@itemize @bullet
1042
1043@item Download the latest version from
1044@uref{http://ftp.gnu.org/gnu/glpk/}
1045
1046@item Unzip the downloaded source tarball using your favourite
1047unzipper application In the MSYS shell
1048
1049@item change to the respective directory
1050
1051@item Configure glpk for "i686-pc-mingw32":
1052
1053@example
1054./configure '--build=i686-pc-mingw32'
1055@end example
1056
1057@item run
1058
1059@example
1060make install check
1061@end example
1062
1063@end itemize
1064
1065MinGW does not automatically detect the correct buildtype so you have to
1066specify it manually.
1067
1068
1069@node GUI build instructions for Ubuntu 12.04 using Subversion
1070@subsection GUI build instructions for Ubuntu 12.04 using Subversion
1071
1072After installing GNUnet you can continue installing the GNUnet GUI tools:
1073
1074First, install the required dependencies:
1075
1076@example
1077$ sudo apt-get install libgladeui-dev libqrencode-dev
1078@end example
1079
1080Please ensure that the GNUnet shared libraries can be found by the linker.
1081If you installed GNUnet libraries in a non standard path
1082(say GNUNET_PREFIX=/usr/local/lib/), you can
1083
1084@itemize @bullet
1085
1086@item set the environmental variable permanently to:
1087
1088@example
1089LD_LIBRARY_PATH=$GNUNET_PREFIX
1090@end example
1091
1092@item or add @code{$GNUNET_PREFIX} to @file{/etc/ld.so.conf}
1093
1094@end itemize
1095
1096Now you can checkout and compile the GNUnet GUI tools:
1097
1098@example
1099$ git clone https://gnunet.org/git/gnunet-gtk
1100$ cd gnunet-gtk
1101$ ./bootstrap
1102$ ./configure --prefix=$GNUNET_PREFIX/.. --with-gnunet=$GNUNET_PREFIX/..
1103$ make install
1104@end example
1105
1106@node Instructions for Microsoft Windows Platforms (Old)
1107@subsection Instructions for Microsoft Windows Platforms (Old)
1108
1109This document is a @b{DEPRECATED} installation guide for GNUnet on
1110Windows.
1111It will not work for recent GNUnet versions, but maybe it will be of
1112some use if problems arise.
1113
1114The Windows build uses a UNIX emulator for Windows,
1115@uref{http://www.mingw.org/, MinGW}, to build the executable modules.
1116These modules run natively on Windows and do not require additional
1117emulation software besides the usual dependencies.
1118
1119GNUnet development is mostly done under GNU/Linux and especially git
1120checkouts may not build out of the box.
1121We regret any inconvenience, and if you have problems, please report them.
1122
1123@menu
1124* Hardware and OS requirements::
1125* Software installation::
1126* Building libextractor and GNUnet::
1127* Installer::
1128* Source::
1129@end menu
1130
1131@node Hardware and OS requirements
1132@subsubsection Hardware and OS requirements
1133
1134@itemize @bullet
1135@item Pentium II or equivalent processor, @geq{} 350 MHz
1136@item 128 MB RAM
1137@item 600 MB free disk space
1138@item Windows 2000 or Windows XP are recommended
1139@end itemize
1140
1141@node Software installation
1142@subsubsection Software installation
1143
1144@itemize @bullet
1145
1146@item
1147@strong{Compression software}@
1148
1149The software packages GNUnet depends on are usually compressed using UNIX
1150tools like @command{tar}, @command{gzip}, @command{xzip} and
1151@command{bzip2}.
1152If you do not already have an utility that is able to extract such
1153archives, get @uref{http://www.7-zip.org/, 7-Zip}.
1154
1155@item
1156@strong{UNIX environment}@
1157
1158The MinGW project provides the compiler toolchain that is used to build
1159GNUnet.
1160Get the following packages from the
1161@uref{http://sourceforge.net/projects/mingw/files/, MinGW} project:
1162
1163@itemize @bullet
1164
1165@item GCC core
1166@item GCC g++
1167@item MSYS
1168@item MSYS Developer Tool Kit (msysDTK)
1169@item MSYS Developer Tool Kit - msys-autoconf (bin)
1170@item MSYS Developer Tool Kit - msys-automake (bin)
1171@item MinGW Runtime
1172@item MinGW Utilities
1173@item Windows API
1174@item Binutils
1175@item make
1176@item pdcurses
1177@item GDB (snapshot)
1178@end itemize
1179
1180@itemize @bullet
1181
1182
1183@item Install MSYS (to c:\mingw, for example.)@
1184Do @strong{not} use spaces in the pathname.
1185For example, avoid a location such as @file{c:\program files\mingw}.
1186
1187@item Install MinGW runtime, utilities and GCC to a subdirectory
1188(to @file{c:\mingw\mingw}, for example)
1189
1190@item Install the Development Kit to the MSYS directory
1191(@file{c:\mingw})
1192
1193@item Create a batch file bash.bat in your MSYS directory with
1194the files:
1195
1196@example
1197bin\sh.exe --login
1198@end example
1199
1200This batch file opens a shell which is used to invoke the build
1201processes.
1202MinGW's standard shell (@command{msys.bat}) is not suitable
1203because it opens a separate console window.
1204On Vista, @command{bash.bat} needs to be run as Administrator.
1205
1206@item
1207Start @command{bash.sh} and rename
1208@file{c:\mingw\mingw\lib\libstdc++.la} to avoid problems:
1209
1210@example
1211mv /usr/mingw/lib/libstdc++.la /usr/mingw/lib/libstdc++.la.broken
1212@end example
1213
1214@item
1215Unpack the Windows API to the MinGW directory (@file{c:\mingw\mingw\}) and
1216remove the declaration of DATADIR from
1217(@file{c:\mingw\mingw\include\objidl.h} (lines 55-58)
1218
1219@item
1220Unpack autoconf, automake to the MSYS directory (@file{c:\mingw})
1221
1222@item
1223Install all other packages to the MinGW directory (@file{c:\mingw\mingw\})
1224@end itemize
1225
1226
1227@item @strong{GNU Libtool}@
1228GNU Libtool is required to use shared libraries.
1229Get the prebuilt package from here and unpack it to the
1230MinGW directory (@file{c:\mingw})
1231
1232@item @strong{Pthreads}@
1233GNUnet uses the portable POSIX thread library for multi-threading:
1234
1235@itemize @bullet
1236
1237@item Save
1238@uref{ftp://sources.redhat.com/pub/pthreads-win32/dll-latest/lib/x86/libpthreadGC2.a, libpthreadGC2.a}
1239(x86) or
1240@uref{ftp://sources.redhat.com/pub/pthreads-win32/dll-latest/lib/x64/libpthreadGC2.a, libpthreadGC2.a}
1241(x64) as libpthread.a into the @file{lib}
1242directory (@file{c:\mingw\mingw\lib\libpthread.a}).
1243
1244@item Save
1245@uref{ftp://sources.redhat.com/pub/pthreads-win32/dll-latest/lib/x86/pthreadGC2.dll, pthreadGC2.dll}
1246(x86) or
1247@uref{ftp://sources.redhat.com/pub/pthreads-win32/dll-latest/lib/x64/pthreadGC2.dll, libpthreadGC2.a}
1248(x64) into the MinGW @file{bin} directory (@file{c:\mingw\mingw\bin}).
1249
1250@item Download all header files from
1251@uref{ftp://sources.redhat.com/pub/pthreads-win32/dll-latest/include/, include/}
1252to the @file{include} directory (@file{c:\mingw\mingw\include}).
1253@end itemize
1254
1255
1256@item @strong{GNU MP}@
1257GNUnet uses the GNU Multiple Precision library for special cryptographic
1258operations. Get the GMP binary package from the
1259@uref{http://sourceforge.net/projects/mingwrep/, MinGW repository} and
1260unpack it to the MinGW directory (@file{c:\mingw\mingw})
1261
1262@item @strong{GNU Gettext}@
1263GNU gettext is used to provide national language support.
1264Get the prebuilt package from hereand unpack it to the MinGW
1265directory (@file{c:\mingw\mingw})
1266
1267@item @strong{GNU iconv}@
1268GNU Libiconv is used for character encoding conversion.
1269Get the prebuilt package from here and unpack it to the MinGW
1270directory (@file{c:\mingw\mingw}).
1271
1272@item @strong{SQLite}@
1273GNUnet uses the SQLite database to store data.
1274Get the prebuilt binary from here and unpack it to your MinGW directory.
1275
1276@item @strong{MySQL}@
1277As an alternative to SQLite, GNUnet also supports MySQL.
1278
1279@itemize @bullet
1280
1281@item Get the binary installer from the
1282@uref{http://dev.mysql.com/downloads/mysql/4.1.html#Windows, MySQL project}
1283(version 4.1), install it and follow the instructions in
1284@file{README.mysql}.
1285
1286@item Create a temporary build directory (@file{c:\mysql})
1287
1288@item Copy the directories @file{include\} and @file{lib\} from the
1289MySQL directory to the new directory
1290
1291@item Get the patches from
1292@uref{http://bugs.mysql.com/bug.php?id=8906&files=1, Bug #8906} and
1293@uref{http://bugs.mysql.com/bug.php?id=8872&files=1, Bug #8872} (the
1294latter is only required for MySQL
1295
1296@example
1297patch -p 0
1298@end example
1299
1300@item Move @file{lib\opt\libmysql.dll} to @file{lib\libmysql.dll}
1301
1302@item Change to @file{lib\} and create an import library:
1303
1304@example
1305dlltool --input-def ../include/libmySQL.def \
1306--dllname libmysql.dll \
1307--output-lib libmysqlclient.a -k
1308@end example
1309
1310@item Copy include\* to include\mysql\
1311
1312@item Pass @code{--with-mysql=/c/mysql} to
1313@command{./configure} and copy @file{libmysql.dll}
1314to your PATH or GNUnet's @file{bin} directory
1315@end itemize
1316
1317
1318@item @strong{GTK+}@
1319@command{gnunet-fs-gtk} and @command{libextractor} depend on GTK.
1320Get the the binary and developer packages of @command{atk},
1321@command{glib}, @command{gtk}, @command{iconv},
1322@command{gettext-runtime}, @command{pango} from
1323@uref{ftp://ftp.gtk.org/pub/gtk/v2.6/win32, gtk.org} and unpack them
1324to the MinGW directory (@file{c:\mingw\mingw}).
1325@c FIXME: The URL below for pkg-config seems wrong.
1326Get @uref{http://www.gtk.org/download/win32.php, pkg-config} and
1327@command{libpng} and unpack them to the MinGW directory
1328(@file{c:\mingw\mingw}).
1329Here is an all-in-one package for the
1330@uref{http://ftp.gnome.org/pub/gnome/binaries/win32/gtk+/2.24/gtk+-bundle_2.24.10-20120208_win32.zip, gtk+dependencies}
1331. Do not overwrite any existing files!
1332
1333@item @strong{Glade}@
1334@command{gnunet-*-gtk} and @command{gnunet-setup} were created using
1335this interface builder
1336
1337@itemize @bullet
1338
1339@item Get the Glade and libglade (-bin and -devel) packages
1340(without GTK!) from
1341@uref{http://gladewin32.sourceforge.net/, GladeWin32} and unpack them to
1342the MinGW directory (@file{c:\mingw\mingw}).
1343
1344@item Get @command{libxml} from here and unpack it to the MinGW
1345directory (@file{c:\mingw\mingw}).
1346@end itemize
1347
1348@c FIXME: URLs
1349@item @strong{zLib}@
1350@command{libextractor} requires @command{zLib} to decompress some file
1351formats. GNUnet uses it to (de)compress meta-data.
1352Get zLib from here (Signature) and unpack it to the MinGW directory
1353(@file{c:\mingw\mingw}).
1354
1355@item @strong{Bzip2}@
1356@command{libextractor} also requires @command{Bzip2} to
1357decompress some file formats.
1358Get the Bzip2 (binary and developer package) from
1359@uref{http://gnuwin32.sourceforge.net/packages/bzip2.htm, GnuWin32} and
1360unpack it to the MinGW directory (@file{c:\mingw\mingw}).
1361
1362@item @strong{Libgcrypt}@
1363@command{Libgcrypt} provides the cryptographic functions used by GNUnet.
1364Get Libgcrypt from @uref{ftp://ftp.gnupg.org/gcrypt/libgcrypt/, here},
1365compile and place it in the MinGW directory
1366(@file{c:\mingw\mingw}). Currently libgcrypt @geq{} 1.4.2 is required to
1367compile GNUnet.
1368
1369@item @strong{PlibC}@
1370PlibC emulates Unix functions under Windows. Get PlibC from here and
1371unpack it to the MinGW directory (c:\mingw\mingw)
1372
1373@item @strong{OGG Vorbis}@
1374@command{OGG Vorbis} is used to extract meta-data from @file{.ogg} files.
1375Get the packages
1376@uref{http://www.gnunet.org/libextractor/download/win/libogg-1.1.4.zip, libogg}
1377and
1378@uref{http://www.gnunet.org/libextractor/download/win/libvorbis-1.2.3.zip, libvorbis}
1379from the
1380@uref{http://ftp.gnu.org/gnu/libextractor/libextractor-w32-1.0.0.zip, libextractor win32 build}
1381and unpack them to the MinGW directory (c:\mingw\mingw).
1382
1383@item @strong{Exiv2}@
1384(lib)Exiv2 is used to extract meta-data from files with Exiv2 meta-data.
1385Download
1386@uref{http://www.gnunet.org/libextractor/download/win/exiv2-0.18.2.zip, Exiv2}
1387and unpack it to the MSYS directory (c:\mingw).
1388@end itemize
1389
1390@node Building libextractor and GNUnet
1391@subsubsection Building libextractor and GNUnet
1392
1393Before you compile @command{libextractor} or @command{GNUnet},
1394be sure to set @code{PKG_CONFIG_PATH}:
1395
1396@example
1397export PKG_CONFIG_PATH=/mingw/lib/pkgconfig
1398@end example
1399
1400@noindent
1401@xref{GNUnet Installation Handbook}, for basic instructions on building
1402@command{libextractor} and @command{GNUnet}.
1403By default, all modules that are created in this way contain
1404debug information and are quite large. To compile release versions
1405(small and fast) set the variable @code{CFLAGS}:
1406
1407@example
1408export CFLAGS='-O2 -march=pentium -fomit-frame-pointer'
1409./configure --prefix=$HOME --with-extractor=$HOME
1410@end example
1411
1412@node Installer
1413@subsubsection Installer
1414
1415The GNUnet installer is made with
1416@uref{http://nsis.sourceforge.net/, NSIS}. The installer script is
1417located in @file{contrib\win} in the GNUnet source tree.
1418
1419@node Source
1420@subsubsection Source
1421
1422@c FIXME: URL... or: WHERE is HERE?
1423The 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 @@
1# This file contains pieces from chapter/installation.texi for systems where the LTS or otherwise support
2# ended. They can be useful for people trying to write new installation instructions for those systems.
3# In particual this covers:
4# - FreeBSD 8
5# - Mac OS X Tiger
6# - Fedora 8
7# - Gentoo with GNUnet 0.9
8#
9# Sources for LTS and support ranges:
10# https://www.freebsd.org/security/security.html#sup
11# https://support.microsoft.com/en-us/help/17140/lifecycle-faq-general-policy-questions
12# Mac products, OS is supposedly similar (no official statements exist): https://web.archive.org/web/20160706101225/https://support.apple.com/en-us/HT201624
13# https://wiki.debian.org/LTS
14# https://www.ubuntu.com/info/release-end-of-life
15
16@node Build instructions for Gentoo
17@subsection Build instructions for Gentoo
18
19
20This page describes how to install GNUnet 0.9 on Gentoo.
21
22Since the GNUnet 0.9 ebuilds are not in the official portage tree yet, we need
23to add them to the local portage overlay. All the commands below should be
24executed as root.
25
26Specify your local portage directory in the /etc/make.conf, for example:@
27@code{$ echo 'PORTDIR_OVERLAY="/usr/local/portage"' >> /etc/make.conf}
28
29Create directories for the ebuilds:@
30@code{$ mkdir -p /usr/local/portage/media-libs/libextractor /usr/local/portage/net-p2p/gnunet/files}
31
32Download the latest ebuilds, init and config files from here and put them into
33respective directories:@
34@code{$ cp libextractor-0.6.2.ebuild /usr/local/portage/media-libs/libextractor@
35 $ cp gnunet-0.9.2.ebuild /usr/local/portage/net-p2p/gnunet@
36 $ cp gnunet-0.9.2.conf gnunet-0.9.2.confd gnunet-0.9.2.initd /usr/local/portage/net-p2p/gnunet/files}
37
38Generate Manifest files for the ebuilds:@
39@code{$ cd /usr/local/portage/net-p2p/gnunet@
40 $ ebuild gnunet-0.9.2.ebuild digest@
41 $ cd /usr/local/portage/media-libs/libextractor@
42 $ ebuild libextractor-0.6.2.ebuild digest}
43
44Unmask GNUnet and dependencies in the /etc/portage/package.keywords. For
45example, if you use x86-64 architecture, add the following lines:@
46@code{net-p2p/gnunet ~amd64@
47 media-libs/libextractor ~amd64@
48 net-libs/libmicrohttpd ~amd64@
49 net-misc/curl ~amd64}
50
51Add either sqlite or mysql USE-flag in the /etc/portage/package.use:@
52@code{net-p2p/gnunet sqlite}
53
54Now everything is ready to install GNUnet:@
55@code{$ emerge -av gnunet}
56
57Use /etc/init.d/gnunet to start/stop GNUnet.
58
59
60
61
62@node Basic Installation for Fedora/PlanetLab nodes running Fedora 8 .
63@subsection Basic Installation for Fedora/PlanetLab nodes running Fedora 8 .
64@c %**end of header
65
66@strong{This documentation is outdated and not valid for GNUnet 0.10.0!}@
67 GNUnet installation on Fedora 8/Planetlab nodes can be done as following:
68
691. Install the build tools to build GNUnet@
70@example
71sudo yum -y -t --nogpgcheck install gcc make automake autoconf gettext-devel \
72texinfo zlib-devel subversion@
73@end example
74
752. Install the GNUnet dependencies@
76@example
77sudo yum -y -t --nogpgcheck install gnutls-devel gnutls-devel libgcrypt-devel \
78sqlite-devel postgresql-devel mysql-devel libgsf-devel libvorbis-devel \
79libidn-devel
80@end example
81
823. Install outdated dependencies from source@
83 libtool@
84@code{@
85 wget http://ftp.gnu.org/gnu/libtool/libtool-2.4.2.tar.gz@
86 tar xvfz libtool-2.4.2.tar.gz@
87 cd libtool-2.4.2@
88 ./configure@
89 sudo make install@
90}
91
92libtool@
93@code{@
94 wget http://ftp.gnu.org/gnu/libtool/libtool-2.4.2.tar.gz@
95 tar xvfz libtool-2.4.2.tar.gz@
96 cd libtool-2.4.2@
97 ./configure@
98 sudo make install@
99}
100
101glpk@
102@code{@
103 wget http://ftp.gnu.org/gnu/glpk/glpk-4.47.tar.gz@
104 tar xvfz glpk-4.47.tar.gz@
105 cd glpk-4.47@
106 ./configure@
107 sudo make install@
108}
109
110libgpg-error@
111@code{@
112 wget ftp://ftp.gnupg.org/gcrypt/libgpg-error/libgpg-error-1.10.tar.bz2@
113 tar xvfj libgpg-error-1.10.tar.bz2@
114 cd libgpg-error-1.10@
115 ./configure --prefix=/usr@
116 sudo make install@
117}
118
119libgcrypt@
120@code{@
121 wget ftp://ftp.gnupg.org/gcrypt/libgcrypt/libgcrypt-1.5.0.tar.bz2@
122 tar xvfj libgcrypt-1.5.0.tar.tar.bz2@
123 cd libgcrypt-1.5.0@
124 ./configure --prefix=/usr@
125 sudo make install@
126}
127
128libcurl@
129@code{@
130 wget http://curl.haxx.se/download/curl-7.26.0.tar.gz@
131 tar xvfz curl-7.26.0.tar.gz@
132 cd curl-7.26.0@
133 ./configure@
134 sudo make install@
135}
136
137libunistring@
138@code{@
139 wget http://ftp.gnu.org/gnu/libunistring/libunistring-0.9.3.tar.gz@
140 tar xvfz libunistring-0.9.3.tar.gz@
141 cd libunistring-0.9.3@
142 ./configure@
143 sudo make install@
144}
145
1464. Remove conflicting packages@
147@code{@
148 sudo rpm -e --nodeps libgcrypt libgpg-error@
149}
150
1514. Install libextractor@
152@code{@
153 wget ftp://ftp.gnu.org/gnu/libextractor/libextractor-0.6.3.tar.gz@
154 tar xvfz libextractor-0.6.3.tar.gz@
155 cd libextractor-0.6.3@
156 ./configure@
157 sudo make install@
158}
159
1605. Install libmicrohttpd and dependencies
161
162nettle@
163@code{@
164 wget http://ftp.gnu.org/gnu/nettle/nettle-2.5.tar.gz@
165 tar xvfz nettle-2.5.tar.gz@
166 cd nettle-2.5@
167 ./configure@
168 sudo make install@
169}
170
171GnuTLS@
172@code{@
173 wget http://ftp.gnu.org/gnu/gnutls/gnutls-2.12.20.tar.bz2@
174 tar xvfj gnutls-2.12.20.tar.bz2@
175 cd gnutls-2.12.20@
176 ./configure --without-p11-kit@
177 sudo make install@
178}
179
180libmicrohttpd@
181@code{@
182 wget ftp://ftp.gnu.org/gnu/libmicrohttpd/libmicrohttpd-0.9.21.tar.gz@
183 tar xvfz libmicrohttpd-0.9.21.tar.gz@
184 cd libmicrohttpd-0.9.21@
185 ./configure@
186 sudo make install@
187}
188
1896. Set GNUnet prefix and add to PATH@
190@code{@
191 export GNUNET_PREFIX=@
192 export PATH=$PATH:$GNUNET_PREFIX/bin@
193}
194
1957. Install GNUnet from svn@
196@example
197 export LD_LIBRARY_PATH=/usr/local/lib@
198 svn co https://gnunet.org/svn/gnunet@
199 cd gnunet@
200 libtoolize@
201 ./bootstrap@
202 ./configure --prefix=$GNUNET_PREFIX --with-extractor=/usr/local \
203 --with-curl=/usr/local --with-mysql=/usr/lib/mysql --enable-logging=verbose@
204 make install@
205@end example
206
207Done!
208
209
210@node Build instructions for FreeBSD 8
211@subsection Build instructions for FreeBSD 8
212
213To get GNUnet 0.9 to compile on FreeBSD (at least FreeBSD 8.0):@ in order to
214install the library @code{libiconv}, at first change the directory to your
215ports directory, e.g.@
216@code{@
217 $ cd /usr/ports/@
218}@
219 following that, go to the install file of @code{libiconv} and install it,@
220@code{@
221 $ cd converters/libiconv,@
222 $ make install@
223}
224
225after that, change the directory to where you will check out
226@code{libextractor} and GNUnet, and install latest @code{libextractor},@
227 first of all, checkout @code{libextractor}, e.g.@
228@code{@
229 $ svn co https://gnunet.org/svn/Extractor@
230}@
231 then change the directory into which it was checked out, e.g.@
232@code{@
233 $ cd Extractor@
234}@
235 before the installation, you should do following steps,@
236
237@example
238$ ./bootstrap@
239$ ./configure --with-ltdl-include=/usr/local/include \
240 --with-ltdl-lib=/usr/local/lib@
241@end example
242
243if these steps complete successfully, you can install the library,@
244
245@example
246$ make install@
247@end example
248
249to check out the GNUnet, you should do the similar steps as
250@code{libextractor}, firstly, change back to starting directory, e.g.@
251@code{@
252 $ cd ../@
253}@
254 Set the following environmental variables:@
255@code{@
256 export CPPFLAGS="-I/usr/local/include"@
257 export LDFLAGS="-L/usr/local/lib"@
258}@
259 next, checkout GNUnet using@
260@code{@
261 $ svn co https://gnunet.org/svn/gnunet@
262}@
263 then change directory into newly checked out directory,@
264@code{@
265 $ cd gnunet@
266}@
267 at last, start to install GNUnet,@
268
269@example
270 $ ./bootstrap@
271 $ ./configure --with-ltdl-include=/usr/local/include \
272 --with-ltdl-lib=/usr/local/lib --with-extractor=/usr/local
273
274## NOTE: you may not need the --with-extractor option!@
275
276$ make install
277@end example
278
279
280
281@node Basic installation for Mac OS X
282@subsection Basic installation for Mac OS X
283
284This documentation may be outdated!
285
286This page is providing guidelines for users trying to install GNUnet on Mac OS
287X.@ Mainly users trying to install GNUnet by building source code are the most
288welcome readers.@ The steps below are tested on an Intel Architecture running
289Mac OS X Tiger (10.4.11). Ideally they should work on other Mac boxes with
290different configurations as all the configuration done for it is dependent on
291@uref{http://www.macports.org/, MacPorts}
292
293For having GNUnet installed successfully, some dependencies should be firstly
294resolved:
295
296@itemize @bullet
297
298@item
299Install/Update your @uref{http://developer.apple.com/tools/xcode/, Xcode}
300version 3.2.1 or later for Snow Leopard, 3.1.4 or later for Leopard, or 2.5 for
301Tiger.
302
303@item
304Download and install @uref{http://www.macports.org/, MacPorts}.@
305Now you are ready for installing GNunet dependencies.
306
307@item
308First, you'd better make sure that: /opt/local/bin and /opt/local/sbin are
309available in your PATH. (For doing so, open a terminal and type:@
310
311@example
312$ echo $PATH
313@end example
314
315and examine the output of it). If the paths are not available in your
316environment, you have to add them (You can add them by editing your .profile
317file in your home directory, append them to the PATH line). Then type:
318@example
319$ source ~/.profile
320@end example
321
322and re-examine the echo command output.
323
324@item
325Use MacPorts to download and install the dependencies:@
326The libraries are:
327
328@itemize @bullet
329
330@item
331@uref{http://trac.macports.org/browser/trunk/dports/www/libmicrohttpd/Portfile, libmicrohttpd.}
332
333@item
334@uref{http://trac.macports.org/browser/trunk/dports/devel/libgcrypt/Portfile, libgcrypt.}
335
336@item
337@uref{http://trac.macports.org/browser/trunk/dports/net/curl/Portfile, libcurl.}
338
339@item
340@uref{http://trac.macports.org/browser/trunk/dports/devel/libtool/Portfile, libltdl.}
341
342@item
343@uref{http://trac.macports.org/browser/trunk/dports/databases/sqlite3/Portfile, SQlite.}
344
345@item
346libunistring
347
348@item
349glpk
350
351@end itemize
352
353The port command is as follows:@
354@example
355port install libmicrohttpd libgcrypt curl libtool sqlite3 linunistring glpk
356@end example
357One of the dependencies, the libextractor, should be explicitly installed,
358since the version available from macports is outdated to work with GNUnet. To
359install the latest libextractor:
360@itemize @bullet
361
362
363@item
364Install the Subversion Client:@
365For more information about Subversion visit:
366@uref{http://subversion.tigris.org/, http://subversion.tigris.org/}
367
368@example
369# port install subversion
370@end example
371
372
373@item
374Use Subversion to download the latest Extractor:
375@example
376$ svn checkout https://gnunet.org/svn/Extractor
377@end example
378
379
380@item
381Go to the installation directory of the Extractor, compile and install it:
382@example
383$ ./bootstrap
384$ export CPPFLAGS="-I/opt/local/include"
385$ export LDFLAGS="-L/opt/local/lib"
386$ ./configure --prefix=/opt/local
387$ make
388# make install
389@end example
390
391@end itemize
392
393
394@item
395Now, your system is ready to install GNunet. If you downloaded GNUnet by
396checking it out from svn, you should start by running the bootstrap script.
397Open a terminal pointing to the GNUnet directory and type:@
398
399@example
400$ ./bootstrap
401@end example
402
403
404@item
405Run the configure script:
406@example
407$ export CPPFLAGS="-I/opt/local/include"
408$ export LDFLAGS="-L/opt/local/lib"
409$ ./configure --prefix=/tmp/gnunet_build
410@end example
411
412
413GNUnet will be installed in the directory /tmp/gnunet_build (Of course that
414installation path can be changed).@ The CPPFLAGS and LDFLAGS are mentioned in
415order to inform the compiler and the linker to lookup headers and libraries in
416/opt/local/include and /opt/local/lib.
417
418@item
419Compile@
420
421@example
422$ make
423@end example
424
425
426@item
427Install GNUnet
428@example
429# make install
430@end example
431
432@end itemize
433
434
435@node Basic Installation for Fedora/PlanetLab nodes running Fedora 12
436@subsection Basic Installation for Fedora/PlanetLab nodes running Fedora 12
437
438
439@strong{This documentation is outdated and not valid for GNUnet 0.10.0!}@
440
441GNUnet installation on Fedora 8/Planetlab nodes can be done as following:
442
4431. Install the build tools to build GNUnet@
444@example
445sudo yum -y -t --nogpgcheck install gcc make autoconf gettext-devel \
446texinfo subversion@
447@end example
448
4492. Install the GNUnet dependencies@
450@example
451sudo yum -y -t --nogpgcheck install libunistring-devel libunistring-devel \
452libgcrypt-devel zlib-devel sqlite-devel postgresql-devel mysql-devel \
453libgsf-devel libvorbis-devel@
454@end example
455
4563. Install outdated dependencies from source@
457libtool@
458@example
459wget http://ftp.gnu.org/gnu/libtool/libtool-2.4.2.tar.gz@
460tar xvfz libtool-2.4.2.tar.gz@
461cd libtool-2.4.2@
462./configure@
463sudo make install@
464@end example
465
466glpk@
467@example
468wget http://ftp.gnu.org/gnu/glpk/glpk-4.47.tar.gz@
469tar xvfz glpk-4.47.tar.gz@
470cd glpk-4.47@
471./configure@
472sudo make install@
473@end example
474
475libcurl@
476@example
477wget http://curl.haxx.se/download/curl-7.26.0.tar.gz@
478tar xvfz curl-7.26.0.tar.gz@
479cd curl-7.26.0@
480./configure@
481sudo make install@
482@end example
483
4844. Install libextractor@
485@example
486svn co https://gnunet.org/svn/libextractor@
487cd libextractor@
488libtoolize@
489./bootstrap@
490./configure@
491sudo make install@
492@end example
493
4945. Install libmicrohttpd@
495@example
496svn co https://gnunet.org/svn/libmicrohttpd@
497cd libmicrohttpd@
498libtoolize@
499./bootstrap@
500./configure@
501sudo make install@
502@end example
503
5046. Set GNUnet prefix and add to PATH@
505@example
506export GNUNET_PREFIX=@
507export PATH=$PATH:$GNUNET_PREFIX/bin@
508@end example
509
5107. Install GNUnet from svn@
511@example
512export LD_LIBRARY_PATH=/usr/local/lib@
513svn co https://gnunet.org/svn/gnunet@
514cd gnunet@
515libtoolize@
516./bootstrap@
517./configure --prefix=$GNUNET_PREFIX --with-extractor=/usr \
518 --with-mysql=/usr/lib/mysql --enable-logging=verbose@
519make install@
520@end example
521
522Done!
523
524
525@node Basic Installation for Fedora/PlanetLab nodes running Fedora 8 .
526@subsection Basic Installation for Fedora/PlanetLab nodes running Fedora 8 .
527@c %**end of header
528
529@strong{This documentation is outdated and not valid for GNUnet 0.10.0!}@
530 GNUnet installation on Fedora 8/Planetlab nodes can be done as following:
531
5321. Install the build tools to build GNUnet@
533@example
534sudo yum -y -t --nogpgcheck install gcc make automake autoconf gettext-devel \
535texinfo zlib-devel subversion@
536@end example
537
5382. Install the GNUnet dependencies@
539@example
540sudo yum -y -t --nogpgcheck install gnutls-devel gnutls-devel libgcrypt-devel \
541sqlite-devel postgresql-devel mysql-devel libgsf-devel libvorbis-devel \
542libidn-devel
543@end example
544
5453. Install outdated dependencies from source@
546 libtool@
547@code{@
548 wget http://ftp.gnu.org/gnu/libtool/libtool-2.4.2.tar.gz@
549 tar xvfz libtool-2.4.2.tar.gz@
550 cd libtool-2.4.2@
551 ./configure@
552 sudo make install@
553}
554
555libtool@
556@code{@
557 wget http://ftp.gnu.org/gnu/libtool/libtool-2.4.2.tar.gz@
558 tar xvfz libtool-2.4.2.tar.gz@
559 cd libtool-2.4.2@
560 ./configure@
561 sudo make install@
562}
563
564glpk@
565@code{@
566 wget http://ftp.gnu.org/gnu/glpk/glpk-4.47.tar.gz@
567 tar xvfz glpk-4.47.tar.gz@
568 cd glpk-4.47@
569 ./configure@
570 sudo make install@
571}
572
573libgpg-error@
574@code{@
575 wget ftp://ftp.gnupg.org/gcrypt/libgpg-error/libgpg-error-1.10.tar.bz2@
576 tar xvfj libgpg-error-1.10.tar.bz2@
577 cd libgpg-error-1.10@
578 ./configure --prefix=/usr@
579 sudo make install@
580}
581
582libgcrypt@
583@code{@
584 wget ftp://ftp.gnupg.org/gcrypt/libgcrypt/libgcrypt-1.5.0.tar.bz2@
585 tar xvfj libgcrypt-1.5.0.tar.tar.bz2@
586 cd libgcrypt-1.5.0@
587 ./configure --prefix=/usr@
588 sudo make install@
589}
590
591libcurl@
592@code{@
593 wget http://curl.haxx.se/download/curl-7.26.0.tar.gz@
594 tar xvfz curl-7.26.0.tar.gz@
595 cd curl-7.26.0@
596 ./configure@
597 sudo make install@
598}
599
600libunistring@
601@code{@
602 wget http://ftp.gnu.org/gnu/libunistring/libunistring-0.9.3.tar.gz@
603 tar xvfz libunistring-0.9.3.tar.gz@
604 cd libunistring-0.9.3@
605 ./configure@
606 sudo make install@
607}
608
6094. Remove conflicting packages@
610@code{@
611 sudo rpm -e --nodeps libgcrypt libgpg-error@
612}
613
6144. Install libextractor@
615@code{@
616 wget ftp://ftp.gnu.org/gnu/libextractor/libextractor-0.6.3.tar.gz@
617 tar xvfz libextractor-0.6.3.tar.gz@
618 cd libextractor-0.6.3@
619 ./configure@
620 sudo make install@
621}
622
6235. Install libmicrohttpd and dependencies
624
625nettle@
626@code{@
627 wget http://ftp.gnu.org/gnu/nettle/nettle-2.5.tar.gz@
628 tar xvfz nettle-2.5.tar.gz@
629 cd nettle-2.5@
630 ./configure@
631 sudo make install@
632}
633
634GnuTLS@
635@code{@
636 wget http://ftp.gnu.org/gnu/gnutls/gnutls-2.12.20.tar.bz2@
637 tar xvfj gnutls-2.12.20.tar.bz2@
638 cd gnutls-2.12.20@
639 ./configure --without-p11-kit@
640 sudo make install@
641}
642
643libmicrohttpd@
644@code{@
645 wget ftp://ftp.gnu.org/gnu/libmicrohttpd/libmicrohttpd-0.9.21.tar.gz@
646 tar xvfz libmicrohttpd-0.9.21.tar.gz@
647 cd libmicrohttpd-0.9.21@
648 ./configure@
649 sudo make install@
650}
651
6526. Set GNUnet prefix and add to PATH@
653@code{@
654 export GNUNET_PREFIX=@
655 export PATH=$PATH:$GNUNET_PREFIX/bin@
656}
657
6587. Install GNUnet from svn@
659@example
660 export LD_LIBRARY_PATH=/usr/local/lib@
661 svn co https://gnunet.org/svn/gnunet@
662 cd gnunet@
663 libtoolize@
664 ./bootstrap@
665 ./configure --prefix=$GNUNET_PREFIX --with-extractor=/usr/local \
666 --with-curl=/usr/local --with-mysql=/usr/lib/mysql --enable-logging=verbose@
667 make install@
668@end example
669
670Done!
671
672