aboutsummaryrefslogtreecommitdiff
path: root/README
diff options
context:
space:
mode:
Diffstat (limited to 'README')
-rw-r--r--README152
1 files changed, 90 insertions, 62 deletions
diff --git a/README b/README
index e23d006b5..15879c4c4 100644
--- a/README
+++ b/README
@@ -10,11 +10,12 @@ ToC
10 o test suite dependencies 10 o test suite dependencies
11 o optional dependencies 11 o optional dependencies
12 o autotools 12 o autotools
13* Requirements 13* Notes on setuid
14* Scope of Operating System support
14* How to install 15* How to install
15 o binary packages 16 o binary packages
16 o Scope of Operating System support
17 o Building GNUnet from source 17 o Building GNUnet from source
18 o Notes on compiling from Git
18* Configuration 19* Configuration
19* Usage 20* Usage
20* Hacking GNUnet 21* Hacking GNUnet
@@ -51,6 +52,10 @@ Online documentation is provided at
51Dependencies: 52Dependencies:
52============= 53=============
53 54
55The dependencies for building GNUnet will require around 0.74 GiB
56diskspace. GNUnet itself will require 8 - 9.2 MiB depending on
57configuration.
58
54These are the direct dependencies for running GNUnet: 59These are the direct dependencies for running GNUnet:
55~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 60~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
56 61
@@ -117,10 +122,9 @@ These are the optional dependencies:
117- grof (for linting of man pages) 122- grof (for linting of man pages)
118- libextractor >= 0.6.1 (highly recommended[*5]) 123- libextractor >= 0.6.1 (highly recommended[*5])
119- libjansson 124- libjansson
120- libglpk >= 4.45 (for experimental code) 125- libopus >= 1.0.1 (for conversation tool)
121- libopus >= 1.0.1 (for experimental conversation tool) 126- libpulse >= 2.0 (for conversation tool)
122- libpulse >= 2.0 (for experimental conversation tool) 127- libogg >= 1.3.0 (for conversation tool)
123- libogg >= 1.3.0 (for experimental conversation tool)
124- libnss (certtool binary (for convenient 128- libnss (certtool binary (for convenient
125 installation of GNS proxy)) 129 installation of GNS proxy))
126- libzbar >= 0.10 (for gnunet-qr) 130- libzbar >= 0.10 (for gnunet-qr)
@@ -166,12 +170,12 @@ Recommended autotools for compiling the Git version are:
166 fix in. 170 fix in.
167 171
168[*4] We are commited to portable tools and solutions 172[*4] We are commited to portable tools and solutions
169 where possible. New scripts should be Posix SH 173 where possible. New scripts should be Posix sh
170 compatible, current and older scripts are 174 compatible, current and older scripts are
171 in the process of being rewritten to comply 175 in the process of being rewritten to comply
172 with this requirement. 176 with this requirement.
173 177
174[*5] While libextractor is optional, it is recommended to 178[*5] While libextractor ("LE") is optional, it is recommended to
175 build gnunet against it. If you install it later, 179 build gnunet against it. If you install it later,
176 you won't benefit from libextractor. 180 you won't benefit from libextractor.
177 If you are a distributor, we recommend to split 181 If you are a distributor, we recommend to split
@@ -189,26 +193,69 @@ Recommended autotools for compiling the Git version are:
189 more details. 193 more details.
190 However, this leak is just a minor concern. 194 However, this leak is just a minor concern.
191 195
192Requirements 196Notes on setuid
193============ 197===============
198
199For a correct functionality depending on the host OS, you need
200to run the equivalent of these steps after installation.
201Replace $(DESTDIR)$(libexecdir) with the appropriate paths,
202for example /usr/local/lib/gnunet/libexec/. Note that this
203obviously must be run as priviledged user.
204
205chown root:root $(DESTDIR)$(libexecdir)/gnunet-helper-vpn
206chmod u+s $(DESTDIR)$(libexecdir)/gnunet-helper-vpn
207chown root:root $(DESTDIR)$(libexecdir)/gnunet-helper-transport-wlan
208chmod u+s $(DESTDIR)$(libexecdir)/gnunet-helper-transport-wlan
209chown root:root $(DESTDIR)$(libexecdir)/gnunet-helper-transport-bluetooth
210chmod u+s $(DESTDIR)$(libexecdir)/gnunet-helper-transport-bluetooth
211chown root $(DESTDIR)$(libexecdir)/gnunet-helper-dns
212chgrp $(GNUNETDNS_GROUP) $(DESTDIR)$(libexecdir)/gnunet-helper-dns
213chmod 4750 $(DESTDIR)$(libexecdir)/gnunet-helper-dns
214chgrp $(GNUNETDNS_GROUP) $(DESTDIR)$(libexecdir)/gnunet-helper-dns
215chown gnunet:$(GNUNETDNS_GROUP) $(DESTDIR)$(libexecdir)/gnunet-helper-dns
216chmod 2750 $(DESTDIR)$(libexecdir)/gnunet-helper-dns
217chown root:root $(DESTDIR)$(libexecdir)/gnunet-helper-exit
218chmod u+s $(DESTDIR)$(libexecdir)/gnunet-helper-exit
219chown root:root $(DESTDIR)$(libexecdir)/gnunet-helper-nat-server
220chown root:root $(DESTDIR)$(libexecdir)/gnunet-helper-nat-client
221chmod u+s $(DESTDIR)$(libexecdir)/gnunet-helper-nat-server
222chmod u+s $(DESTDIR)$(libexecdir)/gnunet-helper-nat-client
223
224
225Scope of Operating System support
226=================================
227
228We actively support GNUnet on a broad range of Free Software Operating
229Systems.
230
231For proprietary Operating Systems, like for example Microsoft Windows
232or Apple OS X, we accept patches if they don't break anything for
233other Operating Systems.
234If you are implementing support for a proprietary Operating System,
235you should be aware that progress in our codebase could break
236functionality on your OS and cause unpredicted behavior we can
237not test. However, we do not break support on Operating Systems
238with malicious intent.
239Regressions which do occur on these Operating Systems are 3rd
240class issues and we expect users and developers of these
241Operating Systems to send proposed patches to fix regressions.
242
243For more information about our stand on some of the motivating
244points here, read the 'Philosophy' Chapter of our handbook.
194 245
195GNUnet's directed acyclic graph (DAG) will require around 0.74 GiB
196Diskspace, with GNUnet itself taking around 8 - 9.2 MiB reported by
197the build on GNU Guix.
198 246
199How to install? 247How to install?
200=============== 248===============
201 249
202
203binary packages 250binary packages
204~~~~~~~~~~~~~~~ 251~~~~~~~~~~~~~~~
205 252
206We recommend to use binary packages provided by your Operating System's 253We recommend to use binary packages provided by the package manager integrated
207package manager. GNUnet is reportedly available for at least: 254within your Operating System. GNUnet is reportedly available for at least:
208 255
209GNU Guix, Nix, Debian, ALT Linux, Archlinux, Deepin, Devuan, Hyperbola, 256ALT Linux, Archlinux, Debian, Deepin, Devuan, GNU Guix, Hyperbola,
210Kali Linux, LEDE/OpenWRT, Manjaro, Parabola, Pardus, Parrot, PureOS, 257Kali Linux, LEDE/OpenWRT, Manjaro, Nix, Parabola, Pardus, Parrot,
211Raspbian, Rosa, Trisquel, and Ubuntu. 258PureOS, Raspbian, Rosa, Trisquel, and Ubuntu.
212 259
213If GNUnet is available for your Operating System and it is missing, 260If GNUnet is available for your Operating System and it is missing,
214send us feedback so that we can add it to this list. Furthermore, if 261send us feedback so that we can add it to this list. Furthermore, if
@@ -224,26 +271,6 @@ $ apt-get install gnunet
224Generic installation instructions are in the INSTALL file in this 271Generic installation instructions are in the INSTALL file in this
225directory. 272directory.
226 273
227Scope of Operating System support
228~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
229We actively support GNUnet on a broad range of Free Software Operating
230Systems.
231
232For proprietary Operating Systems, like for example Microsoft Windows
233or Apple OS X, we accept patches if they don't break anything for
234other Operating Systems.
235If you are implementing support for a proprietary Operating System,
236you should be aware that progress in our codebase could break
237functionality on your OS and cause unpredicted behavior we can
238not test. However, we do not break support on Operating Systems
239with malicious intent.
240Regressions which do occur on these Operating Systems are 3rd
241class issues and we expect users and developers of these
242Operating Systems to send proposed patches to fix regressions.
243
244For more information about our stand on some of the motivating
245points here, read the 'Philosophy' Chapter of our handbook.
246
247Building GNUnet from source 274Building GNUnet from source
248~~~~~~~~~~~~~~~~~~~~~~~~~~~ 275~~~~~~~~~~~~~~~~~~~~~~~~~~~
249 276
@@ -297,11 +324,12 @@ in 'contrib/services' or by running:
297# sudo -u gnunet gnunet-arm -s 324# sudo -u gnunet gnunet-arm -s
298 325
299 326
300Note that running the 'configure' and 'make install' steps as 327Note that you must read paragraph "Notes on setuid", which documents steps you
301root (or with sudo) is required as some parts of the installation 328have to follow after the installation, as a priviledged user. We require some
302require the creation of SUID binaries. The installation will 329binaries to be setuid. The most portable approach across all supported
303work if you do not run these steps as root, but some components 330platforms and targets is to let this be handled manually.
304may not be installed in the perfect place or with the right 331The installation will work if you do not run these steps as root, but some
332components may not be installed in the perfect place or with the right
305permissions and thus won't work. 333permissions and thus won't work.
306 334
307This will create the users and groups needed for running GNUnet 335This will create the users and groups needed for running GNUnet
@@ -322,26 +350,26 @@ this case (instead of ~gnunet/.config/gnunet.conf"). In this case,
322you need to start GNUnet using "gnunet-arm -s -c /etc/gnunet.conf" or 350you need to start GNUnet using "gnunet-arm -s -c /etc/gnunet.conf" or
323set "XDG_CONFIG_HOME=/etc/". 351set "XDG_CONFIG_HOME=/etc/".
324 352
325You can avoid running 'make install' as root if you run configure 353You can avoid running 'make install' as root if you have extensive sudo rights
326with the "--with-sudo=yes" option and have extensive sudo rights 354(can run "chmod +s" and "chown" via 'sudo'). If you run 'make install' as a
327(can run "chmod +s" and "chown" via 'sudo'). If you run 'make install' 355normal user without sudo rights (or the configure option), certain binaries
328as a normal user without sudo rights (or the configure option), 356that require additional privileges will not be installed properly (and
329certain binaries that require additional privileges will not be 357autonomous NAT traversal, WLAN, DNS/GNS and the VPN will then not work).
330installed properly (and autonomous NAT traversal, WLAN, DNS/GNS and 358
331the VPN will then not work). 359If you run 'configure' and 'make install' as root, GNUnet's build system will
332 360install "libnss_gns*" libraries to "/lib/" regardless (!) of the
333If you run 'configure' and 'make install' as root or use the '--with-sudo' 361$GNUNET_PREFIX you might have specified, as those libraries must be in
334option, GNUnet's build system will install "libnss_gns*" libraries to 362"/lib/". If you are packaging GNUnet for binary distribution, this may cause
335"/lib/" regardless (!) of the $GNUNET_PREFIX you might have specified, 363your packaging script to miss those plugins, so you might need to do some
336as those libraries must be in "/lib/". If you are packaging GNUnet 364additional manual work to include those libraries in your binary package(s).
337for binary distribution, this may cause your packaging script to miss 365Similarly, if you want to use the GNUnet Name System and did NOT run
338those plugins, so you might need to do some additional manual work to 366GNUnet's 'make install' process with priviledged rights, the libraries will be
339include those libraries in your binary package(s). Similarly, if you 367installed to "$GNUNET_PREFIX" and you will have to move them to "/lib/"
340want to use the GNUnet naming system and did NOT run GNUnet's 'make
341install' process with sudo rights, the libraries will be installed to
342"$GNUNET_PREFIX" and you will have to move them to "/lib/"
343manually. 368manually.
344 369
370Notes on compiling from Git
371~~~~~~~~~~~~~~~~~~~~~~~~~~~
372
345Finally, if you are compiling the code from git, you have to 373Finally, if you are compiling the code from git, you have to
346run "sh ./bootstrap" before running "./configure". If you receive an error during 374run "sh ./bootstrap" before running "./configure". If you receive an error during
347the running of "sh ./bootstrap" that looks like "macro `AM_PATH_GTK' 375the running of "sh ./bootstrap" that looks like "macro `AM_PATH_GTK'