Wednesday, June 10, 2009

HOWTO Resolve 32-Bit Dependencies on 64-Bit Ubuntu with getlibs



This is taken from Slack-Tux, Lazy Penguin, and is a HOWTO  by Chris Olstrom, thanks Chris.



One of the more irritating aspects of running a 64-bit distribution is that there are still a large number of applications that are not compiled as native 64-bit binaries. This leads to dependence on 32-bit libraries, and managing these 32-bit dependencies can be a nightmare. There is no shortage of users who have introduced more problems than they have solved by forcing the installation of 32-bit libraries.

Cappy has released a handy script to detect and install libraries and other dependencies for 32-bit applications on 64-bit Ubuntu GNU/Linux. Handy things it can do include fetching missing libraries either by name, and figuring out which ones are needed when presented with a given binary.

Note: This script makes use of the Debian package management system, and is unlikely to function properly on distributions that are not Debian-based.

Installing getlibs

Installation couldn’t be simpler. Download getlibs, and double-click the .deb package. If you download getlibs via Firefox, you should get an ‘Open with gdebi’ option or something equivalent. To install via commandline, try:


$ wget http://www.boundlesssupremacy.com/Cappy/getlibs/getlibs-all.deb
$ sudo dpkg -i getlibs-all.deb


Installing Libraries with getlibs

Usage is pretty straightforward. If you know the name of the library you need, you can feed it to getlibs, and it should fetch it.

$ sudo getlibs -l libogg.so.0 libSDL-1.2.so.0
Matched library libogg.so.0 to libogg0
Matched library libSDL-1.2.so.0 to libsdl1.2debian-all
Reading package lists… Done
Building dependency tree
Reading state information… Done
libogg0 is already the newest version.
The following NEW packages will be installed:
libsdl1.2debian-all
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 213kB of archives.
After unpacking 20.5kB of additional disk space will be used.
Do you want to continue [Y/n]?


Alternatively, provide getlibs with the location of a given binary, and it should figure out what is missing (if anything) and install it. For example, say the binary for Second Life was located at /opt/32/secondlife/secondlife.bin:


$ sudo getlibs /opt/32/secondlife/secondlife.bin


At which point it should match any libraries that are not currently installed and fetch them, assuming they are available (see above for output example).

Sources

1 comment:

  1. Hi there.
    Thank you for a great post. It was very helpfull.
    Anyone reading this post should bookmark this guys contents.

    I have a new PC and needed some installation help so i went over to http://www.InstallSoftware.com but they did not provide me with the in depth
    info this guy did. he kicks all the bigger sites' butts.

    Thanks Again

    ReplyDelete