0

In short: how do I get Squeak 5 to run on x64 Linux? I dont care whether the executable is 32 or 64 bit as long as it runs and opens the Squeak 5 image.


Here is what I tried:

When I try to run the executables from the Squeak 5 package i get: Running 32-bit Squeak on a 64-bit System. install-libs32 may install them - tried that. Wasn't found.

Then I went looking for a 64 bit executable. There are some from Squeak 4 but they can't open Squeak 5 images.

Looking through the Squeak 5 package:

The shell scripts squeak.sh in both these directories:

  • Squeak-5.0-All-in-One/
  • Squeak-5.0-All-in-One/Squeak-5.0-All-in-One.app/Contents/LinuxAndWindows/

Both return this error:

/usr/bin/ldd didn't produce any output and the system is 64 bit. You may need to (re)install the 32-bit libraries.

There are also misleading files named squeak (no .sh) in these directories:

  • Squeak-5.0-All-in-One/Squeak-5.0-All-in-One.app/Contents/LinuxAndWindows/Linux-i686
  • Squeak-5.0-All-in-One/Squeak-5.0-All-in-One.app/Contents/LinuxAndWindows/Linux-i686/bin

They are not the executable, just more shell scripts.

There is another squeak file in:

  • Squeak-5.0-All-in-One/Squeak-5.0-All-in-One.app/Contents/LinuxAndWindows/Linux-i686/lib/squeak/5.0-3397

Running ./squeak misleadingly says No such file or directory. It is misleading because the file does exist, it is just a 32-bit exe.

file squeak tells me: ELF 32-bit LSB executable, Intel 80386.


So how do I get it to run on 64-bit Linux? I could compile it myself but haven't tried assuming there are a lot of dependencies. Or has anyone tried it?

Bernd Elkemann
  • 23,242
  • 4
  • 37
  • 66

2 Answers2

2

You already got all information you need:

You may need to (re)install the 32-bit libraries.

Squeak 5 is currently 32bit only. Hence, you need 32bit libraries. It cannot use your 64bit libraries.

You may need thes:e packages (I use Debian/Ubuntu names, CentOS/RH/SuSE should be similar):

  • libc6:i386
  • libuuid1:i386
  • libkrb5-3:i386
  • libk5crypto3:i386
  • zlib1g:i386
  • libcomerr2:i386
  • libkrb5support0:i386
  • libkeyutils1:i386
  • libx11-6:i386
  • libgl1-mesa-glx:i386
  • libsm6:i386
  • libssl1.0.0:i386

(note the :i386 in the names)

Tobias
  • 3,026
  • 20
  • 34
  • Thanks for this. I installed them using apt, but I still get the error `Running 32-bit Squeak on a 64-bit System.` I then also ran `install-libs32` which installed a bunch more and made a reboot, still the same error. – Bernd Elkemann Jan 07 '16 at 21:32
  • can you run squeak.sh with `bash -x squeak.sh` and put the output on ? – Tobias Jan 07 '16 at 21:49
  • thank you for this. It showed me that the true error message was that it did not find a display. Then I tried to give it `-nodisplay -headless -nomixer`, but the .sh dont seem to forward it to the true executable (already complained about that in another question). I then called the exe directly, giving it those args and a squeak 5 image and it seems to work now, at least the programs are running. Cannot get a network connection to it yet but that might be a blocked port. Tomorrow I will upload an image that writes out a file so I can make sure it runs. Thanks for your help! – Bernd Elkemann Jan 07 '16 at 22:12
  • Welcome. Feel free to join squeak-dev at lists.squeakfoundation.org for more in-depth help and longer discussions – Tobias Jan 07 '16 at 23:32
  • @future-people: have confirmed that this works (dont skip the parts we wrote in these comments) – Bernd Elkemann Jan 08 '16 at 07:54
2

This works in 64 bit Ubuntu 16.04:

In the directory where you unzipped the Squeak-5.0-All-in-One.zip archive, and that contains the squeak.sh file, put the following into a file named libs32.sh :

#!/bin/bash
objdump -p ./Squeak-5.0-All-in-One.app/Contents/LinuxAndWindows/Linux-i686/lib/squeak/5.0-3397/*|
grep NEEDED|
awk '{print $2}'|
sort -u|
xargs dpkg -S|
awk '{print $1}'|
sort -u|
sed 's/:amd64:/:i386:/'|
sort -u|
sed 's/:$//'

Make that file executable:

chmod +x ./libs32.sh

Run it:

./libs32.sh

You will get a list of libraries that need to be installed.

Run

./lib32.sh | xargs sudo apt install

to see what would be installed.

Run

./lib32.sh | xargs sudo apt install -y

to install it.