PDA

View Full Version : [SOLVED] Install 32-bit application on 64-bit Fedora


tron_thomas
19th February 2011, 05:42 AM
I am running the 64-bit version of Fedora 12 on an Intel system. I want to run a particular application that is only available in 32-bit.

How can I get the needed system libraries installed so I can run the application?

forkbomb
19th February 2011, 06:06 AM
Depends on what app you're trying to run in the first place. The generic idea goes something like this, though:
yum install foo.i686

tron_thomas
19th February 2011, 05:12 PM

I tried using yum install foo.i686, and it results in output like No package foo.i686 available.
I know the package should be available because I have another system running the 32-bit version of Fedora 12, and it has that software installed on it.

I'm wondering if changes to my yum repository are necessary for my system to be aware of 32-bit versions of available software packages.

What can be done that can help to install the desired software?

marko
19th February 2011, 06:26 PM
He didn't literally mean "foo.i686'

"foo" is programmer lingo for "this is example code because "foo" is never a real thing or variable name in a real program"

In C++ "foo" and "bar" are typical fake example variables, in the Python language 'spam' is used a lot (it's Monty Python joke)

He means insert your actual library name you need where he had 'foo'.i686

When you try to run the program does it say anything like it can't run because required library is missing?
If so you can run

yum search librarynamehere

to find that library package name , then you'd use the yum install to install it but with the i686 selector mentioned before:

yum install librarypackagename.i686


or if it quotes you a particular filename for that library, then you can use:

yum provides \*/filename

The \*/ is an escape to prevent the path to the file from mattering

So generally, try installing your 32bit app, try to run it from the command line and most applications
will show a warning message to the terminal like " library XYZ was not found", then you can use that XYZ with
the search or provides I showed above to find the actual package. It might take a few iterations since
it might then get farther and find that more libs are missing.

smr54
19th February 2011, 06:41 PM
Maybe you should mention which application it is. If it's in the Fedora repos, and only available as 32 bit, that's what will be upgraded. If it's 3rd party, then I like to combine ldd with marko's suggestion.


ldd /usr/bin/whatever|grep found

You will then see on the screen a list of missing (if any) libraries. If you just get back to a command prompt, you will be able to run the program. If you get something like libfoo.so.2 not found, then you do yum provides */libfoo.so.2. It will often be a package with a -devel suffix. Then, you can do yum -y install thispackage-devel.i686.

tron_thomas
19th February 2011, 07:49 PM
I know that forkbomb didn't literally mean foo. If it really was foo, then I would not have been able to check that foo was actually installed on my 32-bit version of Fedora.

The application is CMake.

I have the 64-bit version installed, and I want to replace it with the 32-bit version so I can upgrade to the very latest version from the CMake web site, which is not available for Fedora 12 through yum. I have this very latest version of CMake running on my 32-bit Fedora system, so I'm sure that once I get the right libraries installed, I can get the application to run my 64-bit Fedora as well.

marko
19th February 2011, 10:09 PM
I know that forkbomb didn't literally mean foo. If it really was foo, then I would not have been able to check that foo was actually installed on my 32-bit version of Fedora.


Errrr, ok, I'll just agree not to try to understand that....

You can run this to see what the dependencies are:

yum deplist cmake | grep dependency | sort | uniq


doing the sort and uniq to filter out some of the repetitive noise in there

then install the 686 version of cmake from the cmake website tarball and then yum install the 686 libraries pointed out by the deplist command. Although I used the x86_64 deplist I would think it's would be similar to the 32bit ones (I could not get yum deplist to find a 32bit cmake from my machine for some reason)

smr54
19th February 2011, 10:55 PM
Yes, I tried too, and the OP is right. It's only showing the x86_64 bit. You could probably find the 32 bit by searching the repos, but it will probably run into conflicts if you try to install the rpm, because the 64 bit is installed.

tron_thomas
19th February 2011, 10:57 PM
In my original reply to forkbomb I said:

I tried using yum install foo.i686, and it results in output like No package foo.i686 available.
I know the package should be available because I have another system running the 32-bit version of Fedora 12, and it has that software installed on it.

In that statement I referenced the package (in this case cmake) that I checked for existence on my 32-bit Fedora system. If I thought the I needed to check for foo rather than cmake as the package, my comment would not have made since, because the likelihood that I would have actually found a package named foo installed on my system would have been very unlikely.

I checked for dependencies of the cmake package on my 32-bit system using the suggested command and it produced:

dependency: config(cmake) = 2.6.4-4.fc12
dependency: config(cmake) = 2.6.4-5.fc12
dependency: libc.so.6
dependency: libc.so.6(GLIBC_2.0)
dependency: libc.so.6(GLIBC_2.1)
dependency: libc.so.6(GLIBC_2.1.1)
dependency: libc.so.6(GLIBC_2.1.3)
dependency: libc.so.6(GLIBC_2.2)
dependency: libc.so.6(GLIBC_2.2.3)
dependency: libc.so.6(GLIBC_2.3)
dependency: libc.so.6(GLIBC_2.3.4)
dependency: libc.so.6(GLIBC_2.4)
dependency: libc.so.6(GLIBC_2.7)
dependency: libcurl.so.4
dependency: libdl.so.2
dependency: libdl.so.2(GLIBC_2.0)
dependency: libdl.so.2(GLIBC_2.1)
dependency: libexpat.so.1
dependency: libgcc_s.so.1
dependency: libgcc_s.so.1(GCC_3.0)
dependency: libgcc_s.so.1(GLIBC_2.0)
dependency: libm.so.6
dependency: libncurses.so.5
dependency: libpthread.so.0
dependency: libpthread.so.0(GLIBC_2.0)
dependency: libstdc++.so.6
dependency: libstdc++.so.6(CXXABI_1.3)
dependency: libstdc++.so.6(GLIBCXX_3.4)
dependency: libstdc++.so.6(GLIBCXX_3.4.11)
dependency: libstdc++.so.6(GLIBCXX_3.4.9)
dependency: libtinfo.so.5
dependency: libxmlrpc_client.so.3
dependency: libxmlrpc.so.3
dependency: libxmlrpc_util.so.3
dependency: libz.so.1
dependency: rpm
dependency: rtld(GNU_HASH)


Just to test things out I tried:
sudo yum install libz.i686

on my 64-bit system; that produced:
No package libz.i686 available.

Because of this result, I do not have confidence that yum will find any of the dependencies needed for cmake, assuming I have done things correctly.
What more should I try that could allow me to get cmake setup on my system?

jpollard
20th February 2011, 12:49 AM
Wrong name.

zlib-1.2.3-23.fc12.i686

And you will need the i686 repositories enabled since you are on a 64 bit system, which will have only the 64 bit repositories enabled.

marko
20th February 2011, 01:06 AM
Yeah, it's not quite that easy, for each so file listed on the dep list from yum deplist, you'd likely have to run yum provides against it to find the actual package name it's inside:

libz.so.1 -->

yum provides \*/libz.so.1 -> shows it's in zlib.i686

tron_thomas
20th February 2011, 01:44 AM
I mentioned before that I thought I would need to modify my yum registry. Probably the whole reason I can't install the 32-bit version of cmake is because I don't have the i686 repositories enabled. If I could just enable that, I would think I could install cmake directly and not have to worry about tracking down any dependencies.

How do I enable the correct repositories so I can install 32-bit applications?

marko
20th February 2011, 02:42 AM
No, that's not necessary, for example take a look in the Packages folder for a typical x86_64 fedora repository:

http://chi-10g-1-mirror.fastsoft.net/pub/linux/fedora/linux/releases/14/Everything/x86_64/os/Packages/

You'll see i686 packages are mixed in with the 64bit ones. If you request a i686 package it actually comes out of the Everything/x86_64/os/Packages directory on the repository just like you'd get a 64bit package

cloneu2
20th February 2011, 01:05 PM
I run second life which is 32 bit on a 64 bit system.. using a 64 bit viewer will work but most of ones i want are only 32 bit.. Sooo to fix it all i installed all of the 32 bit libraries... you can use this and see if it fixes your problem'


Save it as “Fedora-ia32.txt”.


arts.i686
audiofile.i686
bzip2-libs.i686
cairo.i686
compat-expat1-1.95.8-4.i686
compat-libstdc++-33-3.2.3-63.i686
compiz.i686
cyrus-sasl-lib.i686
dbus-libs.i686
directfb.i686
esound-libs.i686
fltk.i686
freeglut.i686
gphoto2.i686
gtk2.i686
hal-libs.i686
imlib.i686
jack-audio-connection-kit.1.i686
java.i686
lcms-libs.i686
lesstif.i686
libacl.i686
libaio-0.3.106-4.2.i686
libao.i686
libattr.i686
libcap.i686
libdrm.i686
libexif.i686
libgcrypt-1.4.0-3.i686
libgnomecanvas.i686
libICE.i686
libieee1284.i686
libsigc++20.i686
libSM.i686
libtool-ltdl.i686
libusb.i686
libwmf.i686
libwmf-lite.i686
libX11.i686
libXau.i686
libXaw.i686
libXcomposite.i686
libXdamage.i686
libXdmcp.i686
libXext.i686
libXfixes.i686
libxkbfile.i686
libxml2.i686
libXmu.i686
libXp.i686
libXpm.i686
libXScrnSaver.i686
libxslt.i686
libXt.i686
libXTrap.i686
libXtst.i686
libXv.i686
libXxf86vm.i686
lzo.i686
mesa-libGL.i686
mesa-libGLU.i686
nas-libs.i686
nss_ldap.i686
opencdk.i686
openldap.i686
pam.i686
popt.i686
pulseaudio-libs.i686
sane-backends-libs-gphoto2.i686
sane-backends-libs.i686
SDL.i686
svgalib.i686
unixODBC.i686
zlib.i686


“su” to a root shell, and run the following command:

# for i in $(< Fedora-ia32.txt ); do yum -y install $i; done


works for me...

tron_thomas
20th February 2011, 09:47 PM
Okay working through the list of dependencies generated earlier, and using the yum provides command, I was able to track down and install most of what was needed.

The rest I got from running cmake-gui in the terminal and seeing what it complained about. Again using yum provides, I was able to track down the remaining packages to installed, and I finally got the application to run successfully.

Thanks everyone for your help.