http://slashdot.org/comments.pl?sid=26516&cid=0&pid=0&startat=&threshold=1&mode=nested&commentsort=0&op=Change ===================== What exactly is the ports system? Anyone up for some extra karma? :) Ports is a collection of applications that can easily be compiled for your operating system. Basically for FreeBSD you have /usr/ports. That directory contains various subdirectories dividing applications into www (apache, mod_php4, etc), lang (ruby, etc), mail (mutt, exim, etc), and so forth. Each directory for a specific application contains a number of files. Some of these are patch files that are applied to the source code of the port. See the ports tree doesn't contain the actual code of the application - it only contains enough logic to get the regular .tar.gz release (usually from the developers home site) and the patches to build it properly (particular distribution preferences on file structure, libraries, etc). Every couple days I use cvsup to suck down the modifications to the ports tree to my FreeBSD box. Then I happen to use a relatively new tool not in the base system (portupgrade, written in ruby) to check if my currently installed packages are up to date. If they aren't, I can instruct portupgrade to upgrade them or go to each directory individually and do a "make install". Oh yeah, each directory has a Makefile :). It's sort of like why distribute the source code if it is just going to get out of date (plus you'll be getting the source for all kinds of crap you never end up using). Of course now each application must be compiled but if you don't want to do that you can use the packages (precompiled binaries that can be added with pkg_add, etc). Another benefit is ports can be on any version of the operating system because it is independent of the base system. Look at RedHat and you'll see compiled packages for RedHat 6.2, 7.2, etc (of course, before someone knee jerks a reply, RPMS are out there but I'm trying to make a point here). Ports avoids this. The price is compilation. A trade off. You make the call. Hope that helps. Here is the FreeBSD handbook section for ports: ports-using.html [freebsd.org] (it contains a better description of what files are in a ports directory). More like, what are rpm users missing out on? With rpm -i package.rpm the user may or may not be able to install the intended software. There could be real dependency problems, as in kde2 needs qt2. There could also be bogus dependency problems since you may have compiled qt2 from source but rpm wouldn't know about it. Enter FreeBSD and ports. A typical FreeBSD install creates a directory called /usr/ports which is a whole tree of makefiles. So to install something, you just cd /usr/ports/category/WhateverYouWantToInstall/ && make && make install. All dependencies are taken care of automagically. The makefiles in these directories are smart enough to download whatever you need and then compile the source on your machine. So installing a new package doesn't take several hours of trolling newsgroups and searching for rpms. But you don't have to take my word for it. Check this [freebsd.org] out. My experience is limited to Mandrake, Slackware, FreeBSD and OpenBSD. They each have their strengths and weaknesses, but when I need to get sh*t done, BSD, espescially FreeBSD is my first choice just because the ports tree contains nearly any software I'd want to run, eliminating the bottleneck that software installation sometimes turns into and letting me get to the task at hand. As an aside, it seems like everything that Mandrake tries to be to "joe sixpack" who is just getting into trying linux on the desktop, BSD is to the sysadmin or programmer who needs to get a *nix platform up and running for a certain task. Compiling a custom kernel, installing software, modifying the init process, etc are at least as easy for the sysadmin on BSD as adjusting the screen fonts and changing the wallpaper are for a newbie in Mandrake. ===================================== There could be real dependency problems Enter Debian and apt-get.A typical Debian install includes a program called apt-get that handles dependencies automatically. So to install something, you just apt-get install WhateverYouWantToInstall. All dependencies are taken care of automagically. The apt-get program is smart enough to download whatever you need and install it. To compile from source, use apt-get -b source WhateverYouWantToInstall. So installing a new package doesn't take several hours of trolling newsgroups and searching for rpm. ======================================= I tried gentoo, perhaps someday it will be in the same ballpark as FreeBSD (or even Net/Open), but not now. The install is less than perfect, the portage system currently has very little to choose from. Also, there is no BSD-style separation of base and packages. Its a good idea though, I also would love to see BSD-like distro based on a Linux kernel. ======================================= Slackware, the daddy of em all - still alive and kicking. Very BSDish install, similar package handling, BSD init. No ports system last I checked :( but a very friendly system otherwise for compiling from source. http://www.slackware.com Gentoo, a newcomer, to oversimplify a little the idea seems to be Slack+Ports. Haven't used it yet, heard some great things, sure looks promising. http://www.gentoo.org Also another similar project that was just recently reported here - sorcerer linux. Don't know enough about it to differentiate it from gentoo, the ideas seem very similar unless I'm missing something (quite possible, haven't had the time to try either.) http://sorcerer.wox.org/ ======================================== Funny but I've switched my desktop OS in slightly different order: RedHat -> Slackware -> FreeBSD -> Debian For desktop OS I find Debian Linux more convient than FreeBSD for two reasons: Linux have better support for multimedia devices than FreeBSD Debian have more prepackaged software than FreeBSD and in general quality of debian packages is better than FreeBSD ports thanks for Debian strict packaging policy.