Many software products, especially the commercial ones, are distributed as 32-bit packages. This means that they won't be installed on your 64-bit system unless you clearly specify that you want to override the architecture dependency.
If you're using Ubuntu or any other Debian based distribution, this post will teach you how to install 32-bit deb packages on your 64-bit OS.
Is it possible to run 32-bit applications on 64-bit OS?
In Unix world, yes: it is quite possible to run 32-bit binaries on 64-bit OS. There should generally be no problem, but there are, as always, a few caveats:
- your 64-bit system may need some 32-bit libraries installed just to make some old 32-bit software work (use getlibs in Ubuntu)
- even if 32-bit application runs on your 64-bit system, it will still have the 32-bit limitations
- some (especially commercial) software has hard-coded architecture checks which will prevent them from working in 64-bit mode. Although it's a rather rare case, it still may happen and it probably means the developers had a really good reason for putting such limitations in
Why 32-bit packages don't install on 64-bit by default
One of the main reasons is that if a certain software is provided in 32-bit configuration, it's very likely to be available in 64-bit one as well. In Unix especially so, since a properly coded application can very easily be compiled for both architectures, especially if you have a 32-bit application and it's only a matter of recompiling it in 64-bit.
It's always best to have 64-bit version of the software, as it will run better and enjoy most optimal performance by running in the native mode and using 64-bit libraries of your OS.
The default behaviour is to let you know that you're trying to install an architecturally incompatible piece of software, which should motivate you to double-check the availability of a 64-bit version. For example, this is what I get when installing a Skype for Linux on my Ubuntu 7.10 64-bit desktop:
ubuntu# dpkg -i ./skype-debian_188.8.131.52-1_i386.deb dpkg: error processing ./skype-debian_184.108.40.206-1_i386.deb (--install): package architecture (i386) does not match system (amd64) Errors were encountered while processing: ./skype-debian_220.127.116.11-1_i386.deb
How To Install 32-bit Debian Packages on 64-bit System
Since I know there isn't a 64-bit distribution of Skype, I would still like to install the package as it should work just fine. And the way to do this is to specify a –force-architecture option in dpkg command line:
ubuntu# dpkg -i --force-architecture ./skype-debian_18.104.22.168-1_i386.deb dpkg - warning, overriding problem because --force enabled: package architecture (i386) does not match system (amd64) Selecting previously deselected package skype. (Reading database ... 124455 files and directories currently installed.) Unpacking skype (from .../skype-debian_22.214.171.124-1_i386.deb) ... Setting up skype (126.96.36.199-1) ...
As you can see, we're getting a warning, but the install went through just fine.
Warning: there's a few further steps to get Skype working in 64-bit Ubuntu, so don't take the above as a Skype how-to, these steps are out of the scope of this post though.