Netatalk 4.1.0 has been released, and is now for the first time also available as a Homebrew formula.

Get it with `brew install netatalk` today!

This version of the open source AFP server is the best yet for running on macOS. We now store resource forks natively as Extended Attributes, and is able to sync with FinderInfo metadata.

For instance, you can extract a StuffIt archive containing Classic Mac OS files, using the Unarchiver, onto a shared AFP volume, and have the resource forks carry over seamlessly.

Enjoy Mac file sharing!

#netatalk #VintageMac #macos

@dmark I just installed version 4.0.8 last night. Works fantastic, though I have to manually restart the netatalk service because it seems atalkd is starting after netatalk and thus netatalk won’t run correctly until it’s restarted.

I’m sure it’s something simple to fix but haven’t sorted it out yet!

@gaj Well spotted; if you want to activate the AppleTalk transport layer for AFP, you do indeed have to start atalkd before netatalk.

Did you use Homebrew or some other package manager? Is this on Linux, or something else? What init system are you using?

I have tried to put in soft dependencies between netatalk and atalkd wherever possible, in for instance the systemd units or OpenRC init scripts. When these init systems see an atalkd service defined, they *should* be attempting to start it before netatalk.

But init systems work in mysterious ways sometimes...

@dmark I'm running Arch and built it from the AUR.

The netatalk.service in /etc/systemd/... looks correct:

...
[Unit]
Description=Netatalk AFP fileserver for Macintosh clients
Documentation=man:afp.conf(5) man:netatalk(8) man:afpd(8) man:cnid_metad(8) man:cnid_dbd(8)
Documentation=https://netatalk.io/
After=network.target avahi-daemon.service atalkd.service

Specifically the "After=" part, so not sure why it's not working. I'm not a Linux expert, so digging into it a bit now

Netatalk - Networking Apple Macintosh through Open Source

Netatalk - Networking Apple Macintosh through Open Source

@gaj Right, now I remember. :)

What the "After" property does, is to control the startup sequence on boot or when multiple services are started at once with systemctl. So if you start netatalk and atalkd at once, the former will get launced after the latter has fully started up.

We also have the property "Requires" that I chose *not* to put on netatalk. Running netatalk without atalkd is a perfectly valid usecase; arguably the more common one even. Those users probably don't want to wait a full minute for atalkd to start up every time when they don't care about AppleTalk (including myself when developing and testing. ;) )