4.8.2013

# Installation

If you have previously used an older version of Netatalk, please read the chapter about upgrading first !!!

## How to obtain Netatalk

Please have a look at the netatalk page on sourceforge for the most recent informations on this issue.

http://sourceforge.net/projects/netatalk/

### Binary packages

Binary packages of Netatalk are included in some Linux and UNIX distributions. You might want to have a look at the usual locations, too.

Ubuntu package: https://launchpad.net/ubuntu

Debian package: http://packages.debian.org/

various RPM package: http://rpmfind.net/

Fedora/RHEL package: http://koji.fedoraproject.org/koji/search

Gentoo package: http://packages.gentoo.org/

openSUSE package: http://software.opensuse.org/

Solaris package: http://www.opencsw.org/

FreeBSD ports: http://www.freebsd.org/ports/index.html

NetBSD pkgsrc: http://pkgsrc.se/search.php

OpenBSD ports:http://openports.se/search.php

etc.

### Source packages

#### Tarballs

Prepacked tarballs in .tar.gz and tar.bz2 format are available on the netatalk page on sourceforge.

#### Git

Downloading the Git repository can be done quickly and easily:

1. Make sure you have Git installed. `which git` should produce a path to git.

       $ which git
       /usr/bin/git

2. Now get the source:

       $ git clone -b develop git://git.code.sf.net/p/netatalk/code netatalk-code
       Initialized empty Git repository in /path/to/new/source/dir/netatalk/.git/
       remote: Counting objects: 2503, done.
       ...

   This will create a local directory called `netatalk-code` containing a complete and fresh copy of the whole Netatalk source from the Git repository.

3. In order to keep your repository copy updated, occasionally run:

       $ git pull

4. Now `cd` to the netatalk directory and run `./bootstrap`. This will create the `configure` script required in the next step.

       $ ./bootstrap

For futher information refer to this wiki page.

## Compiling Netatalk

### Prerequisites

#### Required third party software

- Berkeley DB
  .

  At the time of writing you need at least version 4.6.

- Libgcrypt

  Required for OS X 10.7 and later. Libgcrypt is needed for DHX2.

  Libgcrypt can be downloaded from: http://directory.fsf.org/wiki/Libgcrypt.

#### Optional third party software

Netatalk can use the following third party software to enhance it's functionality.

- Tracker for Spotlight
  support

  Netatalk uses Tracker as the metadata backend. Recent Linux distributions will provide the libtracker-sparql library which is available since Tracker version 0.7.

- mDNSresponderPOSIX or Avahi for Bonjour (aka Zeroconf)

  Mac OS X 10.2 and later use Bonjour (aka Zeroconf) for service discovery.

  Avahi must be build with DBUS support ( `--enable-dbus`).

- TCP wrappers

  Wietse Venema's network logger, also known as TCPD or LOG_TCP.

  Security options are: access control per host, domain and/or service; detection of host name spoofing or host address spoofing; booby traps to implement an early-warning system.

- PAM

  PAM provides a flexible mechanism for authenticating users. PAM was invented by SUN
  Microsystems. Linux-PAM is a suite of shared libraries that enable the local system administrator to choose how applications authenticate users.

- iconv

  iconv provides conversion routines for many character encodings. Netatalk uses it to provide charsets it does not have built in conversions for, like ISO-8859-1. On glibc systems, Netatalk can use the glibc provided iconv implementation. Otherwise you can use the GNU libiconv implementation.

### Compiling
Netatalk

#### Configuring the build

To build the binaries, first run the program `./configure` in the source directory. This should automatically configure Netatalk for your operating system. If you have unusual needs, then you may wish to run

    $ ./configure --help

to see what special options you can enable.

The most used configure options are:

- `--with-init-style`=redhat-sysv|redhat-systemd|suse-sysv|suse-systemd|gentoo|netbsd|debian|solaris|systemd

  This option helps netatalk to determine where to install the start scripts.

- `--with-bdb`=/path/to/bdb/installation/

  In case you installed Berkeley DB in a non-standard location, you will have to give the install location to netatalk, using this switch.

Now run configure with any options you need

    $ ./configure [arguments]

Configure will end up in an overview showing the settings the Netatalk Makefiles have been created with.

#### Spotlight

Netatalk uses Gnome Tracker as the metadata backend. The minimum required version is 0.7 as that's the first version to support SPARQL.

If not already installed, install the packages tracker and tracker-devel, on Solaris install OpenCSW and then install the Tracker package from the OpenCSW unstable repository.

The tracker packages are found via pkg-config, you may have to pass the version suffix as you may have a newer version installed then the default 0.12, eg

    $ pkg-config --list-all | grep tracker
    tracker-extract-0.16  tracker-extract - Tracker : A library to develop metadata extractors for 3rd party file types.
    tracker-sparql-0.16   tracker-sparql - Tracker : A library to perform SPARQL queries and updates in the              Tracker Store
    tracker-miner-0.16    tracker-miner - A library to develop tracker data miners

So:

    $ ./configure --with-tracker-pkgconfig-version=0.16 ...

If you're using Solaris and Tracker from OpenCSW, then you need to set the PKG_CONFIG_PATH environment variable, add the --with-tracker-prefix configure option and add LDFLAGS="-R/opt/csw/lib"

    PKG_CONFIG_PATH=/opt/csw/lib/pkgconfig LDFLAGS="-R/opt/csw/lib" ./configure --with-tracker-prefix=/opt/csw --with-tracker-pkgconfig-version=0.16 ...

Check the configure output whether the Tracker libs were found:

    checking for TRACKER... yes
    checking for TRACKER_MINER... yes
    ...
    Configure summary:
    ...
      AFP:
        Spotlight: yes
    ...

#### Compile and install

Next, running

    $ make

should produce the Netatalk binaries (this step can take several minutes to complete).

When the process finished you can use

    $ make install

to install the binaries and documentation (must be done as "root" when using default locations).