只需简单的点两下,就可以安装 Common Lisp 的开发环境了。这个就是 Portacle。如果安装了 portacle,就可以直接跳过下面的安装步骤。

安装解释器(implementation)

包管理工具安装

Ubuntu/Debian

  1. sudo apt-get install -y sbcl

Mac OS

  1. brew install sbcl

CentOS/Fedora

  1. sudo yum install -y sbcl

其他各版本的解释器,请参考:Wikipedia’s list of implementations

Roswell 安装

Roswell 有以下几个特点:

  • 管理安装解释器:ros install ecl 安装 ecl 解释器,ros install sbcl/1.2.0 安装特定版本的解释器,ros use ecl 切换默认解释器;
  • 脚本环境:可以直接在 Shell 中运行 Lisp;
  • 脚本安装器;
  • 测试环境:可以运行测试的代码;
  • 打包功能: 将代码打包成镜像或是二进制文件

具体的安装方法见其 wiki 页面。

Docker 安装

熟悉 Docker 的话,可以用 docker 来安装 Common Lisp 的开发环境,其 docker 镜像地址为:daewok/lisp-devel 或者通过 Dockerfile 自动构建,Github 地址为:daewok/lisp-devel-docker。该镜像中包含了 SBCL、CCL、ECL、ABCL 以及默认在 /home/lisp 目录下安装了 Quicklisp,dockerhub 上镜像大概 2.14 GB,基于国内的情况,最好使用阿里云 docker 镜像加速(登录阿里云,转到控制台,搜索 docker 镜像加速):

  1. docker pull daewok/lisp-devel
  2. docker run --rm -it daewok/lisp-devel:latest sbcl

下面的命令是将之前本地资源放到 Docker 镜像(大概400MB)中,然后启动 SBCL REPL:

  1. docker run --rm -it -v /path/to/local/code:/usr/local/share/common-lisp/source daewok/lisp-devel:base sbcl

如果需要使用 SLIME 的话,详见 slime-docker

安装 quicklisp

获取

  1. curl -O https://beta.quicklisp.org/quicklisp.lisp

加载

  1. sbcl --load quicklisp.lisp

安装

  1. (quicklisp-quickstart:install :path "~/.quicklisp")

其中 :path 后面的路径可自定义,默认 ~/quicklisp

配置

在执行完 install 后,运行

  1. (ql:add-to-init-file)

程序将会自动创建 ~/.sbclrc 并将一下内容写入文件中:

  1. #-quicklisp
  2. (let ((quicklisp-init (merge-pathnames "quicklisp/setup.lisp"
  3. (user-homedir-pathname))))
  4. (when (probe-file quicklisp-init)
  5. (load quicklisp-init)))

其中 merge-pathnames 后面接的是 quicklisp 安装路径加 setup.lisp
如果不想默认加载 quicklisp 的话,可以不设置,使用 quicklisp 时需手动加载 setup.lisp

quicklisp 用法:

加载库

  1. (ql:quickload "package-name")

卸载库

  1. (ql:uninstall "package-name")

查询库

  1. (ql:system-apropos "package-name")

更新

  1. (ql:update-dist "quicklisp")

查看依赖关系

  1. (ql:who-depends-on "package-name")

默认项目目录(本地的项目库目录)

  1. ~/common-lisp/
  2. ~/.local/share/common-lisp/source
  3. ~/quicklisp/local-projects

查看默认的目录

  1. (asdf/source-registry:default-user-source-registry)
  1. asdf:*central-registry*

添加项目目录

  1. (push #p"/path/to/my-project/" asdf:*central-registry*)
  2. (ql:quickload "my-project")

Common Lisp 项目

使用 cl-project 包快速创建

  1. (ql:quickload "cl-project")
  2. (cl-project:make-project #P"/path-to-project/project-name")

执行后,会在相对应的目录下生成以下项目文件

  1. |-- my-project.asd
  2. |-- my-project-test.asd
  3. |-- README.markdown
  4. |-- README.org
  5. |-- src
  6. | `-- my-project.lisp
  7. `-- tests
  8. `-- my-project.lisp

导入项目

将项目放入到 quicklisp 默认项目目录中,或是将项目路径添加到 asdf:*central-registry* 变量中。