2
0

FROM_SOURCE 41 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435
  1. @node Build instructions for Ubuntu 12.04 using Git
  2. @section Build instructions for Ubuntu 12.04 using Git
  3. @menu
  4. * Install the required build tools::
  5. * Install libgcrypt 1.6 and libgpg-error::
  6. * Install gnutls with DANE support::
  7. * Install libgnurl::
  8. * Install libmicrohttpd from Git::
  9. * Install libextractor from Git::
  10. * Install GNUnet dependencies::
  11. * Build GNUnet::
  12. * Install the GNUnet-gtk user interface from Git::
  13. @end menu
  14. @node Install the required build tools
  15. @subsection Install the required build tools
  16. First, make sure Git is installed on your system:
  17. @example
  18. $ sudo apt-get install git
  19. @end example
  20. Install the essential buildtools:
  21. @example
  22. $ sudo apt-get install automake autopoint autoconf libtool
  23. @end example
  24. @node Install libgcrypt 1.6 and libgpg-error
  25. @subsection Install libgcrypt 1.6 and libgpg-error
  26. @ref{generic source installation - libgpg-error}
  27. @node Install gnutls with DANE support
  28. @subsection Install gnutls with DANE support
  29. @itemize @bullet
  30. @item @ref{generic source installation - nettle}
  31. @item @ref{generic source installation - ldns}
  32. @item @ref{generic source installation - libunbound/unbound}
  33. @item @ref{generic source installation - gnutls}
  34. @item @ref{generic source installation - libgcrypt}
  35. @end itemize
  36. @node Install libgnurl
  37. @subsection Install libgnurl
  38. Follow the @ref{generic source installation - libgnurl}.
  39. @node Install libmicrohttpd from Git
  40. @subsection Install libmicrohttpd from Git
  41. @example
  42. $ git clone https://gnunet.org/git/libmicrohttpd
  43. $ cd libmicrohttpd/
  44. $ ./bootstrap
  45. $ ./configure
  46. $ sudo make install ; cd ..
  47. @end example
  48. @node Install libextractor from Git
  49. @subsection Install libextractor from Git
  50. Install libextractor dependencies:
  51. @example
  52. $ sudo apt-get install zlib1g-dev libgsf-1-dev libmpeg2-4-dev \
  53. libpoppler-dev libvorbis-dev libexiv2-dev libjpeg-dev \
  54. libtiff-dev libgif-dev libvorbis-dev libflac-dev libsmf-dev \
  55. g++
  56. @end example
  57. Build libextractor:
  58. @example
  59. $ git clone https://gnunet.org/git/libextractor
  60. $ cd libextractor
  61. $ ./bootstrap
  62. $ ./configure
  63. $ sudo make install ; cd ..
  64. @end example
  65. @node Install GNUnet dependencies
  66. @subsection Install GNUnet dependencies
  67. @example
  68. $ sudo apt-get install libidn11-dev libunistring-dev libglpk-dev \
  69. libpulse-dev libbluetooth-dev libsqlite-dev
  70. @end example
  71. Install libopus:
  72. @example
  73. $ wget http://downloads.xiph.org/releases/opus/opus-1.1.tar.gz
  74. $ tar xf opus-1.1.tar.gz
  75. $ cd opus-1.1/
  76. $ ./configure
  77. $ sudo make install ; cd ..
  78. @end example
  79. Choose one or more database backends:
  80. SQLite3:
  81. @example
  82. $ sudo apt-get install libsqlite3-dev
  83. @end example
  84. MySQL:
  85. @example
  86. $ sudo apt-get install libmysqlclient-dev
  87. @end example
  88. PostgreSQL:
  89. @example
  90. $ sudo apt-get install libpq-dev postgresql
  91. @end example
  92. @node Build GNUnet
  93. @subsection Build GNUnet
  94. @menu
  95. * Configuring the installation path::
  96. * Configuring the system::
  97. * Installing components requiring sudo permission::
  98. * Build::
  99. @end menu
  100. @node Configuring the installation path
  101. @subsubsection Configuring the installation path
  102. You can specify the location of the GNUnet installation by setting the
  103. prefix when calling the configure script with @code{--prefix=DIRECTORY}
  104. @example
  105. $ export PATH=$PATH:DIRECTORY/bin
  106. @end example
  107. @node Configuring the system
  108. @subsubsection Configuring the system
  109. Please make sure NOW that you have created a user and group 'gnunet'
  110. and additionally a group 'gnunetdns':
  111. @example
  112. $ sudo addgroup gnunet
  113. $ sudo addgroup gnunetdns
  114. $ sudo adduser gnunet
  115. @end example
  116. Each GNUnet user should be added to the 'gnunet' group (may
  117. require fresh login to come into effect):
  118. @example
  119. $ sudo useradd -G gnunet
  120. @end example
  121. @node Installing components requiring sudo permission
  122. @subsubsection Installing components requiring sudo permission
  123. Some components, like the nss plugin required for GNS, may require root
  124. permissions. To allow these few components to be installed use:
  125. @example
  126. $ ./configure --with-sudo
  127. @end example
  128. @node Build
  129. @subsubsection Build
  130. @example
  131. $ git clone https://gnunet.org/git/gnunet/
  132. $ cd gnunet/
  133. $ ./bootstrap
  134. @end example
  135. Use the required configure call including the optional installation prefix
  136. @code{PREFIX} or the sudo permissions:
  137. @example
  138. $ ./configure [ --with-sudo | --with-prefix=PREFIX ]
  139. @end example
  140. @example
  141. $ make; sudo make install
  142. @end example
  143. After installing it, you need to create an empty configuration file:
  144. @example
  145. mkdir ~/.gnunet; touch ~/.gnunet/gnunet.conf
  146. @end example
  147. And finally you can start GNUnet with:
  148. @example
  149. $ gnunet-arm -s
  150. @end example
  151. @node Install the GNUnet-gtk user interface from Git
  152. @subsection Install the GNUnet-gtk user interface from Git
  153. Install depencies:
  154. @example
  155. $ sudo apt-get install libgtk-3-dev libunique-3.0-dev libgladeui-dev \
  156. libqrencode-dev
  157. @end example
  158. Build GNUnet (with an optional prefix) and execute:
  159. @example
  160. $ git clone https://gnunet.org/git/gnunet-gtk/
  161. $ cd gnunet-gtk/
  162. $ ./bootstrap
  163. $ ./configure [--prefix=PREFIX] --with-gnunet=DIRECTORY
  164. $ make; sudo make install
  165. @end example
  166. @node Build Instructions for Microsoft Windows Platforms
  167. @section Build Instructions for Microsoft Windows Platforms
  168. @menu
  169. * Introduction to building on MS Windows::
  170. * Requirements::
  171. * Dependencies & Initial Setup::
  172. * GNUnet Installation::
  173. * Adjusting Windows for running and testing GNUnet::
  174. * Building the GNUnet Installer::
  175. * Using GNUnet with Netbeans on Windows::
  176. @end menu
  177. @node Introduction to building on MS Windows
  178. @subsection Introduction to building on MS Windows
  179. This document is a guide to building GNUnet and its dependencies on
  180. Windows platforms. GNUnet development is mostly done under GNU/Linux and
  181. especially git checkouts may not build out of the box.
  182. We regret any inconvenience, and if you have problems, please report
  183. them.
  184. @node Requirements
  185. @subsection Requirements
  186. The Howto is based upon a @strong{Windows Server 2008 32bit}
  187. @strong{Installation}, @strong{sbuild} and thus a
  188. @uref{http://www.mingw.org/wiki/MSYS, MSYS+MinGW}
  189. (W32-GCC-Compiler-Suite + Unix-like Userland) installation. sbuild
  190. is a convenient set of scripts which creates a working msys/mingw
  191. installation and installs most dependencies required for GNUnet.
  192. As of the point of the creation of these instructions,
  193. GNUnet @strong{requires} a Windows @strong{Server} 2003 or
  194. newer for full feature support.
  195. Windows Vista and later will also work, but
  196. @strong{non-server version can not run a VPN-Exit-Node} as the NAT
  197. features have been removed as of Windows Vista.
  198. @c TODO: We should document Windows 10!
  199. @c It seems like the situation hasn't changed with W10
  200. @node Dependencies & Initial Setup
  201. @subsection Dependencies & Initial Setup
  202. @itemize @bullet
  203. @item
  204. Install a fresh version of @strong{Python 2.x}, even if you are using a
  205. x64-OS, install a 32-bit version for use with sbuild.
  206. Python 3.0 is currently incompatible.
  207. @item
  208. Install your favorite @uref{http://code.google.com/p/tortoisegit/, git} &
  209. @uref{http://tortoisesvn.net/, subversion}-clients.
  210. @item
  211. You will also need some archive-manager like
  212. @uref{http://www.7-zip.org/, 7zip}.
  213. @item
  214. Pull a copy of sbuild to a directory of your choice, which will be used
  215. in the remainder of this guide. For now, we will use
  216. @file{c:\gnunet\sbuild\}
  217. @item
  218. in @file{sbuild\src\mingw\mingw32-buildall.sh}, comment out the packages
  219. @strong{gnunet-svn} and @strong{gnunet-gtk-svn}, as we don't want sbuild
  220. to compile/install those for us.
  221. @item
  222. Follow LRN's sbuild installation instructions.-
  223. @end itemize
  224. Please note that sbuild may (or will most likely) fail during
  225. installation, thus you really HAVE to @strong{check the logfiles} created
  226. during the installation process.
  227. Certain packages may fail to build initially due to missing dependencies,
  228. thus you may have to
  229. @strong{substitute those with binary-versions initially}. Later on once
  230. dependencies are satisfied you can re-build the newer package versions.
  231. @strong{It is normal that you may have to repeat this step multiple times
  232. and there is no uniform way to fix all compile-time issues, as the
  233. build-process of many of the dependencies installed are rather unstable
  234. on win32 and certain releases may not even compile at all.}
  235. Most dependencies for GNUnet have been set up by sbuild, thus we now
  236. should add the @file{bin/} directories in your new msys and mingw
  237. installations to PATH. You will want to create a backup of your finished
  238. msys-environment by now.
  239. @node GNUnet Installation
  240. @subsection GNUnet Installation
  241. First, we need to launch our msys-shell, you can do this via
  242. @file{C:\gnunet\sbuild\msys\msys.bat}
  243. You might wish to take a look at this file and adjust some
  244. login-parameters to your msys environment.
  245. Also, sbuild added two pointpoints to your msys-environment, though those
  246. might remain invisible:
  247. @itemize @bullet
  248. @item
  249. /mingw, which will mount your mingw-directory from sbuild/mingw and the
  250. other one is
  251. @item
  252. /src which contains all the installation sources sbuild just compiled.
  253. @end itemize
  254. Check out the current GNUnet sources (git HEAD) from the
  255. GNUnet repository "gnunet.git", we will do this in your home directory:
  256. @code{git clone https://gnunet.org/git/gnunet/ ~/gnunet}
  257. Now, we will first need to bootstrap the checked out installation and then
  258. configure it accordingly.
  259. @example
  260. cd ~/gnunet
  261. ./bootstrap
  262. STRIP=true CPPFLAGS="-DUSE_IPV6=1 -DW32_VEH" CFLAGS="$CFLAGS -g -O2" \
  263. ./configure --prefix=/ --docdir=/share/doc/gnunet \
  264. --with-libiconv-prefix=/mingw --with-libintl-prefix=/mingw \
  265. --with-libcurl=/mingw --with-extractor=/mingw --with-sqlite=/mingw \
  266. --with-microhttpd=/mingw --with-plibc=/mingw --enable-benchmarks \
  267. --enable-expensivetests --enable-experimental --with-qrencode=/mingw \
  268. --enable-silent-rules --enable-experimental 2>&1 | tee -a ./configure.log
  269. @end example
  270. The parameters above will configure for a reasonable GNUnet installation
  271. to the your msys-root directory.
  272. Depending on which features your would like to build or you may need to
  273. specify additional dependencies. Sbuild installed most libs into
  274. the /mingw subdirectory, so remember to prefix library locations with
  275. this path.
  276. Like on a unixoid system, you might want to use your home directory as
  277. prefix for your own GNUnet installation for development, without tainting
  278. the buildenvironment. Just change the "prefix" parameter to point towards
  279. ~/ in this case.
  280. Now it's time to compile GNUnet as usual. Though this will take some time,
  281. so you may fetch yourself a coffee or some Mate now...
  282. @example
  283. make ; make install
  284. @end example
  285. @node Adjusting Windows for running and testing GNUnet
  286. @subsection Adjusting Windows for running and testing GNUnet
  287. Assuming the build succeeded and you
  288. @strong{added the bin directory of your GNUnet to PATH}, you can now use
  289. your gnunet-installation as usual.
  290. Remember that UAC or the windows firewall may popup initially, blocking
  291. further execution of gnunet until you acknowledge them.
  292. You will also have to take the usual steps to get peer-to-peer (p2p)
  293. software running properly (port forwarding, ...),
  294. and GNUnet will require administrative permissions as it may even
  295. install a device-driver (in case you are using gnunet-vpn and/or
  296. gnunet-exit).
  297. @node Building the GNUnet Installer
  298. @subsection Building the GNUnet Installer
  299. The GNUnet installer is made with
  300. @uref{http://nsis.sourceforge.net/, NSIS}.
  301. The installer script is located in @file{contrib\win} in the
  302. GNUnet source tree.
  303. @node Using GNUnet with Netbeans on Windows
  304. @subsection Using GNUnet with Netbeans on Windows
  305. TODO
  306. @node Build instructions for Debian 7.5
  307. @section Build instructions for Debian 7.5
  308. These are the installation instructions for Debian 7.5. They were tested
  309. using a minimal, fresh Debian 7.5 AMD64 installation without non-free
  310. software (no contrib or non-free).
  311. By "minimal", we mean that during installation, we did not select any
  312. desktop environment, servers or system utilities during the "tasksel"
  313. step. Note that the packages and the dependencies that we will install
  314. during this chapter take about 1.5 GB of disk space.
  315. Combined with GNUnet and space for objects during compilation, you should
  316. not even attempt this unless you have about 2.5 GB free after the minimal
  317. Debian installation.
  318. Using these instructions to build a VM image is likely to require a
  319. minimum of 4-5 GB for the VM (as you will likely also want a desktop
  320. manager).
  321. GNUnet's security model assumes that your @file{/home} directory is
  322. encrypted. Thus, if possible, you should encrypt your home partition
  323. (or per-user home directory).
  324. Naturally, the exact details of the starting state for your installation
  325. should not matter much. For example, if you selected any of those
  326. installation groups you might simply already have some of the necessary
  327. packages installed.
  328. We did this for testing, as this way we are less likely to forget to
  329. mention a required package.
  330. Note that we will not install a desktop environment, but of course you
  331. will need to install one to use GNUnet's graphical user interfaces.
  332. Thus, it is suggested that you simply install the desktop environment of
  333. your choice before beginning with the instructions.
  334. @menu
  335. * Update::
  336. * Stable? Hah!::
  337. * Update again::
  338. * Installing packages::
  339. * Installing dependencies from source::
  340. * Installing GNUnet from source::
  341. * But wait there is more!::
  342. @end menu
  343. @node Update
  344. @subsection Update
  345. After any installation, you should begin by running
  346. @example
  347. # apt-get update ; apt-get upgrade
  348. @end example
  349. to ensure that all of your packages are up-to-date. Note that the "#" is
  350. used to indicate that you need to type in this command as "root"
  351. (or prefix with "sudo"), whereas "$" is used to indicate typing in a
  352. command as a normal user.
  353. @node Stable? Hah!
  354. @subsection Stable? Hah!
  355. Yes, we said we start with a Debian 7.5 "stable" system. However, to
  356. reduce the amount of compilation by hand, we will begin by allowing the
  357. installation of packages from the testing and unstable distributions as
  358. well.
  359. We will stick to "stable" packages where possible, but some packages will
  360. be taken from the other distributions.
  361. Start by modifying @file{/etc/apt/sources.list} to contain the
  362. following (possibly adjusted to point to your mirror of choice):
  363. @example
  364. # These were there before:
  365. deb http://ftp.de.debian.org/debian/ wheezy main
  366. deb-src http://ftp.de.debian.org/debian/ wheezy main
  367. deb http://security.debian.org/ wheezy/updates main
  368. deb-src http://security.debian.org/ wheezy/updates main
  369. deb http://ftp.de.debian.org/debian/ wheezy-updates main
  370. deb-src http://ftp.de.debian.org/debian/ wheezy-updates main
  371. # Add these lines (feel free to adjust the mirror):
  372. deb http://ftp.de.debian.org/debian/ testing main
  373. deb http://ftp.de.debian.org/debian/ unstable main
  374. @end example
  375. The next step is to create/edit your @file{/etc/apt/preferences}
  376. file to look like this:
  377. @example
  378. Package: *
  379. Pin: release a=stable,n=wheezy
  380. Pin-Priority: 700
  381. Package: *
  382. Pin: release o=Debian,a=testing
  383. Pin-Priority: 650
  384. Package: *
  385. Pin: release o=Debian,a=unstable
  386. Pin-Priority: 600
  387. @end example
  388. You can read more about Apt Preferences here and here.
  389. Note that other pinnings are likely to also work for GNUnet, the key
  390. thing is that you need some packages from unstable (as shown below).
  391. However, as unstable is unlikely to be comprehensive (missing packages)
  392. or might be problematic (crashing packages), you probably want others
  393. from stable and/or testing.
  394. @node Update again
  395. @subsection Update again
  396. Now, run again@
  397. @example
  398. # apt-get update@
  399. # apt-get upgrade@
  400. @end example
  401. to ensure that all your new distribution indices are downloaded, and
  402. that your pinning is correct: the upgrade step should cause no changes
  403. at all.
  404. @node Installing packages
  405. @subsection Installing packages
  406. We begin by installing a few Debian packages from stable:@
  407. @example
  408. # apt-get install gcc make libzbar-dev libltdl-dev libsqlite3-dev \
  409. libunistring-dev libopus-dev libpulse-dev openssl libglpk-dev \
  410. texlive libidn11-dev libmysqlclient-dev libpq-dev libarchive-dev \
  411. libbz2-dev libexiv2-dev libflac-dev libgif-dev libglib2.0-dev \
  412. libgtk-3-dev libmagic-dev libjpeg8-dev libmpeg2-4-dev libmp4v2-dev \
  413. librpm-dev libsmf-dev libtidy-dev libtiff5-dev libvorbis-dev \
  414. libogg-dev zlib1g-dev g++ gettext libgsf-1-dev libunbound-dev \
  415. libqrencode-dev libgladeui-dev nasm texlive-latex-extra \
  416. libunique-3.0-dev gawk miniupnpc libfuse-dev libbluetooth-dev
  417. @end example
  418. After that, we install a few more packages from unstable:@
  419. @example
  420. # apt-get install -t unstable nettle-dev libgstreamer1.0-dev \
  421. gstreamer1.0-plugins-base gstreamer1.0-plugins-good \
  422. libgstreamer-plugins-base1.0-dev
  423. @end example
  424. @node Installing dependencies from source
  425. @subsection Installing dependencies from source
  426. Next, we need to install a few dependencies from source.
  427. You might want to do this as a "normal" user and only run the
  428. @code{make install} steps as root (hence the @code{sudo} in the
  429. commands below). Also, you do this from any
  430. directory. We begin by downloading all dependencies, then extracting the
  431. sources, and finally compiling and installing the libraries.
  432. For these steps, follow the instructions given in the
  433. installation from source instruction in this order:
  434. @itemize @bullet
  435. @item @ref{generic source installation - libav}
  436. @item @ref{generic source installation - libextractor}
  437. @item @ref{generic source installation - libgpg-error}
  438. @item @ref{generic source installation - libgcrypt}
  439. @item @ref{generic source installation - gnutls}
  440. @item @ref{generic source installation - libmicrohttpd}
  441. @item @ref{generic source installation - libgnurl}
  442. @end itemize
  443. @node Installing GNUnet from source
  444. @subsection Installing GNUnet from source
  445. For this, simply follow the generic installation instructions from
  446. here.
  447. @node But wait there is more!
  448. @subsection But wait there is more!
  449. So far, we installed all of the packages and dependencies required to
  450. ensure that all of GNUnet would be built.
  451. However, while for example the plugins to interact with the MySQL or
  452. Postgres databases have been created, we did not actually install or
  453. configure those databases. Thus, you will need to install
  454. and configure those databases or stick with the default Sqlite database.
  455. Sqlite is usually fine for most applications, but MySQL can offer better
  456. performance and Postgres better resillience.
  457. @node Installing GNUnet from Git on Ubuntu 14.4
  458. @section Installing GNUnet from Git on Ubuntu 14.4
  459. @strong{Install the required build tools:}
  460. @example
  461. $ sudo apt-get install git automake autopoint autoconf
  462. @end example
  463. @strong{Install the required dependencies}
  464. @example
  465. $ sudo apt-get install libltdl-dev libgpg-error-dev libidn11-dev \
  466. libunistring-dev libglpk-dev libbluetooth-dev libextractor-dev \
  467. libmicrohttpd-dev libgnutls28-dev
  468. @end example
  469. @strong{Choose one or more database backends}
  470. @itemize @bullet
  471. @item SQLite3:
  472. @example
  473. $ sudo apt-get install libsqlite3-dev
  474. @end example
  475. @item MySQL:
  476. @example
  477. $ sudo apt-get install libmysqlclient-dev
  478. @end example
  479. @item PostgreSQL:
  480. @example
  481. $ sudo apt-get install libpq-dev postgresql
  482. @end example
  483. @end itemize
  484. @strong{Install the optional dependencies for gnunet-conversation:}
  485. @example
  486. $ sudo apt-get install gstreamer1.0 libpulse-dev libopus-dev
  487. @end example
  488. @strong{Install the libgrypt 1.6.1:}
  489. @itemize @bullet
  490. @item For Ubuntu 14.04:
  491. @example
  492. $ sudo apt-get install libgcrypt20-dev
  493. @end example
  494. @item For Ubuntu older 14.04:
  495. @example
  496. $ wget ftp://ftp.gnupg.org/gcrypt/libgcrypt/libgcrypt-1.6.1.tar.bz2
  497. $ tar xf libgcrypt-1.6.1.tar.bz2
  498. $ cd libgcrypt-1.6.1
  499. $ ./configure
  500. $ sudo make install
  501. $ cd ..
  502. @end example
  503. @end itemize
  504. @strong{Install libgnurl}
  505. @strong{Install GNUnet}
  506. @example
  507. $ git clone https://gnunet.org/git/gnunet/
  508. $ cd gnunet/
  509. $ ./bootstrap
  510. @end example
  511. If you want to:
  512. @itemize @bullet
  513. @item Install to a different directory:
  514. @example
  515. --prefix=PREFIX
  516. @end example
  517. @item
  518. Have sudo permission, but do not want to compile as root:
  519. @example
  520. --with-sudo
  521. @end example
  522. @item
  523. Want debug message enabled:
  524. @example
  525. --enable-logging=verbose
  526. @end example
  527. @end itemize
  528. @example
  529. $ ./configure [ --with-sudo | --prefix=PREFIX | --enable-logging=verbose]
  530. $ make; sudo make install
  531. @end example
  532. After installing it, you need to create an empty configuration file:
  533. @example
  534. touch ~/.config/gnunet.conf
  535. @end example
  536. And finally you can start GNUnet with
  537. @example
  538. $ gnunet-arm -s
  539. @end example
  540. @node Build instructions for Debian 8
  541. @section Build instructions for Debian 8
  542. @c FIXME: I -> we
  543. These are the installation instructions for Debian 8. They were tested
  544. sing a fresh Debian 8 AMD64 installation without non-free software (no
  545. contrib or non-free). During installation, I only selected "lxde" for the
  546. desktop environment.
  547. Note that the packages and the dependencies that we will install during
  548. this chapter take about 1.5 GB of disk space. Combined with GNUnet and
  549. space for objects during compilation, you should not even attempt this
  550. unless you have about 2.5 GB free after the Debian installation.
  551. Using these instructions to build a VM image is likely to require a
  552. minimum of 4-5 GB for the VM (as you will likely also want a desktop
  553. manager).
  554. GNUnet's security model assumes that your @code{/home} directory is
  555. encrypted.
  556. Thus, if possible, you should encrypt your entire disk, or at least just
  557. your home partition (or per-user home directory).
  558. Naturally, the exact details of the starting state for your installation
  559. should not matter much.
  560. For example, if you selected any of those installation groups you might
  561. simply already have some of the necessary packages installed. Thus, it is
  562. suggested that you simply install the desktop environment of your choice
  563. before beginning with the instructions.
  564. @menu
  565. * Update Debian::
  566. * Installing Debian Packages::
  567. * Installing Dependencies from Source2::
  568. * Installing GNUnet from Source2::
  569. * But wait (again) there is more!::
  570. @end menu
  571. @node Update Debian
  572. @subsection Update Debian
  573. After any installation, you should begin by running
  574. @example
  575. # apt-get update
  576. # apt-get upgrade
  577. @end example
  578. to ensure that all of your packages are up-to-date. Note that the "#" is
  579. used to indicate that you need to type in this command as "root" (or
  580. prefix with "sudo"), whereas "$" is used to indicate typing in a command
  581. as a normal user.
  582. @node Installing Debian Packages
  583. @subsection Installing Debian Packages
  584. We begin by installing a few Debian packages from stable:
  585. @example
  586. # apt-get install gcc make libzbar-dev libltdl-dev libsqlite3-dev \
  587. libunistring-dev libopus-dev libpulse-dev openssl libglpk-dev texlive \
  588. libidn11-dev libmysqlclient-dev libpq-dev libarchive-dev libbz2-dev \
  589. libflac-dev libgif-dev libglib2.0-dev libgtk-3-dev libmpeg2-4-dev \
  590. libtidy-dev libvorbis-dev libogg-dev zlib1g-dev g++ gettext \
  591. libgsf-1-dev libunbound-dev libqrencode-dev libgladeui-dev nasm \
  592. texlive-latex-extra libunique-3.0-dev gawk miniupnpc libfuse-dev \
  593. libbluetooth-dev gstreamer1.0-plugins-base gstreamer1.0-plugins-good \
  594. libgstreamer-plugins-base1.0-dev nettle-dev libextractor-dev \
  595. libgcrypt20-dev libmicrohttpd-dev
  596. @end example
  597. @node Installing Dependencies from Source2
  598. @subsection Installing Dependencies from Source2
  599. Yes, we said we start with a Debian 8 "stable" system, but because Debian
  600. linked GnuTLS without support for DANE, we need to compile a few things,
  601. in addition to GNUnet, still by hand. Yes, you can run GNUnet using the
  602. respective Debian packages, but then you will not get DANE support.
  603. Next, we need to install a few dependencies from source. You might want
  604. to do this as a "normal" user and only run the @code{make install} steps
  605. as root (hence the @code{sudo} in the commands below). Also, you do this
  606. from any directory. We begin by downloading all dependencies, then
  607. extracting the sources, and finally compiling and installing the
  608. libraries:
  609. @example
  610. $ wget ftp://ftp.gnutls.org/gcrypt/gnutls/v3.3/gnutls-3.3.12.tar.xz
  611. $ tar xvf gnutls-3.3.12.tar.xz
  612. $ cd gnutls-3.3.12 ; ./configure ; make ; sudo make install ; cd ..
  613. @end example
  614. For the installation and compilation of libgnurl/gnURL refer to
  615. the generic installation section,
  616. @xref{generic source installation - libgnurl}.
  617. @node Installing GNUnet from Source2
  618. @subsection Installing GNUnet from Source2
  619. For this, simply follow the generic installation instructions from@
  620. here.
  621. @node But wait (again) there is more!
  622. @subsection But wait (again) there is more!
  623. So far, we installed all of the packages and dependencies required to
  624. ensure that all of GNUnet would be built. However, while for example the
  625. plugins to interact with the MySQL or Postgres databases have been
  626. created, we did not actually install or configure those databases.
  627. Thus, you will need to install and configure those databases or stick
  628. with the default Sqlite database. Sqlite is usually fine for most
  629. applications, but MySQL can offer better performance and Postgres better
  630. resillience.
  631. @node Build instructions for macOS
  632. @section Build instructions for macOS
  633. @c FIXME: I -> we
  634. These are the installation guidelines for macOS.
  635. They were tested on macOS High Sierra.
  636. @menu
  637. * Installing dependencies::
  638. * Compile from Source::
  639. @end menu
  640. @node Installing dependencies
  641. @subsection Installing dependencies
  642. First, install XCode in the newest version.
  643. See https://developer.apple.com/xcode/.
  644. Install Homebrew (https://brew.sh) and then install the dependencies listed above.
  645. If a dependency does not exists in brew, you need to compile it from source.
  646. @example
  647. # brew install <dependency>
  648. @end example
  649. @node Compile from Source
  650. @subsection Compile from Source
  651. Before you start building GNUnet, you need to setup your environment.
  652. This means that you have to make sure the proper tools are used in the build process.
  653. For example, after installing texinfo you need to make sure the new texinfo is actually used:
  654. @example
  655. $ echo 'export PATH="/usr/local/opt/texinfo/bin:$PATH"' >> ~/.bash_profile
  656. @end example
  657. Note: brew tells you the appropriate command when executing
  658. @example
  659. $ brew info texinfo
  660. @end example
  661. This may also be necessary for the gettext package.
  662. Before you start compiling, you need to make sure gcc is used and not the clang compile of your macOS system.
  663. On my system, gcc was actually ``gcc-7'' and gcc pointed to the clang compiler.
  664. @example
  665. $ export CC=gcc-7
  666. @end example
  667. You might see configure failing telling you that it ``cannot run C compiled programs.''.
  668. In this case, you might need to open/run Xcode once and you will be prompted to
  669. install additonal packages.
  670. Then, you might have to manually install the command line tools from here https://developer.apple.com/download/more/ (you need an Apple ID for this).
  671. Install those and execute
  672. @example
  673. $open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
  674. @end example
  675. Then, configure will pass again.
  676. After this the standard compile instructions apply.
  677. @c @node Build instructions for OpenBSD 6.2
  678. @c @section Build instructions for OpenBSD 6.2
  679. @node Outdated build instructions for previous revisions
  680. @section Outdated build instructions for previous revisions
  681. This chapter contains a collection of outdated, older installation guides.
  682. They are mostly intended to serve as a starting point for writing
  683. up-to-date instructions and should not be expected to work for
  684. GNUnet 0.10.x.
  685. A set of older installation instructions can also be found in the
  686. file @file{doc/outdated-and-old-installation-instructions.txt} in the
  687. source tree of GNUnet.
  688. This file covers old instructions which no longer receive security
  689. updates or any kind of support.
  690. @menu
  691. * Installing GNUnet 0.10.1 on Ubuntu 14.04::
  692. * Building GLPK for MinGW::
  693. * GUI build instructions for Ubuntu 12.04 using Subversion::
  694. @c * Installation with gnunet-update::
  695. * Instructions for Microsoft Windows Platforms (Old)::
  696. @end menu
  697. @node Installing GNUnet 0.10.1 on Ubuntu 14.04
  698. @subsection Installing GNUnet 0.10.1 on Ubuntu 14.04
  699. Install the required dependencies:
  700. @example
  701. $ sudo apt-get install libltdl-dev libgpg-error-dev libidn11-dev \
  702. libunistring-dev libglpk-dev libbluetooth-dev libextractor-dev \
  703. libmicrohttpd-dev libgnutls28-dev
  704. @end example
  705. Choose one or more database backends:
  706. @itemize @bullet
  707. @item SQLite3
  708. @example
  709. $ sudo apt-get install libsqlite3-dev@
  710. @end example
  711. @item MySQL
  712. @example
  713. $ sudo apt-get install libmysqlclient-dev@
  714. @end example
  715. @item PostgreSQL
  716. @example
  717. $ sudo apt-get install libpq-dev postgresql@
  718. @end example
  719. @end itemize
  720. Install the optional dependencies for gnunet-conversation:
  721. @example
  722. $ sudo apt-get install gstreamer1.0 libpulse-dev libopus-dev
  723. @end example
  724. Install libgcrypt 1.6:
  725. @itemize @bullet
  726. @item For Ubuntu 14.04:
  727. @example
  728. $ sudo apt-get install libgcrypt20-dev
  729. @end example
  730. @item For Ubuntu older than 14.04:
  731. @example
  732. wget ftp://ftp.gnupg.org/gcrypt/libgcrypt/libgcrypt-1.6.1.tar.bz2
  733. $ tar xf libgcrypt-1.6.1.tar.bz2
  734. $ cd libgcrypt-1.6.1
  735. $ ./configure
  736. $ sudo make install
  737. $ cd ..
  738. @end example
  739. @end itemize
  740. Install libgnurl:
  741. @pxref{generic source installation - libgnurl}.
  742. Install GNUnet:
  743. @example
  744. $ wget http://ftpmirror.gnu.org/gnunet/gnunet-0.10.1.tar.gz
  745. $ tar xf gnunet-0.10.1.tar.gz
  746. $ cd gnunet-0.10.1
  747. @end example
  748. If you want to:
  749. @itemize @bullet
  750. @item
  751. Install to a different directory:
  752. @example
  753. --prefix=PREFIX
  754. @end example
  755. @item
  756. Have sudo permission, but do not want to compile as root:
  757. @example
  758. --with-sudo
  759. @end example
  760. @item
  761. Want debug message enabled:
  762. @example
  763. --enable-logging=verbose
  764. @end example
  765. @end itemize
  766. @example
  767. $ ./configure [ --with-sudo | --prefix=PREFIX | --enable-logging=verbose]
  768. $ make; sudo make install
  769. @end example
  770. After installing it, you need to create an empty configuration file:
  771. @example
  772. touch ~/.config/gnunet.conf
  773. @end example
  774. And finally you can start GNUnet with
  775. @example
  776. $ gnunet-arm -s
  777. @end example
  778. @node Building GLPK for MinGW
  779. @subsection Building GLPK for MinGW
  780. GNUnet now requires the GNU Linear Programming Kit (GLPK).
  781. Since there's is no package you can install with @code{mingw-get} you
  782. have to compile it from source:
  783. @itemize @bullet
  784. @item Download the latest version from
  785. @uref{http://ftp.gnu.org/gnu/glpk/}
  786. @item Unzip the downloaded source tarball using your favourite
  787. unzipper application In the MSYS shell
  788. @item change to the respective directory
  789. @item Configure glpk for "i686-pc-mingw32":
  790. @example
  791. ./configure '--build=i686-pc-mingw32'
  792. @end example
  793. @item run
  794. @example
  795. make install check
  796. @end example
  797. @end itemize
  798. MinGW does not automatically detect the correct buildtype so you have to
  799. specify it manually.
  800. @node GUI build instructions for Ubuntu 12.04 using Subversion
  801. @subsection GUI build instructions for Ubuntu 12.04 using Subversion
  802. After installing GNUnet you can continue installing the GNUnet GUI tools:
  803. First, install the required dependencies:
  804. @example
  805. $ sudo apt-get install libgladeui-dev libqrencode-dev
  806. @end example
  807. Please ensure that the GNUnet shared libraries can be found by the linker.
  808. If you installed GNUnet libraries in a non standard path
  809. (say GNUNET_PREFIX=/usr/local/lib/), you can
  810. @itemize @bullet
  811. @item set the environmental variable permanently to:
  812. @example
  813. LD_LIBRARY_PATH=$GNUNET_PREFIX
  814. @end example
  815. @item or add @code{$GNUNET_PREFIX} to @file{/etc/ld.so.conf}
  816. @end itemize
  817. Now you can checkout and compile the GNUnet GUI tools:
  818. @example
  819. $ git clone https://gnunet.org/git/gnunet-gtk
  820. $ cd gnunet-gtk
  821. $ ./bootstrap
  822. $ ./configure --prefix=$GNUNET_PREFIX/.. --with-gnunet=$GNUNET_PREFIX/..
  823. $ make install
  824. @end example
  825. @node Instructions for Microsoft Windows Platforms (Old)
  826. @subsection Instructions for Microsoft Windows Platforms (Old)
  827. This document is a @b{DEPRECATED} installation guide for GNUnet on
  828. Windows.
  829. It will not work for recent GNUnet versions, but maybe it will be of
  830. some use if problems arise.
  831. The Windows build uses a UNIX emulator for Windows,
  832. @uref{http://www.mingw.org/, MinGW}, to build the executable modules.
  833. These modules run natively on Windows and do not require additional
  834. emulation software besides the usual dependencies.
  835. GNUnet development is mostly done under GNU/Linux and especially git
  836. checkouts may not build out of the box.
  837. We regret any inconvenience, and if you have problems, please report them.
  838. @menu
  839. * Hardware and OS requirements::
  840. * Software installation::
  841. * Building libextractor and GNUnet::
  842. * Installer::
  843. * Source::
  844. @end menu
  845. @node Hardware and OS requirements
  846. @subsubsection Hardware and OS requirements
  847. @itemize @bullet
  848. @item Pentium II or equivalent processor, @geq{} 350 MHz
  849. @item 128 MB RAM
  850. @item 600 MB free disk space
  851. @item Windows 2000 or Windows XP are recommended
  852. @end itemize
  853. @node Software installation
  854. @subsubsection Software installation
  855. @itemize @bullet
  856. @item
  857. @strong{Compression software}@
  858. The software packages GNUnet depends on are usually compressed using UNIX
  859. tools like @command{tar}, @command{gzip}, @command{xzip} and
  860. @command{bzip2}.
  861. If you do not already have an utility that is able to extract such
  862. archives, get @uref{http://www.7-zip.org/, 7-Zip}.
  863. @item
  864. @strong{UNIX environment}@
  865. The MinGW project provides the compiler toolchain that is used to build
  866. GNUnet.
  867. Get the following packages from the
  868. @uref{http://sourceforge.net/projects/mingw/files/, MinGW} project:
  869. @itemize @bullet
  870. @item GCC core
  871. @item GCC g++
  872. @item MSYS
  873. @item MSYS Developer Tool Kit (msysDTK)
  874. @item MSYS Developer Tool Kit - msys-autoconf (bin)
  875. @item MSYS Developer Tool Kit - msys-automake (bin)
  876. @item MinGW Runtime
  877. @item MinGW Utilities
  878. @item Windows API
  879. @item Binutils
  880. @item make
  881. @item pdcurses
  882. @item GDB (snapshot)
  883. @end itemize
  884. @itemize @bullet
  885. @item Install MSYS (to c:\mingw, for example.)@
  886. Do @strong{not} use spaces in the pathname.
  887. For example, avoid a location such as @file{c:\program files\mingw}.
  888. @item Install MinGW runtime, utilities and GCC to a subdirectory
  889. (to @file{c:\mingw\mingw}, for example)
  890. @item Install the Development Kit to the MSYS directory
  891. (@file{c:\mingw})
  892. @item Create a batch file bash.bat in your MSYS directory with
  893. the files:
  894. @example
  895. bin\sh.exe --login
  896. @end example
  897. This batch file opens a shell which is used to invoke the build
  898. processes.
  899. MinGW's standard shell (@command{msys.bat}) is not suitable
  900. because it opens a separate console window.
  901. On Vista, @command{bash.bat} needs to be run as Administrator.
  902. @item
  903. Start @command{bash.sh} and rename
  904. @file{c:\mingw\mingw\lib\libstdc++.la} to avoid problems:
  905. @example
  906. mv /usr/mingw/lib/libstdc++.la /usr/mingw/lib/libstdc++.la.broken
  907. @end example
  908. @item
  909. Unpack the Windows API to the MinGW directory (@file{c:\mingw\mingw\}) and
  910. remove the declaration of DATADIR from
  911. (@file{c:\mingw\mingw\include\objidl.h} (lines 55-58)
  912. @item
  913. Unpack autoconf, automake to the MSYS directory (@file{c:\mingw})
  914. @item
  915. Install all other packages to the MinGW directory (@file{c:\mingw\mingw\})
  916. @end itemize
  917. @item @strong{GNU Libtool}@
  918. GNU Libtool is required to use shared libraries.
  919. Get the prebuilt package from here and unpack it to the
  920. MinGW directory (@file{c:\mingw})
  921. @item @strong{Pthreads}@
  922. GNUnet uses the portable POSIX thread library for multi-threading:
  923. @itemize @bullet
  924. @item Save
  925. @uref{ftp://sources.redhat.com/pub/pthreads-win32/dll-latest/lib/x86/libpthreadGC2.a, libpthreadGC2.a}
  926. (x86) or
  927. @uref{ftp://sources.redhat.com/pub/pthreads-win32/dll-latest/lib/x64/libpthreadGC2.a, libpthreadGC2.a}
  928. (x64) as libpthread.a into the @file{lib}
  929. directory (@file{c:\mingw\mingw\lib\libpthread.a}).
  930. @item Save
  931. @uref{ftp://sources.redhat.com/pub/pthreads-win32/dll-latest/lib/x86/pthreadGC2.dll, pthreadGC2.dll}
  932. (x86) or
  933. @uref{ftp://sources.redhat.com/pub/pthreads-win32/dll-latest/lib/x64/pthreadGC2.dll, libpthreadGC2.a}
  934. (x64) into the MinGW @file{bin} directory (@file{c:\mingw\mingw\bin}).
  935. @item Download all header files from
  936. @uref{ftp://sources.redhat.com/pub/pthreads-win32/dll-latest/include/, include/}
  937. to the @file{include} directory (@file{c:\mingw\mingw\include}).
  938. @end itemize
  939. @item @strong{GNU MP}@
  940. GNUnet uses the GNU Multiple Precision library for special cryptographic
  941. operations. Get the GMP binary package from the
  942. @uref{http://sourceforge.net/projects/mingwrep/, MinGW repository} and
  943. unpack it to the MinGW directory (@file{c:\mingw\mingw})
  944. @item @strong{GNU Gettext}@
  945. GNU gettext is used to provide national language support.
  946. Get the prebuilt package from hereand unpack it to the MinGW
  947. directory (@file{c:\mingw\mingw})
  948. @item @strong{GNU iconv}@
  949. GNU Libiconv is used for character encoding conversion.
  950. Get the prebuilt package from here and unpack it to the MinGW
  951. directory (@file{c:\mingw\mingw}).
  952. @item @strong{SQLite}@
  953. GNUnet uses the SQLite database to store data.
  954. Get the prebuilt binary from here and unpack it to your MinGW directory.
  955. @item @strong{MySQL}@
  956. As an alternative to SQLite, GNUnet also supports MySQL.
  957. @itemize @bullet
  958. @item Get the binary installer from the
  959. @uref{http://dev.mysql.com/downloads/mysql/4.1.html#Windows, MySQL project}
  960. (version 4.1), install it and follow the instructions in
  961. @file{README.mysql}.
  962. @item Create a temporary build directory (@file{c:\mysql})
  963. @item Copy the directories @file{include\} and @file{lib\} from the
  964. MySQL directory to the new directory
  965. @item Get the patches from
  966. @uref{http://bugs.mysql.com/bug.php?id=8906&files=1, Bug #8906} and
  967. @uref{http://bugs.mysql.com/bug.php?id=8872&files=1, Bug #8872} (the
  968. latter is only required for MySQL
  969. @example
  970. patch -p 0
  971. @end example
  972. @item Move @file{lib\opt\libmysql.dll} to @file{lib\libmysql.dll}
  973. @item Change to @file{lib\} and create an import library:
  974. @example
  975. dlltool --input-def ../include/libmySQL.def \
  976. --dllname libmysql.dll \
  977. --output-lib libmysqlclient.a -k
  978. @end example
  979. @item Copy include\* to include\mysql\
  980. @item Pass @code{--with-mysql=/c/mysql} to
  981. @command{./configure} and copy @file{libmysql.dll}
  982. to your PATH or GNUnet's @file{bin} directory
  983. @end itemize
  984. @item @strong{GTK+}@
  985. @command{gnunet-fs-gtk} and @command{libextractor} depend on GTK.
  986. Get the the binary and developer packages of @command{atk},
  987. @command{glib}, @command{gtk}, @command{iconv},
  988. @command{gettext-runtime}, @command{pango} from
  989. @uref{ftp://ftp.gtk.org/pub/gtk/v2.6/win32, gtk.org} and unpack them
  990. to the MinGW directory (@file{c:\mingw\mingw}).
  991. @c FIXME: The URL below for pkg-config seems wrong.
  992. Get @uref{http://www.gtk.org/download/win32.php, pkg-config} and
  993. @command{libpng} and unpack them to the MinGW directory
  994. (@file{c:\mingw\mingw}).
  995. Here is an all-in-one package for the
  996. @uref{http://ftp.gnome.org/pub/gnome/binaries/win32/gtk+/2.24/gtk+-bundle_2.24.10-20120208_win32.zip, gtk+dependencies}
  997. . Do not overwrite any existing files!
  998. @item @strong{Glade}@
  999. @command{gnunet-*-gtk} and @command{gnunet-setup} were created using
  1000. this interface builder
  1001. @itemize @bullet
  1002. @item Get the Glade and libglade (-bin and -devel) packages
  1003. (without GTK!) from
  1004. @uref{http://gladewin32.sourceforge.net/, GladeWin32} and unpack them to
  1005. the MinGW directory (@file{c:\mingw\mingw}).
  1006. @item Get @command{libxml} from here and unpack it to the MinGW
  1007. directory (@file{c:\mingw\mingw}).
  1008. @end itemize
  1009. @c FIXME: URLs
  1010. @item @strong{zLib}@
  1011. @command{libextractor} requires @command{zLib} to decompress some file
  1012. formats. GNUnet uses it to (de)compress meta-data.
  1013. Get zLib from here (Signature) and unpack it to the MinGW directory
  1014. (@file{c:\mingw\mingw}).
  1015. @item @strong{Bzip2}@
  1016. @command{libextractor} also requires @command{Bzip2} to
  1017. decompress some file formats.
  1018. Get the Bzip2 (binary and developer package) from
  1019. @uref{http://gnuwin32.sourceforge.net/packages/bzip2.htm, GnuWin32} and
  1020. unpack it to the MinGW directory (@file{c:\mingw\mingw}).
  1021. @item @strong{Libgcrypt}@
  1022. @command{Libgcrypt} provides the cryptographic functions used by GNUnet.
  1023. Get Libgcrypt from @uref{ftp://ftp.gnupg.org/gcrypt/libgcrypt/, here},
  1024. compile and place it in the MinGW directory
  1025. (@file{c:\mingw\mingw}). Currently libgcrypt @geq{} 1.4.2 is required to
  1026. compile GNUnet.
  1027. @item @strong{PlibC}@
  1028. PlibC emulates Unix functions under Windows. Get PlibC from here and
  1029. unpack it to the MinGW directory (c:\mingw\mingw)
  1030. @item @strong{OGG Vorbis}@
  1031. @command{OGG Vorbis} is used to extract meta-data from @file{.ogg} files.
  1032. Get the packages
  1033. @uref{http://www.gnunet.org/libextractor/download/win/libogg-1.1.4.zip, libogg}
  1034. and
  1035. @uref{http://www.gnunet.org/libextractor/download/win/libvorbis-1.2.3.zip, libvorbis}
  1036. from the
  1037. @uref{http://ftp.gnu.org/gnu/libextractor/libextractor-w32-1.0.0.zip, libextractor win32 build}
  1038. and unpack them to the MinGW directory (c:\mingw\mingw).
  1039. @item @strong{Exiv2}@
  1040. (lib)Exiv2 is used to extract meta-data from files with Exiv2 meta-data.
  1041. Download
  1042. @uref{http://www.gnunet.org/libextractor/download/win/exiv2-0.18.2.zip, Exiv2}
  1043. and unpack it to the MSYS directory (c:\mingw).
  1044. @end itemize
  1045. @node Building libextractor and GNUnet
  1046. @subsubsection Building libextractor and GNUnet
  1047. Before you compile @command{libextractor} or @command{GNUnet},
  1048. be sure to set @code{PKG_CONFIG_PATH}:
  1049. @example
  1050. export PKG_CONFIG_PATH=/mingw/lib/pkgconfig
  1051. @end example
  1052. @noindent
  1053. @xref{GNUnet Installation Handbook}, for basic instructions on building
  1054. @command{libextractor} and @command{GNUnet}.
  1055. By default, all modules that are created in this way contain
  1056. debug information and are quite large. To compile release versions
  1057. (small and fast) set the variable @code{CFLAGS}:
  1058. @example
  1059. export CFLAGS='-O2 -march=pentium -fomit-frame-pointer'
  1060. ./configure --prefix=$HOME --with-extractor=$HOME
  1061. @end example
  1062. @node Installer
  1063. @subsubsection Installer
  1064. The GNUnet installer is made with
  1065. @uref{http://nsis.sourceforge.net/, NSIS}. The installer script is
  1066. located in @file{contrib\win} in the GNUnet source tree.
  1067. @node Source
  1068. @subsubsection Source
  1069. @c FIXME: URL... or: WHERE is HERE?
  1070. The sources of all dependencies are available here.