• Updated 2023-07-12: Hello, Guest! Welcome back, and be sure to check out this follow-up post about our outage a week or so ago.

Netatalk 2.3.0 available

slipperygrey

Well-known member
A new "feature" release of netatalk 2 is available: 2.3.0

And by "feature" I mean that I cut out a handful of long-obsoleted and bitrotted code. These are effectively breaking changes, which I wanted to signify with a full +0.1 version number bump.

For those of you who have been following along with my netatalk shenanigans, this release marks the point where netatalk 2 proper reaches parity with, and surpasses my now-abandoned "netatalk 2.x" fork.

Thanks to @NJRoadfan 's keen eyes, this version brings back AppleTalk standards compliant behavior of atalkd. If you had trouble previously with seeing other subnets from your netatalk clients, this version may fix that problem for you. See https://github.com/Netatalk/netatalk/issues/585 for more info.

Additionally, this version contains dozens of fixes that improves reliability, security, portability, and documentation.

The release notes can be found at: https://github.com/Netatalk/netatalk/releases/tag/netatalk-2-3-0

Hope you enjoy this release as much as I enjoyed making it. If you spot any suspected bugs, please let me know here or in the github project.
 

CTB

Well-known member
This is awesome. The last time I looked at this was 2.2.8 and had the Asante bridge issues. It has been a while so are the any installation instructions online? I believe I used the pisscsi? Instructions last time.
 

slipperygrey

Well-known member
This is awesome. The last time I looked at this was 2.2.8 and had the Asante bridge issues. It has been a while so are the any installation instructions online? I believe I used the pisscsi? Instructions last time.
Yes, plenty. :)

There is the (quite dense) html manual,(1) plus a whole library of installation guides for various OSes on the wiki(2).

(1) https://netatalk.sourceforge.io/2.3/htmldocs/index.html
(2) https://github.com/Netatalk/netatalk/wiki

What OS are you looking to install it on?
 

slipperygrey

Well-known member
I've been meaning to ask, does this completely subsume all the fixes that used to be at https://github.com/christopherkobayashi/netatalk-classic?

Really excited to see this release branch keep moving forward!
I ported over all the fixes that I thought made sense for my own fork up through the end of February 2023. After that, Chris embarked on writing a sqlite CNID backend, which I believe was half finished by the time he abandoned and deleted his fork later in 2023.

For context: Chris's fork dropped the DSI layer (AFP over TCP) entirely, so a chunk of his improvements couldn't be ported over easily. Notably, he rewrote the logger routines, which I decided was too big an effort to port while adding back DSI logging support.

Regardless, my fork, and later netatalk v2 proper, benefited hugely from Chris's effort in modernizing and refactoring the codebase! The code is safer, cleaner, and more maintainable now.
 

eharmon

Well-known member
I ported over all the fixes that I thought made sense for my own fork up through the end of February 2023. After that, Chris embarked on writing a sqlite CNID backend, which I believe was half finished by the time he abandoned and deleted his fork later in 2023.

For context: Chris's fork dropped the DSI layer (AFP over TCP) entirely, so a chunk of his improvements couldn't be ported over easily. Notably, he rewrote the logger routines, which I decided was too big an effort to port while adding back DSI logging support.

Regardless, my fork, and later netatalk v2 proper, benefited hugely from Chris's effort in modernizing and refactoring the codebase! The code is safer, cleaner, and more maintainable now.
❤️
 

absurd_engineering

Well-known member
Excellent! I've been able to build 2.3.0 on Ventura linking to berkeley-db@4 from Homebrew, but so far haven't gotten it running ("socket: Address family not supported by protocol family"). Exciting if it'll work.
 

slipperygrey

Well-known member
Excellent! I've been able to build 2.3.0 on Ventura linking to berkeley-db@4 from Homebrew, but so far haven't gotten it running ("socket: Address family not supported by protocol family"). Exciting if it'll work.
That error suggests that you're trying to initialize atalkd but it can't find an AppleTalk network stack... which is to be expected on modern macOS. Apple did away with the netat Darwin kernel module in 2009.

Here is the latest attempt to write a modern and portable user-land AppleTalk network stack: https://68kmla.org/bb/index.php?threads/use-cases-for-a-new-appletalk-stack.44312/

In the meantime, on macOS you have to be content to run netatalk in AFP-over-TCP mode.
 

absurd_engineering

Well-known member
That error suggests that you're trying to initialize atalkd but it can't find an AppleTalk network stack... which is to be expected on modern macOS. Apple did away with the netat Darwin kernel module in 2009.

