Chapter 2. Installation

Table of Contents

How to obtain Netatalk
Binary packages
Source packages
Compiling Netatalk
Prerequisites
Compiling Netatalk
Compiling a new Berkeley DB for Netatalk

Warning

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 (http://rpmfind.net/, http://packages.debian.org/, http://www.blastwave.org/ http://www.freebsd.org/ports/index.html, etc.)

Source packages

Tarballs

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

Anonymous CVS

Downloading of the CVS source can be done quickly and easily.

  1. Make sure you have cvs installed. which cvs should produce a path to cvs.

    $> which cvs
    /usr/bin/cvs
  2. If you don't have one make a source directory. cd to this directory.

    $> mkdir /path/to/new/source/dir
    $> cd /path/to/new/source/dir
  3. Authenticate yourself with cvs. Just hit enter for the password for the anonymous user.

    $> cvs -d:pserver:[email protected]:/cvsroot/netatalk login
    Logging in to :pserver:[email protected]:2401/cvsroot/netatalk
    CVS password: [Enter]
    
  4. Now get the source:

    $> cvs -z3 -d:pserver:[email protected]:/cvsroot/netatalk
        -r branch-netatalk-2-0 co netatalk
    cvs server: Updating netatalk
    U netatalk/.cvsignore
    U netatalk/CONTRIBUTORS
    U netatalk/COPYING
    ...
    

    This will create a local directory called "netatalk" and downloads a complete and fresh copy of the netatalk source from the CVS repository.

  5. Now cd to the netatalk directory and run ./autogen.sh. This will create the configure script required in the next step.

    $> ./autogen.sh

Compiling Netatalk

Prerequisites

System requirements

Your system needs to meet the following requirements:

  • A C compiler, Netatalk compiles fine with gcc > 2.7.95

To be able to compile with AFP3 support, your system has to support large files (>2GB).

Note

On linux systems glibc > 2.2 is required.

Required third party software

Netatalk makes use of sleepycats' Berkeley DB. At the time of writing, the following versions are supported:

  • 4.1.25

  • 4.2.52 (recommended)

In case Berkeley DB is not installed on your system, please download it from:

http://www.sleepycat.com/download/db/index.shtml

and follow the installation instructions.

Optional third party software

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

  • OpenSSL or libgcrypt (recommended)

    Required for encrypted passwords. Without it, the password will be sent over the network in clear text. OpenSSL is needed for the older DHCAST128, libgcrypt is needed for DHX2.

  • 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.

    TCP Wrappers can be downloaded from: ftp://ftp.porcupine.org/pub/security/

  • 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.

    You can get the Linux PAM documentation and sources from http://www.kernel.org/pub/linux/libs/pam/.

  • OpenSLP

    SLP (Service Location Protocol) is an IETF standards track protocol that provides a framework to allow networking applications to discover the existence, location, and configuration of networked services in enterprise networks.

    Mac OS X uses it to locate AFP servers, even though newer version prefer Rendezvous.

    You can download OpenSLP from: http://www.openslp.org/.

  • 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.

    You can download GNU libiconv from: http://www.gnu.org/software/libiconv/.

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:

  • --enable-[redhat/suse/cobalt/netbsd/fhs]

    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] [--with-bdb=/bdb/install/path]

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

If this step fails please visit the troubleshooting guide.

Note

With recent RedHat releases, Berkeley DB links to libpthread. Netatalk does not link to libpthread, so detection of Berkeley DB fails when running configure. It's recommended to (re)compile Berkeley DB with --with-mutex="x86/gcc-assembly" (on x86 platforms) to disable the use of libpthread. Alternatively you could use

$> LIBS="-lpthread" ./configure [arguments]

to trick Netatalk into linking to libpthread. However, this is not recommended, as there have been some trouble reports indicating that linking to libpthread badly damages performance.

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).

Compiling a new Berkeley DB for Netatalk

Netatalk 2.0 requires Berkeley DB version 4.1.25 or newer. Even if you already have a supported version of Berkeley DB installed on your system, there are several reasons, why you might still want to consider building a new version for Netatalk.

Many linux distributions provide a precompiled Berkeley DB version. This is usually nice, but also has one major drawback: If you update your system to a newer release, the installed version of Berkeley DB may change. This can lead to a number of problems, starting with strange behaviour of Netatalk, unreadable CNID Databases. Most likely Netatalk(afpd) won't start anymore, so you'll have to recompile Netatalk.

For instructions compiling Berkeley DB, you should generally refer to the documentation provided by Sleepycat. The following information is meant to help you avoid problems, users experienced in the past.

In case you are building on a recent RedHat release, please use --with-mutex="x86/gcc-assembly" on x86 platforms to prevent Berkeley DB from linking against libpthread.

Using a statically linked Berkeley DB

To link Netatalk statically to Berkeley DB, you have to disable shared libraries when building Berkeley DB. If shared libraries exist, Netatalk will always link to them, even if a static version exists in the same location.

root# cd build_unix
root# ../dist/configure --prefix=/install/path --disable-shared
root# make
root# make install

You should now continue with building Netatalk.

Using a dynamically linked Berkeley DB

Building a shared version of Berkeley DB is rather straightforward. However, especially under Linux, some care needs to be taken. Underlying system libraries, i.e. libnss_db, might be using Berkeley DB as well. As these libraries have likely been build with another, i.e. older, version of Berkeley DB, linking afpd to a newer version can lead to unexpected results.

You need to configure Berkeley DB with the --with-uniquename configure switch to avoid these kind of problems. This insures your new version will not interfere with another installation of Berkeley DB on your system.

root# cd build_unix
root# ../dist/configure --prefix=/install/path --with-uniquename
root# make
root# make install

If you select an install path other than /usr/local, you will have to configure your linker to look for libraries in this directory.

On many operating systems, this is done by adding a new entry to /etc/ld.so.conf.

root# echo /install/path/lib >/etc/ld.so.conf
root# ldconfig

You should now continue with building Netatalk.