Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 19 Mar 2008 21:28:35 +0100 (CET)
From:      Oliver Fromme <olli@lurza.secnetix.de>
To:        freebsd-stable@FreeBSD.ORG, mlerota@iskon.hr
Subject:   Re: Upgrading to 7.0 - stupid requirements
Message-ID:  <200803192028.m2JKSZen098816@lurza.secnetix.de>
In-Reply-To: <868x0ezh9u.fsf@zid.claresco.hr>

next in thread | previous in thread | raw e-mail | index | archive | help
Marko Lerota wrote:
 > This thing should be solved. I liked the way that my OS have
 > independance from ports.

Well, they are not really completely independent.
The ports still use libraries from the base OS,
e.g. libc, threading libraries etc.  Please try
to understand the following simple example.

The problem is this:  Program A from ports links
against library B from ports.  Both programm A and
libray B als link against libc.so.6 from the base OS
(FreeBSD 6).

Now you update to FreeBSD 7, but you don't update
all the ports.  Everything still works (even though
FreeBSD has a new libc.so.7), because the old
software uses libc.so.6 from the compat6x port.

BUT ...  As soon as you have to update the old
library B because of a security problem or anything,
you will run into problems:  The new library B will
link against the new libc.so.7, but the old program
A (which uses library B) is still linked against the
libc.do.6 from compat6x.  So when you try to run
program A, it will try to load both libc.so.6 and
libc.so.7 (via library B), which will fail, because
a binary cannot use two different versions of the
same library at once.  So program A stops working.

Of course, rebuilding program A will solve the
problem, so it links to the new libc.so.7, too.
That's easy.  But in practice it is a lot more
complicated, because you have many ports with many
binaries and many libraries, with many dependencies
between them.

You could try to run "pkg_info -R" each time you
update something, so you can make sure to update
all ports dependent on the one you update.  If you
do this every time, everything will continue to
work, but it's tedious, and as soon as you forget
something, you will run into trouble.

Really, the easiest and most reliable way is to
rebuild all ports (or download compiled packages)
and be done with it.

 > So no metter what I do with ports, my OS and his apps will work.

They _will_ work.  The trouble only starts when you
update some of the ports on which other ports depend,
as explained above.

 > If this thing can be solved (I'm not programmer so I don't know) I can
 > donate some amount of $ for development. I think that this would make
 > lots of people happy.

I have to admit I see no way how the problem could
be solved in a different way, I'm afraid.

Best regards
   Oliver

-- 
Oliver Fromme, secnetix GmbH & Co. KG, Marktplatz 29, 85567 Grafing b. M.
Handelsregister: Registergericht Muenchen, HRA 74606,  Geschäftsfuehrung:
secnetix Verwaltungsgesellsch. mbH, Handelsregister: Registergericht Mün-
chen, HRB 125758,  Geschäftsführer: Maik Bachmann, Olaf Erb, Ralf Gebhart

FreeBSD-Dienstleistungen, -Produkte und mehr:  http://www.secnetix.de/bsd

"C++ is over-complicated nonsense. And Bjorn Shoestrap's book
a danger to public health. I tried reading it once, I was in
recovery for months."
        -- Cliff Sarginson



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200803192028.m2JKSZen098816>