When Linux keeps reporting that a binary doesn't exist, when it clearly does? That's annoying. One possible reason is below - this is the one that bit me a few days ago.
If you don't know what bits and bytes are, skip straight to the end...
32-bit vs 64-bit
For people who know a bit but not the history.
For a long time, all the mainstream computers used 32-bit CPUs. Then things shifted to 64-bit, though it took a while. There was a definite period where things might work or might explode in pieces - and that included the operating system.
In order to be able to sell these to the mass market (see Itanium for a counter example) these CPUs were also capable of running the older 32-bit instructions.
However - 64-bit binaries are not 32-bit binaries. So to be able to run the 32-bit binaries, any dependencies must also be available in 32-bit.
(This is why Windows has two lots of "Program Files", amongst other things.)
If the dependencies aren't there then it's handled in different ways by different systems.
Rather confusingly, if a dependency isn't there for a 32-bit Linux binary, then Linux will return "file not found".
On Debian/Ubuntu, the basic runtime library will probably help with fixing a lot of things. You can install that by installing the
libc6-i386 package - for example:
apt install libc6-i386
Hope that helps someone!