I’m evaluating if FreeBSD can take the place of Debian on my production servers. Over the past month I’ve read several books, scoured forums and the FreeBSD handbook, and taken ample notes along the way.
But no amount of reading can prepare you for what happens when you get your hands dirty. Here are some of the head-scratchers I’ve encountered along my journey.
Apache and Nginx are set up much differently — the
sites-enableddirectories are missing!
Turns out the addition of those directories is something added by Debian, that’s not really how the upstream versions of those web browsers are shipped.
At first I was disappointed, then I realized the Debian way is much more complicated than I need. Why use commands like
a2ensiteand manage all those different directories and all those symlinks when you can simply make some
.conffiles and manage them yourself with simple commands you already know?
Accessing MariaDB locally isn’t always possible via
localhost. Sometimes you have to use
localhost:/var/run/mysql/mysql.sockso PHP can connect to the database.
The FreeBSD handbook provides great advice to use
ssmtpfor routing simple outgoing console/cron emails to yourself instead of setting up big, bulky, cranky
Bash script opening shebangs need to be changed to
#!/usr/bin/env bashto make them platform agnostic (they won’t run on FreeBSD if they are
There doesn’t appear to be a binary package for Ruby Gems, so to get Jekyll to work I had to install the ports system and build
devel/ruby-gems. Not a big deal, but I was able to use binary packages for everything else.
Packages with different names:
vimis the GUI version and wants to install 343 MB of stuff, including Wayland!)
ack-grep, this one took a while to find)
Thoughts: Two weeks in
The switch to FreeBSD has been a learning experience. It wasn’t easy, but it also wasn’t impossible. Looking back at my first two weeks it feels like I’m able to do all the things I want, I just had to contend with knowledge gaps and what feel like dead ends in documentation. Things like what I’ve listed above take time to figure out. Patience and persistence are definitely required.
It’s tough to un-learn concepts I know from Debian, like that Apache/Nginx come with
sites-enabled directories. Google searches for
freebsd apache sites-available don’t return anything helpful, because the concept of those directories doesn’t exist in FreeBSD. None of this made sense until I stumbled across a forum post where someone said, “Apache doesn’t have
sites-available, that’s a Debian-specific addition.” That was eye-opening.
"You must unlearn what you have learned."
This un-learning process is the toughest part of this journey. I’m so used to how to do things in Debian and Linux that it’s tough to put all of that knowledge aside and see around it. My past knowledge can actually derail my efforts to find solutions in the FreeBSD world. I’m too busy looking for "the thing I know in Linux," which doesn’t always exist in FreeBSD.