只需简单的点两下,就可以安装 Common Lisp 的开发环境了。这个就是 Portacle。如果安装了 portacle,就可以直接跳过下面的安装步骤。
安装解释器(implementation)
包管理工具安装
Ubuntu/Debian
sudo apt-get install -y sbcl
Mac OS
brew install sbcl
CentOS/Fedora
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 镜像加速):
docker pull daewok/lisp-devel
docker run --rm -it daewok/lisp-devel:latest sbcl
下面的命令是将之前本地资源放到 Docker 镜像(大概400MB)中,然后启动 SBCL REPL:
docker run --rm -it -v /path/to/local/code:/usr/local/share/common-lisp/source daewok/lisp-devel:base sbcl
如果需要使用 SLIME 的话,详见 slime-docker。
安装 quicklisp
获取
curl -O https://beta.quicklisp.org/quicklisp.lisp
加载
sbcl --load quicklisp.lisp
安装
(quicklisp-quickstart:install :path "~/.quicklisp")
其中 :path
后面的路径可自定义,默认 ~/quicklisp
配置
在执行完 install
后,运行
(ql:add-to-init-file)
程序将会自动创建 ~/.sbclrc
并将一下内容写入文件中:
#-quicklisp
(let ((quicklisp-init (merge-pathnames "quicklisp/setup.lisp"
(user-homedir-pathname))))
(when (probe-file quicklisp-init)
(load quicklisp-init)))
其中 merge-pathnames
后面接的是 quicklisp
安装路径加 setup.lisp
。
如果不想默认加载 quicklisp
的话,可以不设置,使用 quicklisp
时需手动加载 setup.lisp
。
quicklisp 用法:
加载库
(ql:quickload "package-name")
卸载库
(ql:uninstall "package-name")
查询库
(ql:system-apropos "package-name")
更新
(ql:update-dist "quicklisp")
查看依赖关系
(ql:who-depends-on "package-name")
默认项目目录(本地的项目库目录)
~/common-lisp/
~/.local/share/common-lisp/source
~/quicklisp/local-projects
查看默认的目录
(asdf/source-registry:default-user-source-registry)
asdf:*central-registry*
添加项目目录
(push #p"/path/to/my-project/" asdf:*central-registry*)
(ql:quickload "my-project")
Common Lisp 项目
使用 cl-project
包快速创建
(ql:quickload "cl-project")
(cl-project:make-project #P"/path-to-project/project-name")
执行后,会在相对应的目录下生成以下项目文件
|-- my-project.asd
|-- my-project-test.asd
|-- README.markdown
|-- README.org
|-- src
| `-- my-project.lisp
`-- tests
`-- my-project.lisp
导入项目
将项目放入到 quicklisp 默认项目目录中,或是将项目路径添加到 asdf:*central-registry*
变量中。