Is it a crime to only want to update your Firefox under FreeBSD 6.2? As long as you don't want to perform a painful and risky switch from X.org 6.9 to X.org 7.2? It depends...
FreeBSD 6.2-RELEASE comes with Firefox 1.5.0.8 and Firefox-2.0.r2, which are not the current versions.
FreeBSD 6.2-CURRENT has however binary packages for Firefox 1.5.0.11 and Firefox 2.0.0.3, so I thought it should be easy-peasy to get the latest native Firefox for FreeBSD 6.2.
Nay, I have read too many happy-end stories. Anyway, let's start with the beginning.
Trying to pkg_add -r firefox complains about Firefox being already installed. Sure thing, I have to remove it first.
Take one:
$ pkg_delete firefox
pkg_delete: no such package 'firefox' installed
Yeah, sure.
Take two:
$ pkg_delete firefox-1.5.0.8,1
pkg_delete: package 'firefox-1.5.0.8,1' is required by these other packages
and may not be deinstalled:
epiphany-2.16.1_1
gnome-applets-2.16.1_1
gnome2-2.16.1_2
mplayerplug-in-3.31_1
py24-gnome-extras-2.14.2
yelp-2.16.1_1
No kidding?! Is this Mandriva, to have queer reverse dependencies, or I am dreaming?!
Take three:
$ pkg_deinstall firefox
Stale dependency: firefox-1.5.0.8,1 --> xf86dgaproto-2.0.2
-- manually run 'pkgdb -F' to fix, or specify -O to force.
Oh, let's just try to build it from ports then, while I will take my time to ponder on the issue. What could possibly happen?
Take four:
$ cd /usr/ports/www/firefox
$ make install clean
...
===> firefox-2.0.0.3_1,1 depends on file: /usr/local/libdata/xorg/libraries
- not found
===> Verifying install for /usr/local/libdata/xorg/libraries
in /usr/ports/x11/xorg-libraries
Read /usr/ports/UPDATING for the procedure to upgrade or install xorg 7.2.
*** Error code 1
Stop in /usr/ports/x11/xorg-libraries.
*** Error code 1
Stop in /usr/ports/www/firefox.
*** Error code 1
...
20070519:
AFFECTS: users of x11/xorg
AUTHOR: kris@FreeBSD.org
Welcome, fearless user! You are about to embark upon a mystical
journey to the world of xorg 7.2.
The instructions on how to upgrade from X.org 6.9 to X.org 7.2 are here.
Pour le nom de Dieu, performing a MAJOR X.org upgrade with a so-called STABLE operating system point release is the last thing I want to do! How could they ever think of pushing such an important and risky upgrade in a so-called STABLE branch?!? What is the 7-CURRENT development branch for?!
Instead of adopting a responsible approach, the FreeBSD guys are proud of it: «19 May: Thanks to the hard work of Florent Thoumie (and others), the FreeBSD ports collection now uses the modular Xorg 7.2 as its default X server. i386 and AMD64 6.2-STABLE packages are available and other architectures/releases will be available later, or you can compile it from source.»
Gee.
Let's try our portupgrade friend, maybe it'll be of some help. Upgrading X would be too painful.
Take five:
$ portupgrade -PO firefox
--> Checking for the latest package of 'www/firefox'
** No such file or directory - /usr/ports/packages/All
--> Fetching the package(s) for 'firefox-2.0.0.3_1,1' (www/firefox)
--> Fetching firefox-2.0.0.3_1,1
/var/tmp/portupgrade3o57s6Io/firefox-2.0.0.3_1100% of 12 MB 104 kBps 00m00s
--> Downloaded as firefox-2.0.0.3_1,1.tbz
--> Identifying the package /var/tmp/portupgrade3o57s6Io/firefox-2.0.0.3_1,1.tbz
--> Saved as /usr/ports/packages/All/firefox-2.0.0.3_1,1.tbz
--> Found a package of 'www/firefox': /usr/ports/packages/All/firefox-2.0.0.3_1,1.tbz (firefox-2.0.0.3_1,1)
--> Located a package version 2.0.0.3_1,1 (/usr/ports/packages/All/firefox-2.0.0.3_1,1.tbz)
--> Upgrading 'firefox-1.5.0.8,1' to 'firefox-2.0.0.3_1,1' (www/firefox) using a package
--> Backing up the old version
--> Uninstalling the old version
--> Deinstalling 'firefox-1.5.0.8,1'
pkg_delete: package 'firefox-1.5.0.8,1' is required by these other packages
and may not be deinstalled (but I'll delete it anyway):
epiphany-2.16.1_1
gnome-applets-2.16.1_1
gnome2-2.16.1_2
mplayerplug-in-3.31_1
py24-gnome-extras-2.14.2
yelp-2.16.1_1
...
The full output is here.
Now guess what? Firefox 2.0.0.3 works! But... given the fact that I forced it with the -O flag, how much of my system is actually broken? (I don't know.)
The native Firefox is good because... it's native, and because it is better integrated with the system. The Linux build has fewer printing capabilities under FreeBSD... but it can use the Adobe Flash plugin! Oops, let's try the Linux build of Firefox, maybe it won't depend on a newer X.org anyway!
Take six:
$ pkg_add -r linux-firefox
It complains about hicolor-icon-theme-0.10_2 being installed instead of hicolor-icon-theme-0.9_2. It's harmless (these were only warnings), but is it stubborn, or is it not? (Here's the full output.)
Take seven — maybe "the brave way" will fix the small discrepancies, what the heck. Let's get the appropriate versions even for unimportant stuff like hicolor-icon-theme!
$ portupgrade -RP linux-firefox
You... don't... want... to see... how much was to be done! At some point, it had to retrieve the sources for fontconfig-2.2.3-13 from mirrors.kernel.org/fedora/core/4! Even worse, it took rpm-3.0.6 from a Polish mirror of ftp.rpm.org, then automake was downloaded from ftp.gnu.org, then it started to build things.
The full output is here.
It succeeded, actually, and linux-firefox is running smoothly, but isn't the fuss a little too big?!
After these adventures and the havoc of not being able to install py24-qt4, and facing a mandatory upgrade from X.org 6.9 to X.org 7.2, I can only summarize it this way:
The FreeBSD project is showing one more time how irresponsible they are. I am not saying that the X.org upgrade will break things like the FreeBSD 5 kernel did, but this is not the kind of changes that should be allowed in a STABLE branch! A new X.org simply breaks the ports, so you are simply forced to upgrade!
Given the major issues with upgrading certain packages from RELEASE to STABLE, this is hardly a usable OS, unless you want to stick with frozen packages. Wen confronted with a RPM hell or a DEB hell, my heart will be lighter, now that I know how can life be under FreeBSD 6.2!
UPDATE: Address any possible comments to the latest post, which explains a few things: Taking a very long, huge break...
First of all, ports are NOT branched. CURRENT/STABLE/RELEASE refers to the operating system, not packages/ports.
Statements such as "X.org 7.2 never went into 7-CURRENT" makes absolutely no sense at all.
Second, x.org 7.2 is not exactly unstable software and as a matter of fact, FreeBSD have been quite slow in adopting it.
It's also funny how you copied things from UPDATING, but it appears that you didn't even read it. It contains step-by-step instructions on how to upgrade your system.
If you really, really, really want to live in a pre-xorg7.2 world you can do so by setting the date= tag in your ports-sup file to a date before the xorg commit was made, and your ports would be frozen to that date.
Ports usually build just fine across all supported FreeBSD-versions, most still even compile fine on branches such as 4.x which have passed their End Of Life.
But sometimes, there are big things that break stuff, such as this. The reason is quite simple, xorg 7.x was a MAJOR overhaul of the 6.x code base when they split the monolithic build system into a modular build system.
A numerous of people have put a lot of time testing and porting xorg 7.2 to FreeBSD and making sure that it both compiles and works as it should.
It's not some "over night" commit as this blog makes it sound, the work has taken almost a year to complete.
So, if you're going to complain, please get your facts straight first instead of just randomly bashing people.
Myself, I'm just another FreeBSD user, happily running xorg 7.2.
Oh my god, I haven't read such bullshit a long ago. Why don't you learn to use the FreeBSD Ports Collection well, before writing a criticising blog post in such a manner? And don't forget to read Florent's answer here:
http://blog.xbsd.org/2007/05/27/not-everybody-will-be-happy-with-the-xorg-upgrade/
I know that ports are not branched, and this is the main IDIOCY! If a package has unmet dependencies, how to fulfill them if not from ports?! WHERE ELSE FROM? From God's mercy?
But the quoted statements makes sense, you randomguy!
-- There are no X.org 7.2 binary PACKAGES in 7-CURRENT. Period.
-- But the PACKAGES in 6.2-STABLE are dependent on X.org 7.2, because STABLE has X.org 7.2 as package! Full stop.
You, FreeBSD folks, you simply don't understand how to manage a project with regards to stability. You're ruining the reputation of FreeBSD.
I don't care that X.org 7.2 is a good release. It's simply CRETINOID to ask the user who installed 6.2-RELEASE (X.org 6.9) to upgrade to X.org 7.2 just because he wants to get a package from 6.2-STABLE!
According to all the rules of the common sense, there is no other reasonable way to get a MORE RECENT, SECURITY-PATCHED FreeBSD version of Firefox than:
(1) From 6.2-STABLE packages, which FORCES an upgrade to X.org 7.2;
(2) From ports, which FORCES an upgrade to X.org 7.2 too.
With such a project management, it's not a wonder that the share market of FreeBSD is at this low rate.
Gabor,
I already kner that the FreeBSD guys are aggressive, so I have to reply that bullshit is in your head, and in the head of Florent Thoumie.
It's not that "not everybody will be happy with the upgrade", it's that it's only IDIOT to have STABLE *packages* forced to 7.2!
Definitely, STABLE is by no means stable in BSD. I would rather use Debian than FreeBSD.
Beranger:
a) The fact that you use FreeBSD makes you a part of that low market-share.
b) less /usr/ports/UPDATING
I just followed the instructions. Everything worked <b>JUST FINE</b>. (except for a minor problem when Xorg tried to make install itself, but it is trivial)
c) It's not nice to attack on people who devote their time to improve YOUR system. If you had a strong preference on whether the Xorg upgrade is compulsory or not, you should have subscribed to the relevant lists on freebsd.org and discuss this with other people. After all, it's an open and public process. Everyone is contributing his small bit over and there.
d) Finally, why did you cvsup your ports tree? If you really wanted a stable system, you should stick with the ports tree that ships with FreeBSD 6.2. The fact that you cvsup'ed the tree is the result of you wanting the latest updated software. Well.... Florent and the other FreeBSD guys delivered Xorg 7.2, which is probably (if not the most) a VERY important part of every workstation. So, you want to use bleeding edge/latest software and you accuse the people who deliver it of project mismanagement. I think your words just contrast your actions.
e) You accuse the FreeBSD guys of project mismanagement just because they imported Xorg 7.2 . If I'm not mistaken, Xorg7.2, Xgl, beryl etc etc are some of the hottest pieces of code out there. By including them in the ports tree, you just have a chance of improving that market share you were talking about! So what did they exactly do wrong?
To Florent:
Just keep up the good work and thank you VERY VERY MUCH for letting us have Xorg 7.2!
A happy and carefree FreeBSD 6.2 user.
b) less /usr/ports/UPDATING
I - DO - NOT - WANT - TO - UPGRADE - X.ORG - DURING - THE - SAME -POINT RELEASE - OF - AN OS!
I updated the ports because, for instance, I needed py24-qt4, which was *not* available in the packages or -RELEASE.
py24-qt4 is available in -STABLE, but... it had broken dependencies!!!
So I had to try to fix it.
Say, how comes I couldn't install py24-qt4 on a freshly installed 6.2-RELEASE system? THIS NEVER HAPPENS WITH (SAY) DEBIAN STABLE!
>> "So what did they exactly do wrong?"
Even if I know who am I talking about, let me teach you a lesson from the Linux land: Red Hat Enterprise Linux and Debian stable (take a breath): during the lifetime of a point release (say, RHEL 4 or 5, Debian 3.1 or 4.0), the version of the important components of the system NEVER CHANGES!
Some rare exceptions have been made (very rarely) with packages like Firefox, Thunderbird, and very recently OpenOffice (2.x entered in RHEL4). Otherwise, the kernel is only patched, the X.org is only patched, the libc version does not change, etc.
For a newer X.org than the one you installed, in a version-based (not rolling-release) system, you should wait for the next point release, --or-- you can switch to "testing" or "unstable" (sort of -CURRENT).
If -STABLE in FreeBSD doesn't mean the same, then you are disconnected from the rest of the world.
End of lecture. Thank you.
Where should I start, there are so many things to say...
You seem to be, if not competent, at least knowledgeable in Linux. My first advice to you would be to stick with what you know and avoid posting things about BSD. Trust me, this is for you own good. However if you were to continue your endeavour of writing uninformed posts on FreeBSD (or any OS in the BSD family for that matter) I would strongly recommend you to read at least the FreeBSD Handbook as a starting point for documentation.
First things first, you and your reader might find some interesting bits on this page : http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/current-stable.html
To make a long story short, both the STABLE and CURRENT branches are development versions of FreeBSD the main difference between the two is that in STABLE an extra effort is made to keep API and ABI compatibility. This ensures that some software written for say the FreeBSD 6.1 base system should work equally fine on any release in the 6.x branch. This is what STABLE means, "no unexpected changes within the branch". The earthshaking changes happen in the CURRENT development branch which at some point gets frozen to become a STABLE and then a new CURRENT is started. At some point a STABLE branch will also be frozen and extra focus will be made to fix the small annoyances/bugs introduced by the latest changes. When this is done, a new RELEASE version is issued. So a RELEASE is nothing more than a (theoretically) bug-free snapshot of a STABLE branch.
Note that this tagging scheme only applies to the source tree of FreeBSD. The ports tree doesn't follow this procedure. In fact there is no tagging (well almost, but those are exceptions) for the ports which in essence means that anything that goes into the ports directly applies to any supported version of FreeBSD (the latest 5.x and 6.x RELEASEs, the 5- and 6-STABLE and the 7-CURRENT branches at the time of writing). One could argue about this way of doing things, my short answer would be that having one ports tree for each supported version of FreeBSD would introduce unnecessary complexity compared to having one common tree for several versions of the OS. Feel free to ask the ports mailing list if you would like to have an "official" statement on this topic.
Now, let's take your firefox upgrade rant.
Step 1: given that 'firefox' is not a package name, no wonder. Which one did you mean? the 1.5? the 2.0? or maybe the 3.0?
Step 2: Holy cow! epiphany, the gnome gecko-based browser, does require firefox? How can that be? And gnome2, the meta-port to easily install the everything-gnome packages dares to appear in the list of the dependencies of the of something related to a gnome web broser? Oh the nerve of these gnome developers! You're right, it should be easier to just remove ports you don't need and leave the dangling dependencies... I don't need no freaking dependencies! Oh wait...
Step 3: You're looking for ports-mgmt/pkg_remove here.
Step 4: So you want to install firefox (which now depends on the new Xorg) over your old Xorg install and the ports system informs you about that. I call that convenient. Regarding your remark on CURRENT and STABLE, read my little explanation above.
Step 5: Now you install firefox the hard way willingly bypassing the sanity checks with dependencies and then you assume that your system will be fucked up? See, how easy FreeBSD is? You're becoming an experienced FreeBSD user, let me just tell you that your assumption here is most certainly correct.
Step 6: Hum, so the *linux*-firefox port "is better integrated with the system", on *FreeBSD* that is? I wonder how you came to that conclusion. I must have missed something.
I think we need to make a little educational digression here. For several years now, FreeBSD has been shipping with a linux ABI compatibility layer (affectionately called the linuxulator, see linux(4)). The purpose of this layer is to allow some linux-specific applications to run on FreeBSD (say matlab, maple, oracle, Acrobat Reader, Macromedia/Adobe Flash plugin, etc.) by providing an implementation of some Linux specific system calls within FreeBSD. You may find some historic pieces of advocacy stating that some Linux apps run better under the linuxulator than on Linux itself, but I'm afraid these are now irrelevant. Anyway, the linuxulator shows its age. In the 5.x and 6.x branches it can only mimic the behavior of a 2.4.2 kernel (which admittedly very few distros ship with these days, but Fedora Core 4 seems to do the trick even if it shipped with 2.6.11, go figure). Fortunately work is done to update it to match a more recent 2.6.16 kernel and it will ship with FreeBSD 7.0.
Now let's go back to the linux-firefox port. Reading the associated 'pkg-descr' file it says : "This is a pre-compiled Linux/i386 version, able to run plugins from that platform". The key word is 'pre-compiled', the side effect is that it will require other 'pre-compiled' libraries, which in turn require... you get the point. In the end you will get an almost fully fledged GNU/Linux system within your FreeBSD one, all of it staying on the top of a limited compatibility layer. I would hardly call that "better integrated". Oh, and for your information, you just succesfully installed a 'pre-compiled' Linux version of the X.org 6.8 libraries. Sure that is better than going through the X.org 7.2 way.
Step 7: well, I think I summarized this already.
Which leads us to your conclusion. All I could say is "You keep using that word. I do not think it means what you think it means". RELEASE, STABLE and CURRENT have a very specific meaning, and this is hardly related to the ports.
I will not comment on your so called irresponsibility of the FreeBSD project, suffice to say that the moment you start writing something about BSD, you should not consider the projects as "yet another GNU/Linux distro". They have their own way to deal with the base system and the third-party applications that are very different to what, say Debian, Ubuntu and others do with their packages.
Oh, and please, if you would like to keep some credibility, do not issue such strongly hostile statements, they make you look like a clueless idiot more than an open source savvy blogger, but I think that des@ already told you so in his own true inimitable style, didn't he? Unless you understand the BSD-way of doing things, such posts like the one above will be considered at best as a laughable uninformed rant and at worst as stupid attempt to troll.
Regards,
A Happy xorg 7.2 user on FreeBSD.
PS: This post is provided by a FreeBSD user. There may be inaccuracies that a FreeBSD member would correct, but all in all, I believe I'm not so far from being correct.
You should read the handbook. It is obvious that you misunderstand the meaning of -STABLE in the context of the FreeBSD project:
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/current-stable.html
If you don't like it, don't use it. You seem to hold RHEL and Debian in high regard; go clutter their userbase. The end.
Geraud and the other guy,
"Step 1:" -- Yes, firefox _is_ a package name, and I hardly refrain myself for not cursing you.
On FTP URLs that end with "Latest/", "firefox.tbz" (which is the 2.x branch) is currently a link to "../All/firefox-2.0.0.3_1,1.tbz".
As a port, "/usr/ports/www/firefox" is also "firefox-2.0.0.3_1,1", then there are "/usr/ports/www/firefox15", "/usr/ports/www/firefox-devel", "/usr/ports/www/linux-firefox", "/usr/ports/www/linux-firefox-devel".
So yes, "firefox" is Firefox 2. Period.
"Step 2:" Epiphany shouldn't need the whole Firefox, but only the Gecko engine. Mozilla Firefox is a different product than GNOME Epiphany, period.
"Step 6:" NO, I have not said that linux-firefox is better integrated with the system, it's actually the other way around: firefox is better integrated, but linux-firefox can benefit by the proprietary Flash plugin.
"Native" means "FreeBSD" under FreeBSD, what else?!
dear Beranger,
thnx for you valuable input, it has been noted. now please move forward.
roman
Any further comments, only allowed on http://beranger.org/index.php?page=bsd&2007/05/28/06/50/05 from now on.
Ha ha, you clearly don't understand anything about how the system works. Time was, when someone didn't understand something they would go away and learn about it so that they didn't look like an idiot in public (yes, you look like an idiot - that's not me being "aggressive", it's a statement of fact and you threw the first insult). Why it's now acceptable to throw your hands up and start screaming like a two year old who WANTS A PONY, A PONY, NOW, AARGGHHH! is beyond me.
-STABLE refers to the base system, not anything from ports. Since ports are not branched, of course you have to upgrade X to use the packages from 6.2-STABLE, because the ports tree currently includes Xorg 7.2. They're not packages from 6.2-STABLE, they're the most recent packages from the ports tree, compiled for 6.2-STABLE, so they're Xorg 7.2.
You should complain at the GNOME project re: bloatiness of dependencies too; we'd all like them to quit that stupidity.
>> "They're not packages from 6.2-STABLE, they're the most recent packages from the ports tree, compiled for 6.2-STABLE"
Of course they're from the so-called ports. I have already stated that it's not about the base system, it's about stuff like Firefox!
But as long as the packages are compiled for 6.2-STABLE, they should be easily be usable instead of the packages compiled for 6.2-RELEASE, because those compiled for 6.2-RELEASE won't get updated anymore, so it's no use to look there for a newer package.
Oh, *THAT* newer? (i.e. compiled for Xorg 7.2) C'mon. Stick your pony in your ass.
Comments are closed, complaints to info@.


15 comments
Thanks for all this tips. They are very useful for anyone trying out FreeBSD.
I've fought with these same things several times because I believe FreeBSD is one of the 3 or 4 maintainable systems out there, and that's very important for me. However, I always gave up because of:
- Very poor I/O in my hardware
- No DRI (not too important for me, but still...)
- No clear advantage over Linux, and having to use Linux emulation for some things.
- Inability to understand its package management
Now with portupgrade it seems things are easier regarding package management (if you stick to one version).
Regarding versions, I always thought that RELEASE was the "stable" branch, STABLE the "testing" one (yes, bad name chosen for it) and CURRENT the "unstable". But it seems I'm wrong:
In Debian things go to unstable first, and when they're found out to be stable (same or less bugs than the version in testing) they move to testing. Now in FreeBSD I didn't see Xorg 7.2 going into CURRENT first and staying there for, say, 1 month before moving it to STABLE (or did I just miss it?).
Now it seems to me that STABLE is the equal of Debian's unstable, and CURRENT... I don't know. And for "testing" they just have betas and RC's before the official RELEASE.
Difficult to understand.