x86_64 pixbuf hack for 32-bit/64-bit shared libraries

Phil Dybvig fedora at ducksoup.afree.net
Sat Jul 17 02:04:58 UTC 2004


Hi all!

  I gave a rant here earlier about the problems of parallel 32- and 64-bit  
shared libraries in x86_64.  Here is an ugly hack that seems to eliminate the  
libpixbuf errors (but no guarantees from me that it will not break your  
system!).  The problem is that gtk2-2.4.0-1.i386 and gtk2-2.4.0-1.x86_64 are not 
designed so they can both be installed at once.  We need the x86_64 version to 
run 64-bit programs (including a lot of our interface), and the 32-bit version 
to run 32-bit  programs.  For, example, the new realplayer 10 for linux at 
www.helix.org is  only available in a 32-bit version, and a 64-bit version will 
probably not be  available anytime soon because the proprietary codecs are 
32-bit binaries.  However, running realplayer gives error messages like:

  Failed to load pixbuf file:
    /home/dybvig/tmp/realplay10/share/realplay/icon.xpm:
  Unable to load image-loading module:
    /usr/lib64/gtk-2.0/2.4.0/loaders/libpixbufloader-xpm.so:
  /usr/lib64/gtk-2.0/2.4.0/loaders/libpixbufloader-xpm.so: cannot open
    shared object file: No such file or directory

because the program does not know how to find the 32-bit gtk2 shared libraries.

  Here is what I did.  (In case someone is here by accident, this is only for an 
 x86_64 install of FC2.  If you don't know what this means, stop here!)
  
1.  Get gtk2-2.4.0-1.i386.rpm and gtk2-2.4.0-1.x86_64.rpm from fedora.redhat.com 
 or better yet a mirror (http://fedora.redhat.com/download/mirrors.html).  The  
rpms will be in a directory .../fedora/linux/core/2/arch/os/Fedora/RPMS where  
arch is i386 or x86_64.

2.  Force install the two rpm's starting with the i386 rpm:

rpm -i --force gtk2-2.4.0-1.i386.rpm
rpm -i --force gtk2-2.4.0-1.x86_64.rpm

We need --force because the two packages share some files.  We install the  
x86_64 package second so that we at least have all the correct 64-bit files  
expected by our windowing system etc.

3.  Edit the files in /etc/gtk-2.0/ to include both 64-bit '/lib64' and 32-bit  
'/lib' versions.  Replace "Bluetooth" by "Raleigh" in gtkrc.  My patched files  
are in the directory URL http://yellow.brick.net/gtk and may work for you if our 
 installations are similar enough.

Try using realplay10 or whatever and it should work better.

  I am not proud of this fix (since I don't understand exactly what other  
problems there might be with remaining duplicated files) and I cannot really 
recommend it.   It does seem to work for me.  Hopefully, a better construction 
of the RPMs  (maybe a smarter version of the postinstall script Bryan O'Sullivan 
mentioned)  and/or a better structure for gtk files will make all of this 
unnecessary in the  future.
  
-- Phil





More information about the users mailing list