wiki:InstallingCmucl
close Warning: Can't synchronize with repository "(default)" ("(default)" is not readable or not a Git repository.). Look in the Trac log for more information.

Installing CMUCL

This page explains how to install the release tarballs of CMUCL. If you're using an alternative distribution packaging, such as .deb archives, use whatever is appropriate there. We use the 19e release as an example, but the same idea can be used for any release tarball or snapshot for CMUCL.

For each supported platform there are two bzip2 tar archives, one containing the base system, and the other (with extra in the name) containing optional additional files supporting CLX, Hemlock, the Motif interface, and so on. Note also that there may also be Unicode and non-Unicode (8-bit characters) tarballs. The non-Unicode tarball has non-unicode in the file name. The same method can be used to install either of these.

Download the archives corresponding to your platform. Certain tarballs are PGP-signed by the packager and are accompanied by a file with an .asc extension; in this case you can check that they have not been modified by using GPG:

    wget http://common-lisp.net/project/cmucl/downloads/release/19e/cmucl-19e-x86-linux.tar.bz2
    wget http://common-lisp.net/project/cmucl/downloads/release/19e/cmucl-19e-x86-linux.tar.bz2.asc
    gpg --verify cmucl-19e-x86-linux.tar.bz2.asc

GPG should tell you that the file has a good signature from one of the CMUCL developers (you may need to fetch the developer's key with gpg --recv-key). Unless you have a web-of-trust relationship with that developer it will warn you that the key is not certified with a trusted signature.

Extract the tarballs

The release tarballs extract to the following directory structure:

     bin/lisp
     lib/cmucl/lib/lisp.core
     doc/cmucl/README (this file)
     man/man1/cmucl.1
     ...

This allows you to install CMUCL directly under /usr/local, for example using

     cd /usr/local
     tar xjf /path/to/cmucl-19e-<platform>.tar.bz2
     tar xjf /path/to/cmucl-19e-<platform>.extra.tar.bz2

If you do not have a version of tar that understand the j option, you need to replace the tar command above with

    bunzip2 < /path/to/cmucl-19e-<platform>.tar.bz2 | tar xf -

Alternatively, you may install under a directory in /opt (or any other directory where you have write privileges). For example

     mkdir /opt/cmucl-19e
     cd /opt/cmucl-19e
     tar xjf /path/to/cmucl-19e-<platform>.tar.bz2
     tar xjf /path/to/cmucl-19e-<platform>.extra.tar.bz2

The 19e distribution is relocateable: the lisp binary will search for the lisp.core file relative to its location. This means that it is sufficient to have /usr/local/bin (or /opt/cmucl-19e/bin) in your PATH to be able to invoke CMUCL from your shell.

You can now invoke CMUCL: this should display a banner then show a prompt (the default prompt is an asterisk).

      % lisp
      CMU Common Lisp 19e (19E), running on mansuetude
      With core: /opt/cmucl-19e/lib/cmucl/lib/lisp.core
      Dumped on: Thu, 2008-05-01 18:56:07+02:00 on usrtc3142
      See <http://www.cons.org/cmucl/> for support information.
      Loaded subsystems:
          Python 1.1, target Intel x86
          CLOS based on Gerd's PCL 2004/04/14 03:32:47
      * (format t "~&Hello, world!~%")
      Hello, world!
      NIL
      *

Loading subsystems

To load precompiled subsystems (assuming that you installed the -extra- tarball), just use REQUIRE:

     * (require :gray-streams)
     * (require :clx)
     * (require :clm)
     * (require :hemlock)

Starting with the 2010-06 snapshot, ASDF2 and MK-DEFSYSTEM are included with CMUCL. There you can load them using

     * (require :asdf)      ; Load asdf2
     * (require :defsystem) : Load mk-defsystem

Known Issues

Hemlock

Hemlock needs Courier fonts. If you get an error starting hemlock, make sure you have Courier fonts installed. You can check using

xlsfonts | grep 'adobe-courier'

CLM

CLM uses motifd. Currently, this is built as a 64-bit binary. This, of course, will not work if you are running on a 32-bit OS. In this case, you may want to replace your motifd with this 32-bit motifd.

Create a site-wide initialization file

CMUCL reads two initialization files: a per-user file named ~/.cmucl-init.lisp, and a site-wide file named $ROOT/lib/cmucl/lib/site-init.lisp (where $ROOT is the base directory in which you installed CMUCL, for example /usr/local/). It is customary to initialize the SHORT-SITE-NAME and LONG-SITE-NAME in the site-init file.

CMUCL is distributed with a file called $ROOT/lib/cmucl/lib/generic-site.lisp that you can use as a template for your site-init file:

   # cd $ROOT/lib/cmucl/lib
   # cp generic-site.lisp site-init.lisp
   # emacs site-init.lisp

If you have the CMUCL source code installed on your system, you can set the target: search-list to point to them, so that the debugger provides more information when a CMUCL function signals an error. See the commented-out line at the end of the generic-site file.

Interacting with CMUCL

The basic commandline interface offered by CMUCL is rather basic; it doesn't offer a history mechanism or commandline editing facilities. You may wish to investigate using a more powerful interface than the commandline, such as SLIME, or Climacs, or Hemlock, or (more basic) M-x run-lisp in Emacs.

Patching CMUCL

On occasion, patches for CMUCL releases are created for critical issues found after the release. These are normally fixed by the next snapshot, but in case it is not desirable to use the snapshot, patches are created. The patches are in the patches subdirectory of the release directory. These patches are tarballs containing an asd file and the necessary files to implement the patch. To apply a patch, you need to have asdf available. (Note that 20b now includes asdf2.) Untar the patch somewhere where asdf will be able to find it. Then simply use

(require :cmucl-xxx-patch-nnn)

where xx is the the release version of cmucl (such as 19a) and nnn is the patch number. This works if your version of asdf has the hooks needed for this. Otherwise, you can do

(load "patch-nnn.asd")
(asdf:oos 'asdf:load-op :cmucl-xx-patch-nnn)
Last modified 9 years ago Last modified on 10/12/14 16:27:56