[techtalk] argh! (gnumeric troubles)

Rik Hemsley rik at kde.org
Thu Mar 30 20:56:32 EST 2000

#if Lighthouse Keeper in the Desert Sun
> > Search your system for old versions of the gtk library.
> > find /usr/lib /usr/local/lib -name 'libgtk*'
> [snipped a bit]
> /usr/lib/libgtk-1.2.so.0.1.0
> /usr/local/lib/libgtk-1.2.so.0.5.2

Looks like you have two versions.

> > Next, make sure the new version (that you just installed via rpm)
> > contains the symbol gtk_object_get
> > nm /path/to/libgtk-something.so.something | grep gtk_object_get
> 00096d94 t gtk_object_get_arg
> 00098304 T gtk_object_get_data
> 00098280 T gtk_object_get_data_by_id
> 00096914 T gtk_object_get_type
> 00098698 T gtk_object_get_user_data
> 000975b0 T gtk_object_getv

Whichever version that is, it's screwed.
Z ~ > nm /usr/lib/libgtk-1.2.so.0.5.1  | grep gtk_object_set
000a6e50 T gtk_object_set

I have it in mine.

So, you need to remove the version that doesn't contain that
symbol. Then run ldconfig.

> > Now remove any old versions of libgtk that you found.
> How do I tell which are the old versions?  and how do I figure out which
> one (/usr/lib or /usr/local/lib) redhat likes?  I *think* redhat wanted it
> to go in /usr/lib, because the default went into /usr/local.  I apologize
> if these are stupid questions, but I don't think anyone's ever explained
> this to me.

Ok, system builders usually install in /usr rather than /usr/local.
/usr/local is for stuff you add yourself.

RPM should have told you that you were going to overwrite the
old version and that you should use -U for upgrade.

Unfortunately, packagers often use different names for a package
and /or give it an incorrect install dir.

If the name was different (e.g. RH calls it 'libgtk' but your version
was called 'gtk') then that would have been OK because RPM would have
complained that you were going to overwrite the files from the
original, even though it didn't know what the new package actually was.

So because the packager who made the new version you have has chosen
/usr/local as the prefix, and I think they probably used a different
name too, RPM has no idea that the two packages are related and will
simply install the new one.

All you need to do is to remove the broken version (I would guess
it is the old one, in /usr/lib) and everything should be OK.

So I would do this:
Z ~ > rpm -qvf /usr/lib/libgtk.so

rpm -e gtkdev

That would sort it out for me if I had the same problem.



More information about the Techtalk mailing list