Unix Squeak - Downloading
[ home | download/install | problems/bugs | developers | archives | goodies | resources | site stats | more stats ]

1   Downloading
    1.1   What you need to fetch

2   Installing Squeak
    2.1   Automatic Installation
    2.2   Manual Installation

3   Some known "gotcha"s
    3.1   Clipboard problems
    3.2   Linux Sound
    3.3   Solaris and libffi

4   Reporting Bugs

 1. Downloading

If you are downloading Squeak for the first time, please read the license.

To download a file using Netscape, click the right mouse button over the link and choose ``Save link as...'' (or just click ``shift-left-mouse-button'' over the link). It is a Very Bad Idea to change the name of a file when downloading it.

All of the files have been compressed using GNU gzip. It runs on virtually every Unix-like platform known to modern science. You must run ``gunzip'' on all files having a ``.gz'' extension before using them. If you don't already have a copy of this program then you can get the sources and/or precompiled executables from ftp://ftp.netscape.com/pub/unsupported/gnu/.

1.1. What you need to fetch

Squeak requires at least four files to operate correctly:

  1. a system sources file containing the source code for all of the system classes (it has the extension ``.sources'');
  2. an image file containing the saved state of a Squeak session (with the extension ``.image'');
  3. a changes file containing the source code for all the modifications relative to the system sources (extension ``.changes''); and
  4. an executable virtual machine for your plaftorm (called simply ``squeak'').
(Current stable versions of all these files can be downloaded from squeak.org.)

The sources file is common to all releases with the same major version number.


The image and changes files are platform-independent, and can be moved freely between different platforms. No matter how many different platforms you use to run Squeak, you need only download a given version of these files once.

Important! An image file must always be used in conjunction with the corresponding changes file, otherwise you will see gibberish instead of the correct source code for many of the system classes (and you risk losing the source for any modifications or additions that you made to the image). Do not rename these files manually! Instead, start up the image file using a virtual machine that has the same version number and then use the ``save as...'' option in the system (background) menu to save the image with a different name. Note that both the image and changes files are saved using the new name: never separate one from the other!

