portupgrade O(n^m)?

Csaba Molnar molnarcs at gmail.com
Thu Feb 15 20:35:17 UTC 2007

2007. February 15. 19.17 dátummal youshi10 at u.washington.edu ezt írta:

> >
> > Compare that to the situation for Debian apt-get. The names are
> > conserved. They have strict rules about package naming, they stick to
> > them and don't change them arbitrarily. All packages exist in compiled
> > form, you don't have to worry about prepackaged or "to be compiled, so
> > has 50% chance to break". You have only 2 states to consider instead of
> > 3: the state on the machine and the state on the repository. Things are
> > vastly simpler. No wonders that apt-get works and portupgrade doesn't.
> > This has nothing to do with the fact that apt-get is written in C++

Sorry to pipe in, I just want to give the perspective of an ordinary FreeBSD 
user (since 5.1) who used debian before (and ventured into gentoo-land for a 
month or so just to run back screaming to freebsd). 

First of all I don't understand why you exaggerate - implying that you have to 
woryy because "prepackaged or "to be compiled, ... has 50% chance to break" 
is simply not true. I just rebuild all my installed packages (615 in total) - 
and there were only two that broke during compile.

Second, there is no "generic" binary builds that cater to all user's needs. So 
debian was forced to provide multiple packages for the same program (check 
out amarok debs or apache-mpm, apache-prefork, etc) built with different 
options that don't even conver all those options that ports provides me. If 
you wanted to have the same flexibility freebsd provides, you'll have to have 
even more duplicated versions of packages.

The "takes too much time" argument against compiling is becoming less and less 
relevant as hardware improves, but even on my dusty athlon-xp server, how 
much time do you think I spend compiling? I have apache22, mysql50, php + 
lots of extensions (plus supporting libs like gd, netbpm) installed, and 
keeping all these up to date takes less then hour each month!

There is not much difference when it comes to core capabilities of the OS 
between linux and freebsd - but the very reason I stay and will stay with 
freebsd in the forseeable future is because how ports/packages work. The only 
distribution that comes close to what I like about this binary system (I mean 
ports/packages) is arch linux, which is primarily package based but it has a 
build system similar to ports as well.

I know I'm not a large scale user, but freebsd's build system and automatic 
package creation (installing ports with portinstall -p) came in handy a few 
times. I think FreeBSD already has an excellent binary package management 
system. I maintain some really old computers in a lab at our university, some 
of which can't run windowsXP, but they are excellent internet "terminals" 
(opera + gaim + gftp on top of blackbox with a simplified menu). I wanted to 
sqeeze out every last bit of performance from these machines, so I built a 
set of packages on my own computer, and lo and behold: I had a repository of 
binaries optimized for these machines that resolved dependencies 
automatically just like in debian, without having to learn how to build 
packages. I could simply download these packages through the lan, and pkg_add 
* them on each machine (well, four of them), and in a few minutes I had them 
up and running using packages specifically built for the capabilities of the 
hardware as well as exactly those options that users will need. Debian in 
this respect is far less flexible. Yes, you have src debs, but it is far more 
complicated than just passing -p to portinstall/upgrade. None of the linux 
distributions I have tried gave me this kind of flexibility and power - and 
I'm just an ordinary user, with no programming experience whatsoever.

As to gentoo - I don't understand the technical issues. What I experienced, 
however, that gentoo simply relegates the brunt of the work of the port 
maintainers to the users, which results in far more breakage in everyday use 
than what I have experienced with FreeBSD. Took me days to configure the 
silly USE flags just to have sane defaults (I mean an emerge mc without it 
pulling entire xorg). I also had problems with removing components of 
packages that were installed via a metaport. During my time with gentoo 
(granted, it was two years ago) - I haven't seen anything that it can offer 
to me as a user over ports, but at least I have learnt to appreciate the 
tremendous work FreeBSD port maintainers put into port maintainance. Ports is 
simply far more user friendly than portage, with less breakage overall than I 
have experienced with portage. That's why I felt very unfair your 
exaggeration about ports breakage. 

Thats just my two cents, and I don't pretend to understand half of the issues 
raised in your post. I just know one thing: I twitch everytime I hear someone 
who wants ports to work more like portage (please please DON'T go there!) or 
argues for a binary package management. FreeBSD has already a kickass binary 
package management system. In fact, I was always wondering why the user 
community didn't leverage its power - probably because its not a well known 
feature? But nothing prevents ordinary users to maintain custom package 
repositories if they want to. For instance, now that I have 600+ binary 
packages in my /usr/ports/packages/All I could easily upload it to an FTP, 
and say that anyone who wants a full blown KDE desktop with latest xorg and 
beryl in an hour, here you go, pkg_add * on a clean system, and have fun. In 
fact, this is an option that can be explored in the future as FreeBSD's 
userbase grows, but this is not something that I would expect from the 
developers. This capability of ports/packages is a hidden gem of FreeBSD, 
something that makes it superior to linux I believe. Witness the success of 
PC-BSD - the binary ports/packages system is what makes it possible. It is 
done by only a handful of people (only one guy working on it fulltime) - and 
yet, people are comparing it to Ubuntu. I believe that the ports system as it 
is now is an incredible asset: people without serious programming knowledge 
actually cold do a binary only desktop oriented freebsd distribution in a few 
days by building a set of carefully selected binary packages, checksum them, 
create a website, and distribute them from there, providing a miniinstall ISO 
that only installs a base system, then pulls those binaries from an ftp and 
pkg_adds them. I believe that the current system has some really 
nifty "community" capabilities that are not yet explored (because FreeBSD is 
not as known as linux) - but once more and more people realize just how 
powerful it is, I think it could become the important aspect of the OS 
through which it can differentiate itself from the competition. 

Sorry for the long rant, I can readily admit that there are technical issues 
that I don't or can't understand, but I felt that the power of ports/packages 
isn't really appreciated. I just don't understand the debian argument when 
anyone can take the ports, turn them into binaries, and have a system that 
does basically the same: installs binary packages with automatic dependency 

That's all - and thank you for all the work all of you put into creating this 
wonderful system. 


More information about the freebsd-ports mailing list