diff options
Diffstat (limited to 'README')
-rw-r--r-- | README | 152 |
1 files changed, 90 insertions, 62 deletions
@@ -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 | |||
51 | Dependencies: | 52 | Dependencies: |
52 | ============= | 53 | ============= |
53 | 54 | ||
55 | The dependencies for building GNUnet will require around 0.74 GiB | ||
56 | diskspace. GNUnet itself will require 8 - 9.2 MiB depending on | ||
57 | configuration. | ||
58 | |||
54 | These are the direct dependencies for running GNUnet: | 59 | These 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 | ||
192 | Requirements | 196 | Notes on setuid |
193 | ============ | 197 | =============== |
198 | |||
199 | For a correct functionality depending on the host OS, you need | ||
200 | to run the equivalent of these steps after installation. | ||
201 | Replace $(DESTDIR)$(libexecdir) with the appropriate paths, | ||
202 | for example /usr/local/lib/gnunet/libexec/. Note that this | ||
203 | obviously must be run as priviledged user. | ||
204 | |||
205 | chown root:root $(DESTDIR)$(libexecdir)/gnunet-helper-vpn | ||
206 | chmod u+s $(DESTDIR)$(libexecdir)/gnunet-helper-vpn | ||
207 | chown root:root $(DESTDIR)$(libexecdir)/gnunet-helper-transport-wlan | ||
208 | chmod u+s $(DESTDIR)$(libexecdir)/gnunet-helper-transport-wlan | ||
209 | chown root:root $(DESTDIR)$(libexecdir)/gnunet-helper-transport-bluetooth | ||
210 | chmod u+s $(DESTDIR)$(libexecdir)/gnunet-helper-transport-bluetooth | ||
211 | chown root $(DESTDIR)$(libexecdir)/gnunet-helper-dns | ||
212 | chgrp $(GNUNETDNS_GROUP) $(DESTDIR)$(libexecdir)/gnunet-helper-dns | ||
213 | chmod 4750 $(DESTDIR)$(libexecdir)/gnunet-helper-dns | ||
214 | chgrp $(GNUNETDNS_GROUP) $(DESTDIR)$(libexecdir)/gnunet-helper-dns | ||
215 | chown gnunet:$(GNUNETDNS_GROUP) $(DESTDIR)$(libexecdir)/gnunet-helper-dns | ||
216 | chmod 2750 $(DESTDIR)$(libexecdir)/gnunet-helper-dns | ||
217 | chown root:root $(DESTDIR)$(libexecdir)/gnunet-helper-exit | ||
218 | chmod u+s $(DESTDIR)$(libexecdir)/gnunet-helper-exit | ||
219 | chown root:root $(DESTDIR)$(libexecdir)/gnunet-helper-nat-server | ||
220 | chown root:root $(DESTDIR)$(libexecdir)/gnunet-helper-nat-client | ||
221 | chmod u+s $(DESTDIR)$(libexecdir)/gnunet-helper-nat-server | ||
222 | chmod u+s $(DESTDIR)$(libexecdir)/gnunet-helper-nat-client | ||
223 | |||
224 | |||
225 | Scope of Operating System support | ||
226 | ================================= | ||
227 | |||
228 | We actively support GNUnet on a broad range of Free Software Operating | ||
229 | Systems. | ||
230 | |||
231 | For proprietary Operating Systems, like for example Microsoft Windows | ||
232 | or Apple OS X, we accept patches if they don't break anything for | ||
233 | other Operating Systems. | ||
234 | If you are implementing support for a proprietary Operating System, | ||
235 | you should be aware that progress in our codebase could break | ||
236 | functionality on your OS and cause unpredicted behavior we can | ||
237 | not test. However, we do not break support on Operating Systems | ||
238 | with malicious intent. | ||
239 | Regressions which do occur on these Operating Systems are 3rd | ||
240 | class issues and we expect users and developers of these | ||
241 | Operating Systems to send proposed patches to fix regressions. | ||
242 | |||
243 | For more information about our stand on some of the motivating | ||
244 | points here, read the 'Philosophy' Chapter of our handbook. | ||
194 | 245 | ||
195 | GNUnet's directed acyclic graph (DAG) will require around 0.74 GiB | ||
196 | Diskspace, with GNUnet itself taking around 8 - 9.2 MiB reported by | ||
197 | the build on GNU Guix. | ||
198 | 246 | ||
199 | How to install? | 247 | How to install? |
200 | =============== | 248 | =============== |
201 | 249 | ||
202 | |||
203 | binary packages | 250 | binary packages |
204 | ~~~~~~~~~~~~~~~ | 251 | ~~~~~~~~~~~~~~~ |
205 | 252 | ||
206 | We recommend to use binary packages provided by your Operating System's | 253 | We recommend to use binary packages provided by the package manager integrated |
207 | package manager. GNUnet is reportedly available for at least: | 254 | within your Operating System. GNUnet is reportedly available for at least: |
208 | 255 | ||
209 | GNU Guix, Nix, Debian, ALT Linux, Archlinux, Deepin, Devuan, Hyperbola, | 256 | ALT Linux, Archlinux, Debian, Deepin, Devuan, GNU Guix, Hyperbola, |
210 | Kali Linux, LEDE/OpenWRT, Manjaro, Parabola, Pardus, Parrot, PureOS, | 257 | Kali Linux, LEDE/OpenWRT, Manjaro, Nix, Parabola, Pardus, Parrot, |
211 | Raspbian, Rosa, Trisquel, and Ubuntu. | 258 | PureOS, Raspbian, Rosa, Trisquel, and Ubuntu. |
212 | 259 | ||
213 | If GNUnet is available for your Operating System and it is missing, | 260 | If GNUnet is available for your Operating System and it is missing, |
214 | send us feedback so that we can add it to this list. Furthermore, if | 261 | send us feedback so that we can add it to this list. Furthermore, if |
@@ -224,26 +271,6 @@ $ apt-get install gnunet | |||
224 | Generic installation instructions are in the INSTALL file in this | 271 | Generic installation instructions are in the INSTALL file in this |
225 | directory. | 272 | directory. |
226 | 273 | ||
227 | Scope of Operating System support | ||
228 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
229 | We actively support GNUnet on a broad range of Free Software Operating | ||
230 | Systems. | ||
231 | |||
232 | For proprietary Operating Systems, like for example Microsoft Windows | ||
233 | or Apple OS X, we accept patches if they don't break anything for | ||
234 | other Operating Systems. | ||
235 | If you are implementing support for a proprietary Operating System, | ||
236 | you should be aware that progress in our codebase could break | ||
237 | functionality on your OS and cause unpredicted behavior we can | ||
238 | not test. However, we do not break support on Operating Systems | ||
239 | with malicious intent. | ||
240 | Regressions which do occur on these Operating Systems are 3rd | ||
241 | class issues and we expect users and developers of these | ||
242 | Operating Systems to send proposed patches to fix regressions. | ||
243 | |||
244 | For more information about our stand on some of the motivating | ||
245 | points here, read the 'Philosophy' Chapter of our handbook. | ||
246 | |||
247 | Building GNUnet from source | 274 | Building 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 | ||
300 | Note that running the 'configure' and 'make install' steps as | 327 | Note that you must read paragraph "Notes on setuid", which documents steps you |
301 | root (or with sudo) is required as some parts of the installation | 328 | have to follow after the installation, as a priviledged user. We require some |
302 | require the creation of SUID binaries. The installation will | 329 | binaries to be setuid. The most portable approach across all supported |
303 | work if you do not run these steps as root, but some components | 330 | platforms and targets is to let this be handled manually. |
304 | may not be installed in the perfect place or with the right | 331 | The installation will work if you do not run these steps as root, but some |
332 | components may not be installed in the perfect place or with the right | ||
305 | permissions and thus won't work. | 333 | permissions and thus won't work. |
306 | 334 | ||
307 | This will create the users and groups needed for running GNUnet | 335 | This 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, | |||
322 | you need to start GNUnet using "gnunet-arm -s -c /etc/gnunet.conf" or | 350 | you need to start GNUnet using "gnunet-arm -s -c /etc/gnunet.conf" or |
323 | set "XDG_CONFIG_HOME=/etc/". | 351 | set "XDG_CONFIG_HOME=/etc/". |
324 | 352 | ||
325 | You can avoid running 'make install' as root if you run configure | 353 | You can avoid running 'make install' as root if you have extensive sudo rights |
326 | with 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' | 355 | normal user without sudo rights (or the configure option), certain binaries |
328 | as a normal user without sudo rights (or the configure option), | 356 | that require additional privileges will not be installed properly (and |
329 | certain binaries that require additional privileges will not be | 357 | autonomous NAT traversal, WLAN, DNS/GNS and the VPN will then not work). |
330 | installed properly (and autonomous NAT traversal, WLAN, DNS/GNS and | 358 | |
331 | the VPN will then not work). | 359 | If you run 'configure' and 'make install' as root, GNUnet's build system will |
332 | 360 | install "libnss_gns*" libraries to "/lib/" regardless (!) of the | |
333 | If 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 |
334 | option, 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, | 363 | your packaging script to miss those plugins, so you might need to do some |
336 | as those libraries must be in "/lib/". If you are packaging GNUnet | 364 | additional manual work to include those libraries in your binary package(s). |
337 | for binary distribution, this may cause your packaging script to miss | 365 | Similarly, if you want to use the GNUnet Name System and did NOT run |
338 | those plugins, so you might need to do some additional manual work to | 366 | GNUnet's 'make install' process with priviledged rights, the libraries will be |
339 | include those libraries in your binary package(s). Similarly, if you | 367 | installed to "$GNUNET_PREFIX" and you will have to move them to "/lib/" |
340 | want to use the GNUnet naming system and did NOT run GNUnet's 'make | ||
341 | install' process with sudo rights, the libraries will be installed to | ||
342 | "$GNUNET_PREFIX" and you will have to move them to "/lib/" | ||
343 | manually. | 368 | manually. |
344 | 369 | ||
370 | Notes on compiling from Git | ||
371 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
372 | |||
345 | Finally, if you are compiling the code from git, you have to | 373 | Finally, if you are compiling the code from git, you have to |
346 | run "sh ./bootstrap" before running "./configure". If you receive an error during | 374 | run "sh ./bootstrap" before running "./configure". If you receive an error during |
347 | the running of "sh ./bootstrap" that looks like "macro `AM_PATH_GTK' | 375 | the running of "sh ./bootstrap" that looks like "macro `AM_PATH_GTK' |