The virtual machine is platform-dependent. You need to download a separate virtual machine for each combination of Squeak version and platform. You should always use the version of the virtual machine that matches the version of the image and changes files. There are several optional ``plugin'' modules available for use with the virtual machine, in the form of shared libraries with ``.so'' extensions. These contain primitives for things like 3D graphics. They are included along with the virtual machine. The current releases of the virtual machine are available from the main download page.


  1. To unpack a tar file, use the command: `gzip -dc fileName | tar xfBp -'.
  2. For GNU/Linux systems, the virtual machine requires glibc-2.2.
  3. Sound is available on platforms that support either OSS (the Open Sound System) or NAS (the Network Audio System). NAS is available on a wide variety of platforms, and is often supported by dedicated X terminals. Information, sources and downloads can be found on the NAS home page. (I have written patches to make the voxware backend work on bigendian systems, such as LinuxPPC. Send me email if you'd like a copy.) OSS support is built into the kernel by default on Linux, and is available on a few other platforms (e.g., Solaris) where drivers are available as kernel extensions/modules. If you want to check if your platform is supported, visit the OSS home page.

 2. Installing Squeak

The easiest way to do this is using the INSTALL script that comes with each of the above tar files.

2.1. Automatic Installation

Fetch the archive/s that you need and then unpack it/them in the same directory. This will create a subdirectories called Squeak-3 (for the .sources file) and Squeak-3.7-7 (for the VM and image/changes files) containing hierarchies that mirror the installed locations of the various files. The architecture-specific files are in a subdirectory named after your "cpu-vendor-os" string.

The file INSTALL is an executable script that will copy the files to the correct locations. Note that you must be ``root'' to run this script:

$ su root
# cd Squeak-X.Y-Z
# /bin/sh INSTALL
# exit
If the script complains that it cannot find the architecture-specific files for your machine, even though you have downloaded and unpacked the relevant archive, then there might simply be a difference in operating system versions. If you believe that the architecture-specific files in the directory "foo-bar-baz" will work for you, then you can specify that directory as an argument to INSTALL:
$ su root
# cd Squeak-X.Y-Z
# /bin/sh INSTALL foo-bar-baz
# exit
You are strongly encouraged not to move things around. If you do then you will totally invalidate your (already non-existent) warranty.

If you absolutely must install the libraries in cruel and unusual locations then you should read the squeak(1) manual page and set the SQUEAK_PLUGINS variable in your environment to tell the virtual machine where to look for the libraries.

Note that the image and changes files are installed compressed. This is to save space. The inisqueak(1) script will uncompress them for you while setting up your personal Squeak environment.

2.2. Manual Installation

You can move things around pretty much any way you like -- although life will become more complicated if you do.

After extracting the tar archive, all the important files are in:

Within that directory you should see the following:
squeak -- the VM itself
*.so -- all the plugins
The rules are simple: squeak must be in a directory listed in your PATH environment variable, and the variable SQUEAK_PLUGINS should contain the name of the directory containing the .so files.

Here's one possible way to arrange things (and the one I would suggest, since it makes upgrading to a newer VM as painless as possible).

If you don't already have them, create bin and lib directories under your HOME directory:

$ mkdir $HOME/bin
$ mkdir $HOME/lib
Make a squeak directory in your $HOME/lib:
$ mkdir $HOME/lib/squeak
Move the entire squeak3.7-7 directory into $HOME/lib:
$ mv platform-name/usr/local/lib/squeak/squeak3.7-7 $HOME/lib/squeak/.
Create a tiny shell script in HOME/bin called squeak, containing the following:
exec $SQUEAK_PLUGINS/squeak
Don't forget to make it executable, like this:
$ chmod +x $HOME/bin/squeak
Make sure $HOME/bin is in your PATH. Add something similar to the following to your .profile or .bashrc (or whatever) if necessary:
$ export PATH

You should now be able to run

$ squeak
which will probably complain that it can't find an image file. (That just indicates that your script is working. ;)

Next extract the sources archive. It should contain a directory called

with a file called SqueakV3.sources inside. Move this file into your HOME/lib/squeak directory:
$ mv usr/local/lib/squeak/SqueakV3.sources $HOME/lib/squeak/.

Now you need an image. Extract the image archive. It contains the .image and .changes files in a directory called usr/local/lib/squeak. Move them into the directory that you will use for Squeak development, for example: $HOME/squeak.

$ mkdir $HOME/squeak
$ mv usr/local/lib/squeak/squeak3.7-5989.image.gz $HOME/squeak/.
$ mv usr/local/lib/squeak/squeak3.7-5989.changes.gz $HOME/squeak/.
All that's left is to uncompress them and make a link to the .sources file:
$ cd $HOME/squeak
$ gunzip *.image.gz *.changes.gz
$ ln -s $HOME/lib/squeak/SqueakV3.sources .
$ squeak
again should bring up a working image.

To upgrade the VM after the above process, unpack the binary archive and move the new

directory into your HOME/lib. You then have just one line to modify in your HOME/bin/squeak script to begin using the new VM.

 3. Some known "gotcha"s

3.1. Clipboard problems

If you are having problems with copy/paste between Squeak and other applications in version 3.6 or later of the VM then please let me know. Otherwise, try the following remedies:

  1. If xterm is causing you grief, open your .Xresources in an editor and add (or extend the existing) entry for *VT100.translations as follows:
    *VT100.translations: #override\
          <Btn1Up> : select-end(PRIMARY, CUT_BUFFER0, CLIPBOARD)\n\
          <Btn2Up> : insert-selection(PRIMARY, CUT_BUFFER0, CLIPBOARD)\n\
          <Btn3Up> : select-end(PRIMARY, CUT_BUFFER0, CLIPBOARD)
  2. If Emacs is giving you a hard time, go to the "Customize Emacs" menu and select "Specific Option...". Type in "x-select-enable-clipboard" (without the quotes) and press Enter. If the setting is "off" toggle it to "on" and then save for the current session. If this cures the problem, go back and save it for future sessions too.
Note that the above "solutions" might break copy/paste between Emacs/xterm and other X applications. Use at your own risk!

3.2. Linux Sound

Ned Konz discovered that it's sometimes necessary to tell Linux (using ALSA and OSS compatibility modules) that Squeak wants to open the sound device in non-blocking mode. If sound output in Squeak seems to be playing things ``on top of themselves'' then you might want to try the following (or something similar) as root to see if it cures the problem:

# echo "squeak 0 0 block" > /proc/asound/card0/pcm0p/oss

3.3. Solaris and libffi

Building libffi on Solaris is no fun. If you'd like precompiled binaries, here are the ones I built for Solaris 2.8: libffi-solaris2.8.tar.gz

 4. Reporting Bugs

If you're having problems...

  1. If it's a general problem of installation or bizarre behaviour, ask for help on the Squeak VM mailing list. If you are not already subscribed, you can browse the list archives and/or subscribe online.
    It is a bad idea to send VM problem reports to the general-purpose 'squeak-dev' mailing list. There is no guarantee that anyone involved with VM development and maintenance will ever read your message.
  2. If it's a Unix-specific problem that you think might be a bug, please report it to the above mailing list and send me email. (The former ensures others know of your problem, and the latter ensures I will address your problem promptly.) If you have a fix to submit, please send me complete modified files (not 'diffs').
  3. Suggestions for improvements to this page or to the way Unix Squeak is distributed are also welcome. Send email to me at the above address.
If you find bugs in this web site (broken links or bad formatting in a particular browser) then please tell me about it. Thanks!
[ home | download/install | problems/bugs | developers | archives | goodies | resources | site stats | more stats ]