Már jó pár hónapja üzemel a kis rendszerem, ami ugye egy Ubuntu 6.10 Amd64. Ez idő alatt többnyire az apt alól is elérhető programokat tettem fel. Most azonban egy régebbi csak binárisban meglévő, 32-bites programot próbáltam rajta futtatni. Természetesen nem ment.
Cannot execute ucc-bin: No such file or directory
Tehát elkezdtem keresgélni, hogy is lehetne 64 bites rendszeren 32 bites binárist futtatni.
Persze ha forrásból meg lett volna, elég ha csak újrafordítanom. De nem… Itt nem volt rá lehetőségem. Nem akartam viszont elhinni, hogy nem lehet csak 64 bites alkalmazásokat futtatni. Többnyire minden normális rendszer lefele kompatibilis. Feltettem a kérdést a HUP fórumán is, ahol persze sok nagyon okos ember válaszolt, de egyik se tudta a kézenfekvő megoldást leírni.
Ajánlottak különböző jail, chroot, vmware dolgokat, de hát könyörgöm, én nem akarok még egy rendszert üzemeltetni, csak futtatni egy programot. Végül voltak segítőkészebb emberek is, akik azt ajánlották, hogy telepítsek valami (át)fordítót, amivel parancsszerűen tudom futtatni a binárist. Valahogy így: linux32 ucc-bin
Persze ez se volt jó, így magam kezdtem el kutatni, és meg is találtam a megoldást. A megoldás kézenfekvő. Simán csak fel kell tenni az alap amd64 libc6 csomagok mellé a külön i368-as megfelelőjüket is. Íme ez parancsban:
apt-get install libc6-i386 libc6-dev-i386
libc6-dev-i386 – GNU C Library: 32bit development libraries for AMD64
libc6-i386 – GNU C Library: 32bit shared libraries for AMD64
E két csomag telepítése után, egyből futott az alkalmazás gond nélkül.