There are plenty of articles on the net… but here I’m posting my notes about compiling netatalk.
First of all, you need the minimum packages:
apt-get install build-essential dh-make autotools-dev
I needed this on my Raspberry Pi for this article, and I didn’t want to make dirty the system using the common “make / make install
” commands.
This are the simple steps I’ve followed (all as root – even if it’s not the best practise).
mkdir /tmp/netatalk cd /tmp/netatalk wget http://downloads.sourceforge.net/project/netatalk/netatalk/3.1.7/netatalk-3.1.7.tar.gz tar xzvf netatalk-3.1.7.tar.gz cd netatalk-3.1.7
Make sure the folder has this format:
<name_of_the_package>-<version>
ALL in lowercase!
dh_make -e [email protected] -f ../netatalk-3.1.7.tar.gz
It will ask for the type of the package. To make things easier, just select single entering s.
Edit the file debian/control
adding the missing bits (example below):
Source: netatalk Section: net Priority: extra Maintainer: root <[email protected]> Build-Depends: debhelper (>= 8.0.0), autotools-dev Standards-Version: 3.9.3 Homepage: http://netatalk.sourceforge.net/ #Vcs-Git: git://git.debian.org/collab-maint/netatalk.git #Vcs-Browser: http://git.debian.org/?p=collab-maint/netatalk.git;a=summary Package: netatalk Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Description: AppleTalk user binaries Open Source AFP fileserver capable of serving many Macintosh clients simultaneously as an AppleShare file server (AFP)
Then, add debian/rules
adding this line, to pass custom configure parameters:
override_dh_auto_configure: dh_auto_configure -- --with-init-style=debian-sysv --with-zeroconf
The <TAB> is what you have to press to indent the code. Without that TAB, the file won’t work properly. Before dh_auto_configure there is a TAB 🙂
MAKE SURE that the syntax gets highlighted like this:
I’ve read that it should be good to run
dpkg-depcheck -d ./configure
before the next step.
Honestly, I didn’t do that because it requires an extra package calleddevscripts
that installs loads of dependencies, which I didn’t want to add on my Raspberry pi.
In a different situation, I would probably have done that.
Then run:
dpkg-buildpackage -us -uc
…and wait.
If you get something like this…
dpkg-deb: building package `netatalk' in `../netatalk_3.1.7-1_armhf.deb'. dpkg-genchanges >../netatalk_3.1.7-1_armhf.changes dpkg-genchanges: including full source code in upload dpkg-source --after-build netatalk-3.1.7 dpkg-buildpackage: full upload (original source is included)
…you’ve been lucky! And you can cd ..
and you should have your package .deb
created and ready to be installed with a simple dpkg -i .deb
Good luck! 🙂
NOTE: I’ve noticed that the compile might fail due to ‘acl‘ package missing. I’m not a master in compiling, so what I’ve done is the following
apt-get install acl
Than I’ve modified include/atalk/acl.h
start at line 63, adding #define O_IGNORE 0
to make it look like following:
#define O_NETATALK_ACL 0 #define O_IGNORE 0 #define chmod_acl chmod
This trick was from here
Than, you need to commit the change with the following command: dpkg-source --commit
and save adding a little description like “patch to compile with no ACLs” or something like that.
This made me possible to finish the building of the package and have the deb.
UPDATE: Debian jessy systemd
# Packages to install
apt-get install build-essential libevent-dev libssl-dev libgcrypt11-dev libkrb5-dev libpam0g-dev libwrap0-dev libdb-dev libtdb-dev libmysqlclient-dev avahi-daemon libavahi-client-dev libacl1-dev libldap2-dev libcrack2-dev systemtap-sdt-dev libdbus-1-dev libdbus-glib-1-dev libglib2.0-dev tracker libtracker-sparql-1.0-dev libtracker-miner-1.0-dev autotools-dev debhelper
# How to edit debian/rules
override_dh_auto_configure: dh_auto_configure -- --with-init-style=debian-systemd --without-libevent --without-tdb --with-cracklib --enable-krbV-uam --with-pam-confdir=/etc/pam.d --with-dbus-sysconf-dir=/etc/dbus-1/system.d --with-tracker-pkgconfig-version=1.0
And here the already compiled file netatalk_3.1.8