无法将 quicklisp 与 clozure-cl 一起使用
Fail to use quicklisp with clozure-cl
在正常使用 SBCL
时,我想尝试 CCL
进行一些测试,并通过 homebrew
在我的计算机上安装了它。效果很好,但我无法将 quicklisp
与 CCL
一起使用。如果我尝试加载 quicklisp 的 setup.lisp
,我会收到以下错误消息:
➜ ~ ccl64
Clozure Common Lisp Version 1.11.6 DarwinX8664
For more information about CCL, please see http://ccl.clozure.com.
CCL is free software. It is distributed under the terms of the Apache
Licence, Version 2.0.
? (require 'asdf)
ASDF
("uiop" "UIOP" "asdf" "ASDF")
? (load "~/quicklisp/setup.lisp")
> Error: There is no package named "ASDF/SYSTEM-REGISTRY" .
> While executing: CCL::%FASL-NVPACKAGE, in process listener(1).
> Type :GO to continue, :POP to abort, :R for a list of available restarts.
> If continued: Retry finding package with name "ASDF/SYSTEM-REGISTRY".
> Type :? for other options.
1 > :POP
我在网上搜索找不到简单的解决方案。 CCL
附带 ASDF
,因为 (require 'ASDF)
正在工作。在 quicklisp 的文档中,我找不到任何关于将它与两个 lisp 实现并行使用的额外努力。
如果我按照建议检查 ASDF 的版本 here 我得到 "3.1.5"
作为已安装的版本,应该是最新的。
有什么明显的我遗漏的吗?
我想我找到了:我的 ~/.cache
目录中有一些旧数据来自另一次安装 ccl
的尝试。删除后,我可以加载 quicklisp 的 setup.lisp
而不会出现任何错误。
如果我应该删除我的问题或将其留在此处以防止其他人重复我的错误,请提出建议。
请注意,各种 Lisp 都有一些启动文件。其中一些是默认的:
- SBCL: ~/.sbclrc
- 剪辑:~/.clisprc.lisp
- Clozure: ~/.ccl-init.lisp
来自 CCL 的 documentation:
By default, Clozure CL will look for a file named ccl-init.lisp in your home directory, and load it upon startup. On Unix systems, it will also look for .ccl-init.lisp.
CCL 使用一个名为 ccl-init.lisp 的普通 lisp 文件,在 unix 系统上通常将其放在您的主路径中。因此,您可以在该文件中添加以下行(在我的 Ubuntu 机器上,它的路径是 /home/me/.ccl-init.lisp),它指示 CCL 在启动时加载 quicklisp:
#-quicklisp
(let ((quicklisp-init (merge-pathnames "quicklisp/setup.lisp"
(user-homedir-pathname))))
(when (probe-file quicklisp-init)
(load quicklisp-init)))
这足以让您的 CCL 与 quicklisp 进行通信。
在正常使用 SBCL
时,我想尝试 CCL
进行一些测试,并通过 homebrew
在我的计算机上安装了它。效果很好,但我无法将 quicklisp
与 CCL
一起使用。如果我尝试加载 quicklisp 的 setup.lisp
,我会收到以下错误消息:
➜ ~ ccl64
Clozure Common Lisp Version 1.11.6 DarwinX8664
For more information about CCL, please see http://ccl.clozure.com.
CCL is free software. It is distributed under the terms of the Apache
Licence, Version 2.0.
? (require 'asdf)
ASDF
("uiop" "UIOP" "asdf" "ASDF")
? (load "~/quicklisp/setup.lisp")
> Error: There is no package named "ASDF/SYSTEM-REGISTRY" .
> While executing: CCL::%FASL-NVPACKAGE, in process listener(1).
> Type :GO to continue, :POP to abort, :R for a list of available restarts.
> If continued: Retry finding package with name "ASDF/SYSTEM-REGISTRY".
> Type :? for other options.
1 > :POP
我在网上搜索找不到简单的解决方案。 CCL
附带 ASDF
,因为 (require 'ASDF)
正在工作。在 quicklisp 的文档中,我找不到任何关于将它与两个 lisp 实现并行使用的额外努力。
如果我按照建议检查 ASDF 的版本 here 我得到 "3.1.5"
作为已安装的版本,应该是最新的。
有什么明显的我遗漏的吗?
我想我找到了:我的 ~/.cache
目录中有一些旧数据来自另一次安装 ccl
的尝试。删除后,我可以加载 quicklisp 的 setup.lisp
而不会出现任何错误。
如果我应该删除我的问题或将其留在此处以防止其他人重复我的错误,请提出建议。
请注意,各种 Lisp 都有一些启动文件。其中一些是默认的:
- SBCL: ~/.sbclrc
- 剪辑:~/.clisprc.lisp
- Clozure: ~/.ccl-init.lisp
来自 CCL 的 documentation:
By default, Clozure CL will look for a file named ccl-init.lisp in your home directory, and load it upon startup. On Unix systems, it will also look for .ccl-init.lisp.
CCL 使用一个名为 ccl-init.lisp 的普通 lisp 文件,在 unix 系统上通常将其放在您的主路径中。因此,您可以在该文件中添加以下行(在我的 Ubuntu 机器上,它的路径是 /home/me/.ccl-init.lisp),它指示 CCL 在启动时加载 quicklisp:
#-quicklisp
(let ((quicklisp-init (merge-pathnames "quicklisp/setup.lisp"
(user-homedir-pathname))))
(when (probe-file quicklisp-init)
(load quicklisp-init)))
这足以让您的 CCL 与 quicklisp 进行通信。