Hari's Corner

Humour, comics, tech, law, software, reviews, essays, articles and HOWTOs intermingled with random philosophy now and then

Why I've gone back to Debian

Filed under: Software and Technology by Hari
Posted on Thu, May 13, 2010 at 10:53 IST (last updated: Thu, May 13, 2010 @ 11:00 IST)

In this series < Previous
I've decided to finally call it a day as far as FreeBSD is concerned. While I really like the base system and the FreeBSD approach to system configuration, the biggest drawback in my book is the ports system.

For those unfamiliar with ports, reading the Wikipedia page would be handy from this point onward.

Now the majority of people in the BSD world swear by ports. Indeed reading on online forums, I got the impression that the ports system is why people choose FreeBSD over Linux. In many of the cases, I get the distinct impression that these people haven't really considered the real benefits of a thoroughly tested and workable binary package management system like Debian. I don't want to get into the debate over which is better: compiling from source or using binary pre-compiled software. All I can say is that I hate to waste my time waiting endlessly for software to compile. My experiences with Gentoo in the past have taught me that it's near impossible to keep a source-only distribution updated frequently without sacrificing a huge chunk of your productive time.

You see, in FreeBSD there are two methods of installing software: ports and pre-compiled packages. The problem with people who don't want to compile everything starts with the fact that the majority of FreeBSD software management tools are focussed and optimized towards ports. There are packages available, but they are never updated after they make it into a -RELEASE build. The -STABLE branch usually has updated binary packages but they are still behind in version compared to the ports. Another issue is that many (useful) ports don't make it into the package tree. All these aspects makes it an exercise in frustration for people who don't want to spend half their computer uptime compiling software from source.

The real issue with ports, in my view

The real issue with ports is that if you have a system that you want to keep updated with the latest versions of software, you have no choice but to use the ports tree and compile everything exclusively from source.

It's rather difficult and even unrecommended by FreeBSD users themselves to mix binary packages and ports in the same installation for the simple reason that package and ports dependencies vary and that trying to keep packages/ports mixed system up-to-date with only binary packages from the -STABLE branch is a clunky process prone to dependency errors which might arise from a package depending on a newer version the software only available as a port. This already happened to me a few times when I realized that if you want to use FreeBSD on a full-featured desktop system you are forced to use ports almost exclusively.

If there were better binary package management tools in FreeBSD and more up-to-date and comprehensive list of packages in -RELEASE or -STABLE, I would have no problems.

Finally for those who prefer NOT to be on the bleeding edge, ports is a constantly moving target. It's a "rolling" system that is kept updated by the FreeBSD community and is not dependent on any particular release of FreeBSD. While always using the latest and greatest has its advantages, it is to be realized that they are not as thoroughly tested as binary packages and can lead to problems when used with older releases of the FreeBSD base system.

The purpose of this article

I'm not out to bash FreeBSD or its philosophies here. I just enumerated reasons why I personally don't prefer its software handling mechanisms. I also would like to let other Linux users know the potential pitfalls you can face when you switch from one OS to another.

If you are a FreeBSD user and have any constructive suggestions do post a comment!

In this series

