-->

Getting the new Squeak 5 to run on 64 bit Linux

2019-06-14 18:15发布

问题:

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?

回答1:

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)



回答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.