Here is the latest attempt to write a modern and portable user-land AppleTalk network stack: https://68kmla.org/bb/index.php?threads/use-cases-for-a-new-appletalk-stack.44312/

In the meantime, on macOS you have to be content to run netatalk in AFP-over-TCP mode.
Ah. I was under the impression that Netatalk supplied its own AppleTalk stack, and that's what was removed in 3.x.

I'll get involved in testing the userland stack you mention.
 

slipperygrey

Well-known member
Ah. I was under the impression that Netatalk supplied its own AppleTalk stack, and that's what was removed in 3.x.

I'll get involved in testing the userland stack you mention.
Netatalk v2 only ships code for a Solaris SPARC AppleTalk DDP kernel module. It expects other OSes to supply their own, due to decisions made some 25 years ago. :)

Except DDP, Netatalk v2 (atalkd) does implement all the other AppleTalk protocols, as illustrated below:

AFP AFP | | ASP PAP DSI \ / | ATP RTMP NBP ZIP AEP | | | | | | | -+---------------------------------------------------+- (kernel boundary) | Socket | +-----------------------+------------+--------------+ | | TCP | UDP | | DDP +------------+--------------+ | | IP | +-----------------------+---------------------------+ | Network-Interface | +---------------------------------------------------+

Source: https://github.com/Netatalk/netatalk/blob/branch-netatalk-2-3/doc/DEVELOPER
 

absurd_engineering

Well-known member
Netatalk v2 only ships code for a Solaris SPARC AppleTalk DDP kernel module. It expects other OSes to supply their own, due to decisions made some 25 years ago. :)

Apart from DDP, Netatalk v2 (atalkd) does implement all the other AppleTalk protocols, as illustrated below:

AFP AFP | | ASP PAP DSI \ / | ATP RTMP NBP ZIP AEP | | | | | | | -+---------------------------------------------------+- (kernel boundary) | Socket | +-----------------------+------------+--------------+ | | TCP | UDP | | DDP +------------+--------------+ | | IP | +-----------------------+---------------------------+ | Network-Interface | +---------------------------------------------------+

Source: https://github.com/Netatalk/netatalk/blob/branch-netatalk-2-3/doc/DEVELOPER
Understood.
 

tt

Well-known member
I just installed the previous version, but I haven't yet configured or run the install. How should an update be done? Can I install over the existing version or does it need to be uninstalled?

What configure flags should be used for someone interested in networking 68k machines? I followed an example of a previous thread, but the script said some of the flags were not recognized.
 

slipperygrey

Well-known member
I just installed the previous version, but I haven't yet configured or run the install. How should an update be done? Can I install over the existing version or does it need to be uninstalled?

What configure flags should be used for someone interested in networking 68k machines? I followed an example of a previous thread, but the script said some of the flags were not recognized.
It depends a little bit on what exact previous version you were using. If it was one of the earlier v2 releases it should be safe to install 2.3.0 on top of it. The one thing to be mindful of, is to know what sysconfdir prefix you used when installing the previous version, e.g. /etc, /usr/local/etc, or something else? If you get the prefix mismatched you will have to redo or manually recover your old configurations.

When it comes to the specific configure flags: it depends a bit on your operating system. The errors regarding unknown flags you saw is because I removed a lot of them to simplify the process. With a few exceptions, you usually only need to pass the init script type (depending on your OS), potentially the sysconfdir prefix, and in rare cases a handful of other directories if your OS has libraries in non-standard locations.

All that to say: Please tell me which OS you're running and I can give you concrete advice.
 

ironborn65

Well-known member
Thanks for this new release and for asking advices:
Any plan to support Docker or/and Homebrew cask?
 

slipperygrey

Well-known member
Thanks for this new release and for asking advices:
Any plan to support Docker or/and Homebrew cask?
MacPorts has a netatalk2 port. :)


Not sure what happened to the Homebrew cask. There used to be one for v3 at least but can’t find it now.

I’m hoping a kind soul will step up and on the Homebrew cask maintenance. Being the Debian deb package manager is about my limit. The community will provide I’m sure!

A docker container is something that has been experimented with but nothing working yet! I plan to tinker with it when I have time to spare.
 

tt

Well-known member
All that to say: Please tell me which OS you're running and I can give you concrete advice.
The OS is Dietpi based on Debian Bullseye. I checked and found I actually installed the main branch, so I probably should remove netatalk.
 

hauke

Active member
A new "feature" release of netatalk 2 is available: 2.3.0
As always, thanks for your work!

I nstalled the updated 'net/netatalk22' pkgsrc package on my home server a few days ago, and (after minor debate on the package name - back when the package was generated, nobody reasonably expected any further release on the branch...) just committed it to the repository.
 
Top