Re: Help! New user having problems compiling GTK, complaining of old GLIB



On Mon, Jan 09, 2006 at 02:45:13AM -0500, resonant evil wrote:

<snip>
> I am truly a new user trying to learn the ropes, but I have no clue how to
> go about either A> Removing my old GLIB installation or B> Designating it to
> the right installation
> 
> I am not even sure which version is installed where :S
> 
> If I try and unmark the glib-dev-2.0 or glib-2.0 from synaptic, it's going
> to wipe out a whole ton of applications with it supposedly, so I decided
> against it
> 
> The INSTALL file in the GLIB package tells me to to a "rm -fr
> /install-prefix/include/glib.h and rm -fr
> /install-prefix/include/gmodule.h", and upon further searching, it would
> appear the 2 installations on my system are in /usr/include and
> /usr/local/include (well, I'm assuming at least because it found those files
> in both of those locations.)  I haven't a clue though which one contains my
> GLIB-2.8.5 instead of the old one that configure is complaining about.

This is not so much a problem about Gtk as it is about Linux itself, so
I'll wade in here.

What you need to know in order to understand the *nix OSes is this:
everything, and I mean everything, is a flat file of some sort.  Which
means that there are a few really important concerns that are relevant.
Probably the most important is file permissions, that tell who can do
what with a file, but that's not pertinent here.  The second most
important concern about files is where they live.

There is a standard file structure that the *nixen observe and is
roughly common to all of them.  So here goes a thumbnail sketch:

There are three tiers of file levels in general: 1) Root; 2) User; 2)
Local.  1), signified by '/' is the top level and it is canonically
limited to system files, files used by the operating system itself.  2),
signified by /usr, is the next tier down and duplicates the relevant
types of system files that also serve the applications that the
operating system enables.  3), signified by /usr/local, is reserved for
all software that is local to the machine in question.  For a standalone
or desktop machine, that means something different that it does for
those that are (local) nodes on a network.

How this works out is that root ('/') is usually fairly common to the
operating system in question, here, GNU/Linux.  User level ('/usr') is
the level that is populated with the files provided by the distribution
that's installed.  Local level ('/user/local') is populated at the
discretion of the owner of the machine, and that's where all the stuff
that the owner acquires and builds is, or should be, located.

The confusion begins when the applications/suites/etc are packaged in
different ways.  Distros package their stuff as binaries, providing
source code as required, because that's easiest to install.  The problem
is that folk from windows expect that is the only way that software is
available and so go looking for binary packages of non-distribution
stuff, which can very easily wind up duplicating (stomping over the top
of) that provided by the distribution.  Packaged binaries almost always
are installed at the /usr level, presenting themselves as legitimate
distro-certified software, but anyone can package a binary of anything,
using the same tools.  So what are you getting if it's not from the
distro?

Classically, stuff is compiled from source code using the provided
development software (compiler, automake, etc), and if it works okay,
can then be packaged for rpm, apget or whatever.  But if one is
compiling for oneself, why package it?  It should automatically go at
the /usr/local level where it does not conflict with what is at the tier
above.  There are any number of schemes available for keeping track of
what's on one's system at that level, and a package manager is not only
unnecessary but ultimately confusing.

If this makes sense, then what you need to know is that what is at the
/usr level is, or should be, part of the distro package.  Anything at
/usr/local is wholely the responsibility of the user/owner.

You may ask:  What's so important about keeping them separate?

The answer is that it's very much non-trivial to configure an entire
installed *nix system, and the people who produce the distributions have
their work cut out for them in the endeavor to put together an
installation package that is configured to be stable enought to use, yet
recent enough to be relevant.  The user, especially the newbie, puts
him/her system at peril when he/she starts tinkering around with that
distro level stuff.  Which is why upgrading is so much harder than
simply doing a fresh installation of a newer distro version.

I won't go into the details here, but suffice it to say that GNU/Linux
is undergoing, and will probably continue to undergo, a rapid and
extensive rate of development.  That means that new versions of
libraries are issued regularly, and backwards compatibility is not
always a top priority.  So constant change must be expected, and
accommodated.  To make this even worse, it's quite often possible to
have multiple versions of libraries living very happily side by side at
the /usr level, but not always.  So the possibility for screwing things
up is commensurate with the possibilities for creating a powerful and
widely applicable system.

Ergo:  change stuff at the root and /usr level by changing a distro
version.  Which means keeping /usr/local separate.  In fact, it's a very
good idea to keep /usr/local on a separate partition from the / install.

All that said, now look at your own system and see if you can pick out
what's going on by looking at what lives where.  That which lives at
/usr should be distro packages.  Put anything else at /usr/local.
 
> I would appreciate any help or steps towards fixing this problem very much,
> and I look forward to some help hopefully :(  Things like this make Linux
> very discouraging for the new user :(

What's really discouraging is when there is a single remediation for all
problems:  Reinstall your operating system!  Sound familiar?

Here, there is help almost everywhere you look, if you are appreciative
and receptive.  Very different world.  But, GNU/Linux is not
Applianceware, and does not function all automagically, which means it
will inevitably become frustrating at times.  Think you'll find it's
worth it though.

Good luck,

Bill Tallman




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]