BrainOut!
The mumblings of a Christian autistic husband, dad, IT guy and amateur radio operator - Will Brokenbourgh / AF7EC
FreeBSD Follies
So, it starts...
Disclaimer: I am a FreeBSD fan. It's my desire to run my favorite desktop
environment on top of FreeBSD. FreeBSD appears to be a bit more secure than
Linux and I like FreeBSD's simplicity when it comes to configuration and the
blissful lack of the Linux disease named 'systemd'.
Unfortunately I've found through numerous attempts that FreeBSD ports/packages are very buggy. Currently, using FreeBSD as a desktop system for running my business is pretty difficult when programs such as Firefox, Thunderbird, and PCManFM disappear, crash and dump core frequently. These kinds of issues just do not happen when I use these programs on Linux. FreeBSD has proven itself to me as a great server OS in recent times, but right now I'm focused on desktop needs.
Because people on Twitter and elsewhere have complained that I should have
built my FreeBSD ports from scratch with WITH_DEBUG
enabled,
I recently decided I would indulge them and also take notes during the process.
Following are those notes and comments about what happened.
April 29
6:40 pm - Start install of FreeBSD 10.3 amd64
7:00 pm - Reboot after install yields 'Boot loader too large' error. Will install again
7:04 pm - Start install again
7:12 pm - Boot into new system, update system using
freebsd-update fetch install
7:15 pm - freebsd-update fetch
error -
'The update metadata is correctly signed, but failed an integrity check.
Cowardly refusing to proceed further'. Will try a reboot
7:18 pm - Reboot
7:19 pm - freebsd-update fetch
causes same error
7:25 pm - Is a confirmed issue, and others are experiencing it too. The bug is not fixed as of this moment. Abandoning project until fixed
April 30
11:26 am - freebsd-update fetch
issue
apparently resolved. Trying updating again
11:27 am - freebsd-update fetch
succeeded
11:28 am - Reboot after update
11:31 am - Performing portsnap fetch extract
11:36 am - Editing /usr/ports/mk/bsd.port.mk
to add WITH_DEBUG
and DEBUG_FLAGS
11:40 am - Building openbox - Failed for some reason (turns out build system didn't like my debug flags '-O0 -g')
11:42 am - Building openbox again after removing
DEBUG_FLAGS
in bsd.port.mk. Build succeeded
1:22 pm - Build xorg
1:49 pm - startx
works. twm
working fine. Now will build other needed packages
4:00 pm - firefox build failed. Will try building qupzilla so I can report the firefox build error
4:57 pm - qupzilla-qt5 builds without error, but crashes when setting preferences: "ASSERTION FAILED: m_cacheDirectory.isNull()"
5:00 pm - Giving up. It's pretty obvious that FreeBSD ports are too unstable for 'real' desktop work
Please keep in mind that I accepted the default build options for all of the packages except that I did choose 'DEBUG', when available. I did not choose any weird / exotic / unreliable build options at all.
So, what do you do when 'enough is enough'? To be honest, I'm 'cowardly refusing to proceed further', as the error message said. Why would I spend an inordinate amount of time trying to debug all of this when I can install Debian or PCLinuxOS and everything 'just work'? If I wanted to stay in FreeBSD, I could use pkg to install packages instead of building them, but then all of the Twitter-using FreeBSD-defenders would wag their collective fingers at me and tell me to 'build with debug flags' when my frequently-used apps crash on me. Argh!
I'm a decent programmer, but I really don't have the time or brain-power to help the FreeBSD package maintainers fix buggy packages. I run a busy remote IT business while also raising my young son (who has special needs) during daylight hours, then I'm usually spent by the time my beautiful wife gets home from her job. I might sound lazy or lacking commitment to open-source software, but hey, I'm in my late forties, am on the autism spectrum and tire easily -- gimme a break, okay???
That FreeBSD makes these packages/ports available should mean that they are of decent quality and not exploding time-bombs. Not all of the packages/ports are bad, but the ones that are popular, such as firefox, thunderbird, pcmanfm sure have issues. It's like buying a new Maserati (FreeBSD core) then watching as the mirrors, gas tank and bumpers (ports/packages) come loose and fall off the car while driving it down the street. Frustrating and maddening!
If I do happen to try this experiment again, I will append it to this posting. I'm frequently excited to see a new release of FreeBSD, only to be discouraged when I see my favorite packages/ports still have major issues. Maybe one day -- one fine day...
God bless you and thank you for visiting my blog!
Comments
Specifically, I haven't had any issues with PCManFM (haven't dumped cores once ever on BSD) and while some other applications have had mild issues, it's never been anything too bad and not frequent enough to be of real concern. I should note I've been using PCManFM for probably years on a variety of systems, and it has been remarkably stable through all of them.
Using FreeBSD as both a server and desktop solution is a choice, for a better system that you can feel like you have actual complete control over. Linux as a system has become so complex you practically need a PhD to even begin to use a new distribution because everything has some proprietary gimmick to it that makes it "better" than all the other ones (see: systemd), but with FreeBSD and other original Unix derivatives, there is a sense of equality, of normalcy and balance. Everything makes sense [except for the ever-present X]. Even if it sometimes crashes into a pole, it's a balanced crash!
I'll admit, I come from a Windows-turned-Linux background, and I've only been using FreeBSD for about 5 weeks now--but I'm sold and I can't go back. It just feels right. While I can appreciate not being able to use it in a work environment, once everything is set up properly it's like logging in to an old friend that you share all your dirty secrets with. Only a few weeks in and I feel confident enough to tackle any problem that comes my way, even if it requires rebuilding the kernel and pouring over debug output.
I've made daemons in a few lines of sh, I've ran both Linux code natively though the ABI and Windows applications through Wine with resounding success (even some modern games), for things that need more care than Wine I've managed to launch in Bhyve. Overall each experience--while a challenge--has taught me more about the system, and unlike in other GNU/Linux setups where there's so much going on at once and everything has different syntax, FreeBSD has given me an even playing field and a host of guaranteed cross-compatible tools as it's base for me to build off of. Ports are fantastic as well, probably only rivaled by Gentoo Portage--which, if I recall, was inspired by BSD!
This isn't so much a disagreement or argument as it is an example of my own BSD journey. As someone that would consider themselves having a stable BSD desktop environment in just a few short weeks of starting from nothing, I just have to say it's worth it in the end
FYI, the applications that make up my "desktop environment" are i3, chromium, pcmanfm, urxvt, feh, ffplay, and zsh.
Keep up the good work, and God bless
P.S.: While I do mainly use pkg to install, when I do want/need to build something from ports, I usually just install the build dependencies (make build-depends-list in a port, generated based on config flags) from pkg before actually building, unless I'm building with debug flags and I think it would be a good idea. Why waste the time compiling gmake? This could be something you could try to save time when trying to compile a lot of ports. I'm sure many BSDivas would continue to waggle their fingers at it, but it did save me a lot of time, especially when recompiling huge ports like chromium.