12 comment(s)

  1. Hi,

    I just wanted to ask you if you know about archlinux.org?
    It's an linux distribution geared to powerusers with a freedsb-like configuration and most packages are available as binary packages with easy ways to compile them yourself if you wish to do so.

    http://wiki.archlinux.org/index.php/Arch_Compared_to_Other_Distributions#The_.2ABSDs

    hope you find this interesting,
    greetings
    kiepmad

    Comment by kiepmad (visitor) on Sun, May 16, 2010 @ 14:39 IST #
  2. Kiepmad, I've used Arch Linux before. I was a bit wary of its bleeding edge philosophy, and I felt it's package manager was not very polished.

    However, that was a few years back when the project was still quite new. I'll have to take a look at it again.

    I think that no many Linux distributions have this concept of "testing" like Debian does, where the software packages are neither too bleeding edge nor outdated.

    Comment by Hari (blog owner) on Sun, May 16, 2010 @ 14:54 IST #
  3. I definitely agree with you about the FreeBSD ports system. I have been running Arch Linux too and I overall found it to be unmature (from the "Arch Linux Installation Framework" to the package manager. However I like its philosophy (KISS) very much. I also like the philosophy of FreeBSD very much, the stability of the base system and the UNIX way of doing things. And honestly I wouldn't feel bad about recompiling kernel, world and ports every second month or something. The problem is: You never know if it's going to break. This is why FreeBSD needs a well tested branch of the ports tree, which actually doesn't need to be updated very often. I just want to be able to trust it.

    Comment by Fleet (visitor) on Fri, Jul 2, 2010 @ 21:07 IST #
  4. Thanks for your comments, Fleet. I think you've done a good summary of the issues I had with FreeBSD. :)

    Comment by Hari (blog owner) on Sat, Jul 3, 2010 @ 09:23 IST #
  5. I have FreeBSD on my laptop. I don't like ports either, mainly because, as a programmer, it seems like a nuisance to create new ports. I've found no easy way to automate the process. You may want to look into PC-BSD and PBIs as an alternative. I really haven't had any problem with mixing ports with packages in FreeBSD. However, I use programs that don't require a lot of dependencies and I know just what libraries I want running together. I haven't found any better solutions in Linux for package management and installation. While Debian has many of the packages I want, I may not like the dependencies a package needs. Why do I need so many versions of WxWidgets library for the 4 applications I like just because some chose an older version or a non-Unicode version or a Unicode version to use when they compiled their applications? I find this issue with many versions of Linux. I'd like to find a distribution with lots of packages to choose from but consistency in dependencies and libraries used to conserve resources. I thought of trying Arch, but read it wasn't right for users without good Internet support. I find Slackware's package management very programmer friendly, but you keep track of your own dependencies which some people may not like. If anyone knows of any better package management solutions (and their distributions), would like to hear about it. I'd prefer not to build everything from source, but either the packages aren't available (even in Debian) or they're pulling in a bunch of extraneous dependencies I really don't want on my system.

    Comment by Laura (visitor) on Mon, Jul 26, 2010 @ 19:06 IST #
  6. Debian/Debian-based is still the best for package management. Just allow apt-get to manage everything and you shouldn't have a problem with version conflicts with libraries.

    Also you can remove "Recommends" so that dependencies are limited only to essential libraries. APT::Install-Recommends setting also pulls in all the packages recommended by the distributor of the original package.

    Comment by Hari (blog owner) on Mon, Jul 26, 2010 @ 19:11 IST #
  7. Just wondering if you got around to giving PC-BSD a try. Hopefully PC-BSD provides a superior package management mechanism inline with what you require. I am new to FreeBSD and use it as my desktop os at home and now have a test server at work, so far have had a lucky run without any ports issues. My plan to safe guard against ports failures is to use the jail feature. I am in the process of setting up a jail where I can build and test packages before installing them proper. In a jail this can be done at leisure over time(eg 10min each day) hopefully without ever taking a major hit to my daily productivity. It does not matter how long the builds take because I still have a functional desktop. The compiles can run nice if required, to minimise impact to my desktop during the day. To build I have been using portmaster -G because the default configuration has been suitable and saves a lot of time configuring each port. To update my sources and ports I have been using ctm because it is quick and I can keep all the deltas locally and can construct an old build environment if required. I can keep the known working packages for my daily system so in the event of an upgrade to my main system after slack testing on my part I can always roll back and quickly get my desktop operation. If I find a problem with new software I can wait for a patch because only my jail is impacted or troubleshoot when convenient. Hopefully this will give me the flexibility to install software with less dependency issues and with some additional reliability. I don&#039;t envisage myself sitting around waiting for software to compile or taking a hit to productivity because of broken packages. If this all works to plan I will cut over my work desktop. No matter what os you use upgrades are always fraught with danger. Even when new software does install and operate as intended, the new functionality or functionality change in new versions of software may be broken for your circumstance. I am hoping I can gain more control over my destiny and gain more efficiency overall on FreeBSD. Will let you know how I get on!

    Comment by Daren (visitor) on Fri, Jan 28, 2011 @ 11:09 IST #
  8. Daren, thanks for the comment and sharing your experiences. I've not yet tried PC BSD so far. Right now, I'm on Ubuntu. If and when I get a new laptop, I might put PC BSD on it.

    But you know, really, with the hardware support levels in *BSD, I'm not sure it can be used with a laptop properly. I do wish support for hardware was on par with Linux as of today.

    Comment by Hari (blog owner) on Fri, Jan 28, 2011 @ 11:14 IST #
  9. I am not running a laptop. It would be difficult to do as I am on a laptop without suspend so as not to disturb the build process, and you would need your machine powered on as much as possible to allow time for the builds to complete. Probably best to build the larger ports on a server for a laptop, extra effort :(. Yes the driver support for Linux is great. BSD is where Linux was 10 years ago. The only way BSD driver support will increase is through popularity and hopefully PC-BSD can help here ie package issues.

    Comment by Daren (visitor) on Fri, Jan 28, 2011 @ 11:38 IST #
  10. You're right about the system having to be kept on all the time with a build-based system. I cannot do that with a laptop.

    As for PC-BSD, it looks interesting enough for me to want to take a look at it. I once used DesktopBSD but I think the project is more or less dead now.

    Comment by Hari (blog owner) on Fri, Jan 28, 2011 @ 19:14 IST #
  11. Finally finished a testing a path through FreeBSD ports to ensure reliable packages.
    1. Use tinderbox to build ports. This tool is easy to configure and provides a standard for building ports. Best installed on a server, I have installed it on a work server to grind out all the packages :-).
    2. On the desktop machine test new packages in a jail so as not to disrupt the main environment. To do this you need Xnest and tmux. With Xnest no DRI, :-( with DRI in a jail you could run your main and test environments in jails to insulate from host upgrades ie run 9.0 on the host and 8.1 in a jail. Will eventually take another look at this.
    3. Two guys at work have installed PCBSD on their home machines with success. Still early days. A third guy had trouble with mouse support. I have run one box up quickly but not played much, busy with FreeBSD. I am now in the process of cutting over my personal webserver to FreeBSD from centos. It is an old p3 I leave on used for wiki, svn etc. FreeBSD will be easier to upgrade and recover from hardware failure.

    Comment by Daren (visitor) on Mon, Mar 7, 2011 @ 17:20 IST #
  12. Thanks for sharing your experiences, Daren. Right now I am on Ubuntu and I feel reasonably satisfied with Linux. If and when I decide to go to BSD again, I will definitely take your advice regarding the testing and installation of ports in jails as it is safer to test first. It looks like a tedious process to me from what you describe.

    The biggest drawback in my mind still remains hardware support for many of the components of my laptop. e.g. wireless, bluetooth etc.

    Comment by Hari (blog owner) on Tue, Mar 8, 2011 @ 10:45 IST #

Comments closed

The blog owner has closed further commenting on this entry.